| ... | @@ -3,137 +3,11 @@ | ... | @@ -3,137 +3,11 @@ |
| 3 | Zig is an open-source programming language designed for **robustness**, | 3 | Zig is an open-source programming language designed for **robustness**, |
| 4 | **optimality**, and **maintainability**. | 4 | **optimality**, and **maintainability**. |
| 5 | | 5 | |
| 6 | [Download & Documentation](https://ziglang.org/download/) | 6 | ## Resources |
| 7 | | 7 | |
| 8 | ## Feature Highlights | 8 | * [Introduction](https://ziglang.org/#Introduction) |
| 9 | | 9 | * [Download & Documentation](https://ziglang.org/download) |
| 10 | * Small, simple language. Focus on debugging your application rather than | 10 | * [Community](https://github.com/ziglang/zig/wiki/Community) |
| 11 | debugging knowledge of your programming language. | | |
| 12 | * Ships with a build system that obviates the need for a configure script | | |
| 13 | or a makefile. In fact, existing C and C++ projects may choose to depend on | | |
| 14 | Zig instead of e.g. cmake. | | |
| 15 | * A fresh take on error handling which makes writing correct code easier than | | |
| 16 | writing buggy code. | | |
| 17 | * Debug mode optimizes for fast compilation time and crashing with a stack trace | | |
| 18 | when undefined behavior *would* happen. | | |
| 19 | * ReleaseFast mode produces heavily optimized code. What other projects call | | |
| 20 | "Link Time Optimization" Zig does automatically. | | |
| 21 | * Compatible with C libraries with no wrapper necessary. Directly include | | |
| 22 | C .h files and get access to the functions and symbols therein. | | |
| 23 | * Provides standard library which competes with the C standard library and is | | |
| 24 | always compiled against statically in source form. Zig binaries do not | | |
| 25 | depend on libc unless explicitly linked. | | |
| 26 | * Optional type instead of null pointers. | | |
| 27 | * Safe unions, tagged unions, and C ABI compatible unions. | | |
| 28 | * Generics so that one can write efficient data structures that work for any | | |
| 29 | data type. | | |
| 30 | * No header files required. Top level declarations are entirely | | |
| 31 | order-independent. | | |
| 32 | * Compile-time code execution. Compile-time reflection. | | |
| 33 | * Partial compile-time function evaluation which eliminates the need for | | |
| 34 | a preprocessor or macros. | | |
| 35 | * The binaries produced by Zig have complete debugging information so you can, | | |
| 36 | for example, use GDB, MSVC, or LLDB to debug your software. | | |
| 37 | * Built-in unit tests with `zig test`. | | |
| 38 | * Friendly toward package maintainers. Reproducible build, bootstrapping | | |
| 39 | process carefully documented. Issues filed by package maintainers are | | |
| 40 | considered especially important. | | |
| 41 | * Cross-compiling is a primary use case. | | |
| 42 | * In addition to creating executables, creating a C library is a primary use | | |
| 43 | case. You can export an auto-generated .h file. | | |
| 44 | | | |
| 45 | ### Supported Targets | | |
| 46 | | | |
| 47 | #### Tier 1 Support | | |
| 48 | | | |
| 49 | * Not only can Zig generate machine code for these targets, but the standard | | |
| 50 | library cross-platform abstractions have implementations for these targets. | | |
| 51 | Thus it is practical to write a pure Zig application with no dependency on | | |
| 52 | libc. | | |
| 53 | * The CI server automatically tests these targets on every commit to master | | |
| 54 | branch, and updates ziglang.org/download with links to pre-built binaries. | | |
| 55 | * These targets have debug info capabilities and therefore produce stack | | |
| 56 | traces on failed assertions. | | |
| 57 | * ([coming soon](https://github.com/ziglang/zig/issues/514)) libc is available | | |
| 58 | for this target even when cross compiling. | | |
| 59 | | | |
| 60 | #### Tier 2 Support | | |
| 61 | | | |
| 62 | * There may be some standard library implementations, but many abstractions | | |
| 63 | will give an "Unsupported OS" compile error. One can link with libc or other | | |
| 64 | libraries to fill in the gaps in the standard library. | | |
| 65 | * These targets are known to work, but are not automatically tested, so there | | |
| 66 | are occasional regressions. | | |
| 67 | * Some tests may be disabled for these targets as we work toward Tier 1 | | |
| 68 | support. | | |
| 69 | | | |
| 70 | #### Tier 3 Support | | |
| 71 | | | |
| 72 | * The standard library has little to no knowledge of the existence of this | | |
| 73 | target. | | |
| 74 | * Because Zig is based on LLVM, it has the capability to build for these | | |
| 75 | targets, and LLVM has the target enabled by default. | | |
| 76 | * These targets are not frequently tested; one will likely need to contribute | | |
| 77 | to Zig in order to build for these targets. | | |
| 78 | * The Zig compiler might need to be updated with a few things such as | | |
| 79 | - what sizes are the C integer types | | |
| 80 | - C ABI calling convention for this target | | |
| 81 | - bootstrap code and default panic handler | | |
| 82 | * `zig targets` is guaranteed to include this target. | | |
| 83 | | | |
| 84 | #### Tier 4 Support | | |
| 85 | | | |
| 86 | * Support for these targets is entirely experimental. | | |
| 87 | * LLVM may have the target as an experimental target, which means that you | | |
| 88 | need to use Zig-provided binaries for the target to be available, or | | |
| 89 | build LLVM from source with special configure flags. `zig targets` will | | |
| 90 | display the target if it is available. | | |
| 91 | * This target may be considered deprecated by an official party, | | |
| 92 | [such as macosx/i386](https://support.apple.com/en-us/HT208436) in which | | |
| 93 | case this target will remain forever stuck in Tier 4. | | |
| 94 | * This target may only support `--emit asm` and cannot emit object files. | | |
| 95 | | | |
| 96 | #### Support Table | | |
| 97 | | | |
| 98 | | | freestanding | linux | macosx | windows | freebsd | netbsd | UEFI | other | | | |
| 99 | |-------------|--------------|--------|--------|---------|---------|------- | -------|--------| | | |
| 100 | |x86_64 | Tier 2 | Tier 1 | Tier 1 | Tier 1 | Tier 2 | Tier 2 | Tier 2 | Tier 3 | | | |
| 101 | |i386 | Tier 2 | Tier 2 | Tier 4 | Tier 2 | Tier 3 | Tier 3 | Tier 3 | Tier 3 | | | |
| 102 | |arm | Tier 2 | Tier 3 | Tier 3 | Tier 3 | Tier 3 | Tier 3 | Tier 3 | Tier 3 | | | |
| 103 | |arm64 | Tier 2 | Tier 2 | Tier 3 | Tier 3 | Tier 3 | Tier 3 | Tier 3 | Tier 3 | | | |
| 104 | |wasm32 | Tier 2 | N/A | N/A | N/A | N/A | N/A | N/A | Tier 2 | | | |
| 105 | |bpf | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 | N/A | Tier 3 | | | |
| 106 | |hexagon | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 | N/A | Tier 3 | | | |
| 107 | |mips | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 | N/A | Tier 3 | | | |
| 108 | |powerpc32 | Tier 3 | Tier 3 | Tier 4 | N/A | Tier 3 | Tier 3 | N/A | Tier 3 | | | |
| 109 | |powerpc64 | Tier 3 | Tier 3 | Tier 4 | N/A | Tier 3 | Tier 3 | N/A | Tier 3 | | | |
| 110 | |amdgcn | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 | N/A | Tier 3 | | | |
| 111 | |sparc | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 | N/A | Tier 3 | | | |
| 112 | |s390x | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 | N/A | Tier 3 | | | |
| 113 | |lanai | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 | N/A | Tier 3 | | | |
| 114 | |wasm64 | Tier 4 | N/A | N/A | N/A | N/A | N/A | N/A | N/A | | | |
| 115 | |avr | Tier 4 | Tier 4 | N/A | N/A | Tier 4 | Tier 4 | N/A | Tier 4 | | | |
| 116 | |riscv32 | Tier 4 | Tier 4 | N/A | N/A | Tier 4 | Tier 4 | Tier 4 | Tier 4 | | | |
| 117 | |riscv64 | Tier 4 | Tier 4 | N/A | N/A | Tier 4 | Tier 4 | Tier 4 | Tier 4 | | | |
| 118 | |xcore | Tier 4 | Tier 4 | N/A | N/A | Tier 4 | Tier 4 | N/A | Tier 4 | | | |
| 119 | |nvptx | Tier 4 | Tier 4 | N/A | N/A | Tier 4 | Tier 4 | N/A | Tier 4 | | | |
| 120 | |msp430 | Tier 4 | Tier 4 | N/A | N/A | Tier 4 | Tier 4 | N/A | Tier 4 | | | |
| 121 | |r600 | Tier 4 | Tier 4 | N/A | N/A | Tier 4 | Tier 4 | N/A | Tier 4 | | | |
| 122 | |arc | Tier 4 | Tier 4 | N/A | N/A | Tier 4 | Tier 4 | N/A | Tier 4 | | | |
| 123 | |tce | Tier 4 | Tier 4 | N/A | N/A | Tier 4 | Tier 4 | N/A | Tier 4 | | | |
| 124 | |le | Tier 4 | Tier 4 | N/A | N/A | Tier 4 | Tier 4 | N/A | Tier 4 | | | |
| 125 | |amdil | Tier 4 | Tier 4 | N/A | N/A | Tier 4 | Tier 4 | N/A | Tier 4 | | | |
| 126 | |hsail | Tier 4 | Tier 4 | N/A | N/A | Tier 4 | Tier 4 | N/A | Tier 4 | | | |
| 127 | |spir | Tier 4 | Tier 4 | N/A | N/A | Tier 4 | Tier 4 | N/A | Tier 4 | | | |
| 128 | |kalimba | Tier 4 | Tier 4 | N/A | N/A | Tier 4 | Tier 4 | N/A | Tier 4 | | | |
| 129 | |shave | Tier 4 | Tier 4 | N/A | N/A | Tier 4 | Tier 4 | N/A | Tier 4 | | | |
| 130 | |renderscript | Tier 4 | Tier 4 | N/A | N/A | Tier 4 | Tier 4 | N/A | Tier 4 | | | |
| 131 | | | |
| 132 | ## Community | | |
| 133 | | | |
| 134 | * IRC: `#zig` on Freenode ([Channel Logs](https://irclog.whitequark.org/zig/)). | | |
| 135 | * Reddit: [/r/zig](https://www.reddit.com/r/zig) | | |
| 136 | * Email list: [~andrewrk/ziglang@lists.sr.ht](https://lists.sr.ht/%7Eandrewrk/ziglang) | | |
| 137 | | 11 | |
| 138 | ## Building from Source | 12 | ## Building from Source |
| 139 | | 13 | |