authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-04-24 17:04:52-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-04-24 17:04:52-04:00
log05198e03216c18ca1df089b7d06717dd00731ed4
treeaabd6b93d00af4820d5d655fdbbf0d8aeea22ad0
parentd72fb2abadda831e5877549eb9f5ae36c355d05f

readme update


1 files changed, 14 insertions(+), 41 deletions(-)

README.md+14-41
......@@ -3,19 +3,16 @@
33A system programming language which prioritizes optimality, safety, and
44readability.
55
6Zig is a small language, yet powerful enough to solve any computing problem.
6Zig is a small, simple language, yet powerful. Zig fits into the same niche
7as C, except does everything better.
78
8Zig intends to replace C. Therefore, porting a C project to Zig should be a
9pleasant experience. For every use case C can solve, the same use case must
10be handled in Zig in an equally or more satisfying way.
11
12Zig is not afraid to roll the major version number of the language if it
13improves simplicity, fixes poor design decisions, or adds a new feature which
14compromises backward compatibility.
9Zig ships with a build system that obviates the need for a configure script
10or a makefile. In fact, existing C and C++ projects may choose to depend on
11Zig instead of e.g. cmake.
1512
1613[ziglang.org](http://ziglang.org)
1714
18## Existing Features
15## Feature Highlights
1916
2017 * Compatible with C libraries with no wrapper necessary. Directly include
2118 C .h files and get access to the functions and symbols therein.
......@@ -45,24 +42,19 @@ compromises backward compatibility.
4542 * Release mode produces heavily optimized code. What other projects call
4643 "Link Time Optimization" Zig does automatically.
4744 * Mark functions as tests and automatically run them with `zig test`.
48 * Currently supported architectures: `x86_64`
49 * Currently supported operating systems: linux
5045 * Friendly toward package maintainers. Reproducible build, bootstrapping
5146 process carefully documented. Issues filed by package maintainers are
5247 considered especially important.
53 * Easy cross-compiling.
54
55## Planned Features
56
48 * Cross-compiling is a primary use case.
49 * Zig Build System competes with make, cmake, autotools, SCons, etc.
5750 * In addition to creating executables, creating a C library is a primary use
5851 case. You can export an auto-generated .h file.
59 * Eliminate the need for configure, make, cmake, etc.
60 * Automatically provide test coverage.
61 * Ability to declare dependencies as Git URLS with commit locking (can
62 provide a tag or sha256).
63 * Include documentation generator.
64 * Compiler exposes itself as a library.
65 * Support for all popular architectures and operating systems.
52 * Currently supported architectures:
53 * `x86_64`
54 * Currently supported operating systems:
55 * `linux`
56 * `freestanding`
57 * Support for all popular operating systems and architectures is planned.
6658
6759## Community
6860
......@@ -135,25 +127,6 @@ the last step will fail, but you can execute
135127`llvm-cov gcov $(find CMakeFiles/ -name "*.gcda")` and then inspect the
136128produced .gcov files.
137129
138### Troubleshooting
139
140If you get one of these:
141
142```
143undefined reference to `_ZNK4llvm17SubtargetFeatures9getStringB5cxx11Ev'
144undefined reference to `llvm::SubtargetFeatures::getString() const'
145```
146
147This is because of
148[C++'s Dual ABI](https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html).
149Most likely LLVM was compiled with one compiler while Zig was compiled with a
150different one, for example GCC vs clang.
151
152To fix this, you have 2 options:
153
154 * Compile Zig with the same compiler that LLVM was compiled with.
155 * Add `-DZIG_LLVM_OLD_CXX_ABI=yes` to the cmake configure line.
156
157130### Related Projects
158131
159132 * [zig-mode](https://github.com/AndreaOrru/zig-mode) - Emacs integration