authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-01-26 01:39:45-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-01-26 01:39:45-07:00
logbc896149966afb3740a02cd34939f0543b769be7
tree6e9e91ab7b958914c44312ce16e75ffae9f40450
parent4e439734130eadea4ef74cdb54a2496ecad6e8cd

update README


1 files changed, 29 insertions(+), 28 deletions(-)

README.md+29-28
...@@ -12,25 +12,39 @@ Zig is not afraid to roll the major version number of the language if it...@@ -12,25 +12,39 @@ Zig is not afraid to roll the major version number of the language if it
12improves simplicity, fixes poor design decisions, or adds a new feature which12improves simplicity, fixes poor design decisions, or adds a new feature which
13compromises backward compatibility.13compromises backward compatibility.
1414
15## Goals15## Existing Features
16
17 * Compile units do not depend on libc unless explicitly linked.
18 * Provides standard library which competes with the C standard library and is
19 always compiled against statically in source form.
20 * Pointer types do not allow the null value. Instead you can use a maybe type
21 which has several syntactic constructs to ensure that the null pointer is
22 not missed.
23 * Provides an error type with several syntatic constructs which makes writing
24 robust code convenient and straightforward. Writing correct code is easier
25 than writing buggy code.
26 * No header files required. Top level declarations are entirely
27 order-independent.
28 * Powerful constant expression evaluator. Generally, anything that *can* be
29 figured out at compile time *is* figured out at compile time.
30 * Tagged union enum type. No more accidentally reading the wrong union field.
31 * Easy to parse language so that humans and machines have no trouble with the
32 syntax.
33 * The binaries produced by Zig have complete debugging information so you can,
34 for example, use GDB to debug your software.
35 * Release mode produces heavily optimized code. What other projects call
36 "Link Time Optimization" Zig does automatically.
37 * Supported architectures: `x86_64`
38 * Supported operating systems: Linux
39
40## Planned Features
1641
17 * Completely compatible with C libraries with no wrapper necessary.42 * Completely compatible with C libraries with no wrapper necessary.
18 * In addition to creating executables, creating a C library is a primary use43 * In addition to creating executables, creating a C library is a primary use
19 case. You can export an auto-generated .h file.44 case. You can export an auto-generated .h file.
20 * Do not depend on libc unless explicitly linked.
21 * Provide standard library which competes with the C standard library and is
22 always compiled against statically in source form.
23 * Generics so that one can write efficient data structures that work for any45 * Generics so that one can write efficient data structures that work for any
24 data type.46 data type.
25 * No null pointer. Convenient syntax for dealing with a maybe type so that
26 null pointer is not missed.
27 * An error type, combined with some syntatical constructs which makes writing
28 robust code convenient and straightforward.
29 * Eliminate the need for configure, make, cmake, etc.47 * Eliminate the need for configure, make, cmake, etc.
30 * Eliminate the need for header files (when using zig internally).
31 * Tagged union enum type. No more accidentally reading the wrong union field.
32 * Easy to parse language so that humans and machines have no trouble with the
33 syntax.
34 * Eliminate the preprocessor, but (most) everything you can accomplish with48 * Eliminate the preprocessor, but (most) everything you can accomplish with
35 the preprocessor, you can accomplish directly in the language.49 the preprocessor, you can accomplish directly in the language.
36 * Ability to mark functions as test and automatically run them in test mode.50 * Ability to mark functions as test and automatically run them in test mode.
...@@ -42,22 +56,9 @@ compromises backward compatibility....@@ -42,22 +56,9 @@ compromises backward compatibility.
42 * Shebang line OK so language can be used for "scripting" as well.56 * Shebang line OK so language can be used for "scripting" as well.
43 * Debug mode optimizes for fast compilation time and crashing when undefined57 * Debug mode optimizes for fast compilation time and crashing when undefined
44 behavior *would* happen.58 behavior *would* happen.
45 * Release mode produces heavily optimized code. What other projects call59 * Compiler exposes itself as a library.
46 "Link Time Optimization" Zig does automatically.60 * Support for all popular architectures and operating systems.
4761 * Easy cross-compiling.
48### Current Status
49
50 * Have a look in the example/ folder to see some code examples.
51 * Most language features are available, but many edge cases and errors are
52 not yet implemented.
53 * Linux x86_64 is supported.
54 * Building for the native target is supported.
55 * Optimized machine code that Zig produces is indistinguishable from
56 optimized machine code produced from equivalent C program.
57 * Zig can generate dynamic libraries, executables, object files, and C
58 header files.
59 * The binaries produced by Zig have complete debugging information so you can,
60 for example, use GDB to debug your software.
6162
62## Building63## Building
6364