| ... | @@ -1,19 +1,23 @@ | ... | @@ -1,19 +1,23 @@ |
| 1 |  | 1 |  |
| 2 | | 2 | |
| 3 | A system programming language which prioritizes optimality, safety, and | 3 | A programming language which prioritizes optimality, robustness, and |
| 4 | readability. | 4 | clarity. |
| 5 | | | |
| 6 | Zig is a small, simple language, yet powerful. Zig fits into the same niche | | |
| 7 | as C, except does everything better. | | |
| 8 | | | |
| 9 | Zig ships with a build system that obviates the need for a configure script | | |
| 10 | or a makefile. In fact, existing C and C++ projects may choose to depend on | | |
| 11 | Zig instead of e.g. cmake. | | |
| 12 | | 5 | |
| 13 | [ziglang.org](http://ziglang.org) | 6 | [ziglang.org](http://ziglang.org) |
| 14 | | 7 | |
| 15 | ## Feature Highlights | 8 | ## Feature Highlights |
| 16 | | 9 | |
| | 10 | * Small, simple language. Focus on debugging your application rather than |
| | 11 | debugging your 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 | * Release mode produces heavily optimized code. What other projects call |
| | 20 | "Link Time Optimization" Zig does automatically. |
| 17 | * Compatible with C libraries with no wrapper necessary. Directly include | 21 | * Compatible with C libraries with no wrapper necessary. Directly include |
| 18 | C .h files and get access to the functions and symbols therein. | 22 | C .h files and get access to the functions and symbols therein. |
| 19 | * Provides standard library which competes with the C standard library and is | 23 | * Provides standard library which competes with the C standard library and is |
| ... | @@ -23,9 +27,6 @@ Zig instead of e.g. cmake. | ... | @@ -23,9 +27,6 @@ Zig instead of e.g. cmake. |
| 23 | * Tagged union type instead of raw unions. | 27 | * Tagged union type instead of raw unions. |
| 24 | * Generics so that one can write efficient data structures that work for any | 28 | * Generics so that one can write efficient data structures that work for any |
| 25 | data type. | 29 | data type. |
| 26 | * Provides an error type with several syntatic constructs which makes writing | | |
| 27 | robust code convenient and straightforward. Writing correct code is easier | | |
| 28 | than writing buggy code. | | |
| 29 | * No header files required. Top level declarations are entirely | 30 | * No header files required. Top level declarations are entirely |
| 30 | order-independent. | 31 | order-independent. |
| 31 | * Compile-time code execution. Compile-time reflection. | 32 | * Compile-time code execution. Compile-time reflection. |
| ... | @@ -33,16 +34,11 @@ Zig instead of e.g. cmake. | ... | @@ -33,16 +34,11 @@ Zig instead of e.g. cmake. |
| 33 | a preprocessor or macros. | 34 | a preprocessor or macros. |
| 34 | * The binaries produced by Zig have complete debugging information so you can, | 35 | * The binaries produced by Zig have complete debugging information so you can, |
| 35 | for example, use GDB to debug your software. | 36 | for example, use GDB to debug your software. |
| 36 | * Debug mode optimizes for fast compilation time and crashing with a stack trace | | |
| 37 | when undefined behavior *would* happen. | | |
| 38 | * Release mode produces heavily optimized code. What other projects call | | |
| 39 | "Link Time Optimization" Zig does automatically. | | |
| 40 | * Mark functions as tests and automatically run them with `zig test`. | 37 | * Mark functions as tests and automatically run them with `zig test`. |
| 41 | * Friendly toward package maintainers. Reproducible build, bootstrapping | 38 | * Friendly toward package maintainers. Reproducible build, bootstrapping |
| 42 | process carefully documented. Issues filed by package maintainers are | 39 | process carefully documented. Issues filed by package maintainers are |
| 43 | considered especially important. | 40 | considered especially important. |
| 44 | * Cross-compiling is a primary use case. | 41 | * Cross-compiling is a primary use case. |
| 45 | * Zig Build System competes with make, cmake, autotools, SCons, etc. | | |
| 46 | * In addition to creating executables, creating a C library is a primary use | 42 | * In addition to creating executables, creating a C library is a primary use |
| 47 | case. You can export an auto-generated .h file. | 43 | case. You can export an auto-generated .h file. |
| 48 | * Standard library supports Operating System abstractions for: | 44 | * Standard library supports Operating System abstractions for: |