Project goals
This page covers general project goals of Mach. Besides what you see on the homepage, we care about..
Zero-fuss installation
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.