mach

A systems programming language with no hidden behavior.

Statically typed. Explicitly designed. No magic.

Installs the latest release to ~/.local/bin.

On Linux:

curl -fsSL https://machlang.org/install.sh | sh

On Windows, run it in PowerShell:

irm https://machlang.org/install.ps1 | iex

Run it in PowerShell.

On macOS (Apple Silicon):

curl -fsSL https://machlang.org/install.sh | sh
main.mach

Why mach?

Small and explicit: what you read is what executes, and every cost is visible. One binary builds, links, tests, and cross-compiles; nothing hidden, nothing to wire up.

Write once, deploy everywhere.

One toolchain targets them all. The same single binary cross-compiles to every platform you declare. No cross-toolchains to install, no external linker; you just add another [target] to your manifest.

  • linuxx86_64 / linux / sysv64
  • windowsx86_64 / windows / win64
  • freestandingx86_64 / freestanding / sysv64
  • linux-arm64aarch64 / linux / aapcs64
  • macosaarch64 / darwin / aapcs64
  • wasmwasm32 / wasi / wasi
  • riscv64riscv64 / linux / lp64
mach.toml
$ mach build . --target linux
# linked -> out/linux/bin/app
[target.linux]
isa = "x86_64"
os  = "linux"
abi = "sysv64"

Get Started

From nothing to a running binary: one toolchain, no external linker, no build system to configure.

~
$ curl -fsSL https://machlang.org/install.sh | sh
# verifies the download, installs to ~/.local/bin
$ mach init my-app
$ cd my-app
$ mach dep pull
# vendors dependencies into dep/, pinned in mach.lock
$ mach build .
# one binary builds and links, with no external linker
$ mach run .
Hello, World!

Next: read the documentation (a pamphlet, not a bible), or start from mach-sieve (a standalone starting point).

Join the Discord