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