| ... | ... | @@ -1,13 +1,13 @@ |
| 1 | 1 | # zig lang |
| 2 | 2 | |
| 3 | | A system programming language intended to replace C. |
| 3 | A system programming language which prioritizes optimality, safety, and |
| 4 | readability. |
| 4 | 5 | |
| 5 | | Zig intends to remain a small language, yet powerful enough to write |
| 6 | | optimal, readable, safe, and concise code to solve any computing problem. |
| 6 | Zig is a small language, yet powerful enough to solve any computing problem. |
| 7 | 7 | |
| 8 | | Porting a C project to Zig should be a pleasant experience - every C feature |
| 9 | | needs a corresponding Zig feature which solves the problem equivalently or |
| 10 | | better. |
| 8 | Zig intends to replace C. Therefore, porting a C project to Zig should be a |
| 9 | pleasant experience. For every use case C can solve, the same use case must |
| 10 | be handled in Zig in an equally or more satisfying way. |
| 11 | 11 | |
| 12 | 12 | Zig is not afraid to roll the major version number of the language if it |
| 13 | 13 | improves simplicity, fixes poor design decisions, or adds a new feature which |
| ... | ... | @@ -30,8 +30,9 @@ compromises backward compatibility. |
| 30 | 30 | than writing buggy code. |
| 31 | 31 | * No header files required. Top level declarations are entirely |
| 32 | 32 | order-independent. |
| 33 | | * Powerful constant expression evaluator. Generally, anything that *can* be |
| 34 | | figured out at compile time *is* figured out at compile time. |
| 33 | * Compile-time code execution. Compile-time reflection. |
| 34 | * Partial compile-time function evaluation with eliminates the need for |
| 35 | a preprocessor or macros. |
| 35 | 36 | * Tagged union enum type. No more accidentally reading the wrong union field. |
| 36 | 37 | * Generics so that one can write efficient data structures that work for any |
| 37 | 38 | data type. |
| ... | ... | @@ -44,14 +45,12 @@ compromises backward compatibility. |
| 44 | 45 | * Release mode produces heavily optimized code. What other projects call |
| 45 | 46 | "Link Time Optimization" Zig does automatically. |
| 46 | 47 | * Mark functions as tests and automatically run them with `zig test`. |
| 47 | | * Supported architectures: `x86_64`, `i386` |
| 48 | | * Supported operating systems: linux |
| 48 | * Currently supported architectures: `x86_64`, `i386` |
| 49 | * Currently supported operating systems: linux, macosx |
| 49 | 50 | * Friendly toward package maintainers. Reproducible build, bootstrapping |
| 50 | 51 | process carefully documented. Issues filed by package maintainers are |
| 51 | 52 | considered especially important. |
| 52 | 53 | * Easy cross-compiling. |
| 53 | | * Eliminate the preprocessor, but (most) everything you can accomplish with |
| 54 | | the preprocessor, you can accomplish directly in the language. |
| 55 | 54 | |
| 56 | 55 | ## Planned Features |
| 57 | 56 | |