Project goals

This page covers general project goals of Mach. Besides what you see on the homepage, we care about..

Zero-fuss installation

no more apt-get install

All too often we see people get a sudden burst of inspiration: "I'm going to finally start my game/app this weekend!" only to see them utlimately get bogged down by setting up their dev environment, ending their weekend with "well.. at least I got the hello world running" - there is no greater drain on human inspiration.

This is why Mach focuses so heavily on zero-fuss installation: you only need Zig to use Mach. Nothing else. No more `apt-get install` lists. No more cmake/ninja/dependency-hell.

Mach is able to achieve this through very careful curation of its dependencies, relying on C/C++ dependencies only when absolutely neccessary, and making sure we put in the effort to compile them for you using the Zig build system.

Seamless cross-compilation

At the flip of a switch it is possible to cross-compile to nearly any target:

$ zig build -Dtarget=x86_64-windows
$ zig build -Dtarget=x86_64-linux-gnu
$ zig build -Dtarget=x86_64-macos
$ zig build -Dtarget=aarch64-macos

First class Linux support

  • Easily cross-compile for Linux from any host OS (Zig ships out-of-the-box with support for targetting any version of glibc removing the need for “that outdated Debian box we must build on”)
  • Support both X11 and Wayland, in a single binary, chosen at runtime based on what the system has available / what the user wants.
  • Support both modern Vulkan, and OpenGL for less-powerful desktop Linux devices (think: Raspberry Pi) that do not support Vulkan easily yet.

See also our platform support in general.