Zig is an open-source programming language designed for robustness,
optimality, and maintainability.
- Small, simple language. Focus on debugging your application rather than
debugging knowledge of your programming language.
- Ships with a build system that obviates the need for a configure script
or a makefile. In fact, existing C and C++ projects may choose to depend on
Zig instead of e.g. cmake.
- A fresh take on error handling which makes writing correct code easier than
writing buggy code.
- Debug mode optimizes for fast compilation time and crashing with a stack trace
when undefined behavior would happen.
- ReleaseFast mode produces heavily optimized code. What other projects call
"Link Time Optimization" Zig does automatically.
- Compatible with C libraries with no wrapper necessary. Directly include
C .h files and get access to the functions and symbols therein.
- Provides standard library which competes with the C standard library and is
always compiled against statically in source form. Zig binaries do not
depend on libc unless explicitly linked.
- Optional type instead of null pointers.
- Safe unions, tagged unions, and C ABI compatible unions.
- Generics so that one can write efficient data structures that work for any
- No header files required. Top level declarations are entirely
- Compile-time code execution. Compile-time reflection.
- Partial compile-time function evaluation which eliminates the need for
a preprocessor or macros.
- The binaries produced by Zig have complete debugging information so you can,
for example, use GDB, MSVC, or LLDB to debug your software.
- Built-in unit tests with
- Friendly toward package maintainers. Reproducible build, bootstrapping
process carefully documented. Issues filed by package maintainers are
considered especially important.
- Cross-compiling is a primary use case.
- In addition to creating executables, creating a C library is a primary use
case. You can export an auto-generated .h file.