adm programming language

GitHub

3 min read Original article ↗

The ADM bot

ADM

One language for apps, services and interfaces.
Statically typed, compiled to native binaries.

Website · Language · Standard library · Examples · Libraries · Download


ADM is a programming language where the things a program usually glues together are part of the language: contracts and transactions, services and their permissions, UI components, units of measure, GPU code, and calls into other language ecosystems.

application Hello {
	def greet(name string) !string {
		fail "nobody to greet" when name == ""
		return "hello, {name}"
	}

	def new(args string[]) int {
		let line = greet("world") onerror (err error) {
			println(err.message)
			return 1
		}
		println(line)
		return 0
	}
}

Install

curl -fsSL https://raw.githubusercontent.com/admlang/adm/main/install.sh | sh

It installs into ~/.adm for the current user, with the compiler, the standard library and a bundled C toolchain; adm update fetches new releases. Linux (amd64) is the platform released today; macOS and Windows packages are coming.

adm run            # build and run the application in this folder
adm test           # run its check suites
adm get admlang:adm.network.redis

What is here

Repository What it holds
adm The compiler, the standard library, the language specification, and the releases
registry The public index of ADM libraries that adm search and adm get read
database Official database libraries: PostgreSQL, MySQL, SQLite, MongoDB, Elasticsearch, an ORM, and an embedded store
network Official clients for infrastructure services: Redis, RabbitMQ (AMQP), Kafka, memcached, etcd, S3
cloud Official cloud provider libraries: AWS, Google Cloud, Azure, Cloudflare
ai Official clients for hosted model APIs: OpenAI and compatible servers, Anthropic, Gemini, Ollama
auth Official sign-in libraries: Google, GitHub, Microsoft, Apple
dev Official developer platform libraries: Git, Docker, Kubernetes, GitHub, GitLab
notify Official notification libraries: Slack, Discord, Telegram, Twilio, SendGrid, Postmark
payment Official payment libraries: Stripe, PayPal
telemetry Official telemetry exporters: Datadog, Sentry
interop Other languages inside an ADM program: JavaScript, Python, Lua, Java, .NET, WebAssembly
plugins Editor support: the IntelliJ and VS Code plugins
examples Programs to read and run
adm-lang.dev The sources of the website

Official libraries

adm search                                # everything in the registry
adm get admlang:adm.database.postgres     # add one to your project
Library For
adm.database.postgres, adm.database.mysql, adm.database.sqlite SQL databases through std.data.db
adm.database.store An embedded single-file database
adm.database.mongodb, adm.database.elasticsearch MongoDB; Elasticsearch and OpenSearch
adm.database.orm Typed repositories, queries and migrations over the SQL drivers
adm.network.redis Redis and Valkey
adm.network.amqp, adm.network.kafka RabbitMQ and AMQP 0-9-1 brokers; Kafka and compatible services
adm.network.memcached, adm.network.etcd memcached; etcd
adm.network.s3 Amazon S3 and compatible stores
adm.cloud.aws, adm.cloud.gcp, adm.cloud.azure, adm.cloud.cloudflare One library per cloud provider
adm.ai.openai, adm.ai.anthropic, adm.ai.gemini, adm.ai.ollama Hosted model APIs, behind std.ai.llm
adm.auth.google, adm.auth.github, adm.auth.microsoft, adm.auth.apple Signing users in with an identity provider
adm.dev.git, adm.dev.docker, adm.dev.kubernetes Git repositories, container engines, Kubernetes clusters
adm.dev.github, adm.dev.gitlab The GitHub and GitLab APIs and webhooks
adm.notify.slack, adm.notify.discord, adm.notify.telegram Chat platforms
adm.notify.twilio, adm.notify.sendgrid, adm.notify.postmark SMS, voice and transactional mail
adm.payment.stripe, adm.payment.paypal Payments, subscriptions and webhooks
adm.telemetry.datadog, adm.telemetry.sentry Exporters for the Telemetry service
adm.interop.js, adm.interop.python, adm.interop.lua Script engines compiled into your program
adm.interop.java, adm.interop.dotnet, adm.interop.wasm The Java VM, the .NET runtime, WebAssembly modules

Libraries are signed by their publisher. adm get verifies the signature and asks before it grants the permissions a library's code reaches; adm get --dry-run reports them and installs nothing.

Status

Bug reports and questions are welcome in the issues of the main repository.

Licensed under Apache 2.0.