| ... | @@ -22,35 +22,32 @@ compromises backward compatibility. | ... | @@ -22,35 +22,32 @@ compromises backward compatibility. |
| 22 | always compiled against statically in source form. | 22 | always compiled against statically in source form. |
| 23 | * Generics so that one can write efficient data structures that work for any | 23 | * Generics so that one can write efficient data structures that work for any |
| 24 | data type. | 24 | data type. |
| 25 | * Ability to run arbitrary code at compile time and generate code. | | |
| 26 | * No null pointer. Convenient syntax for dealing with a maybe type so that | 25 | * No null pointer. Convenient syntax for dealing with a maybe type so that |
| 27 | null pointer is not missed. | 26 | null pointer is not missed. |
| 28 | * A type which represents an error and has some convenience syntax with | 27 | * An error type, combined with some syntatical constructs which makes writing |
| 29 | regards to resources. | 28 | robust code convenient and straightforward. |
| 30 | * Defer statement. | | |
| 31 | * Eliminate the need for configure, make, cmake, etc. | 29 | * Eliminate the need for configure, make, cmake, etc. |
| 32 | * Eliminate the need for header files (when using zig internally). | 30 | * Eliminate the need for header files (when using zig internally). |
| 33 | * Tagged union enum type. | 31 | * Tagged union enum type. No more accidentally reading the wrong union field. |
| 34 | * Resilient to parsing errors to make IDE integration work well. | 32 | * Easy to parse language so that humans and machines have no trouble with the |
| 35 | * Eliminate the preprocessor, but have a plan for how to do things you would | 33 | syntax. |
| 36 | want to use the preprocessor for such as conditional compilation. | 34 | * Eliminate the preprocessor, but (most) everything you can accomplish with |
| | 35 | the preprocessor, you can accomplish directly in the language. |
| 37 | * Ability to mark functions as test and automatically run them in test mode. | 36 | * Ability to mark functions as test and automatically run them in test mode. |
| 38 | This mode should automatically provide test coverage. | 37 | Automatically provide test coverage. |
| 39 | * Friendly toward package maintainers. | 38 | * Friendly toward package maintainers. |
| 40 | * Ability to declare dependencies as Git URLS with commit locking (can | 39 | * Ability to declare dependencies as Git URLS with commit locking (can |
| 41 | provide a tag or sha1). | 40 | provide a tag or sha1). |
| 42 | * Include documentation generator. | 41 | * Include documentation generator. |
| 43 | * Shebang line OK so language can be used for "scripting" as well. | 42 | * Shebang line OK so language can be used for "scripting" as well. |
| 44 | * Have the compiler run continuously, watching the file system for source | 43 | * Debug mode optimizes for fast compilation time and crashing when undefined |
| 45 | changes and automatically perform multithreaded compilation to build projects | 44 | behavior *would* happen. |
| 46 | quickly. | 45 | * Release mode produces heavily optimized code. What other projects call |
| 47 | * Hot code swapping. When integrated with the previous feature, you could | 46 | "Link Time Optimization" Zig does automatically. |
| 48 | press "save" in your editor and see the change immediately in your running | | |
| 49 | software. | | |
| 50 | | 47 | |
| 51 | ### Current Status | 48 | ### Current Status |
| 52 | | 49 | |
| 53 | * Have a look in the examples/ folder to see some code examples. | 50 | * Have a look in the example/ folder to see some code examples. |
| 54 | * Basic language features available such as loops, inline assembly, | 51 | * Basic language features available such as loops, inline assembly, |
| 55 | expressions, literals, functions, importing, structs, tagged unions. | 52 | expressions, literals, functions, importing, structs, tagged unions. |
| 56 | * Linux x86_64 is supported. | 53 | * Linux x86_64 is supported. |