update README

This commit is contained in:
Andrew Kelley 2017-05-07 14:11:01 -04:00
parent 7261cd19b7
commit b7579f5f7d

View File

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