Skip to content

Commit 05198e0

Browse files
committed
readme update
1 parent d72fb2a commit 05198e0

File tree

1 file changed

+14
-41
lines changed

1 file changed

+14
-41
lines changed

README.md

Lines changed: 14 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,16 @@
33
A system programming language which prioritizes optimality, safety, and
44
readability.
55

6-
Zig is a small language, yet powerful enough to solve any computing problem.
6+
Zig is a small, simple language, yet powerful. Zig fits into the same niche
7+
as C, except does everything better.
78

8-
Zig intends to replace C. Therefore, porting a C project to Zig should be a
9-
pleasant experience. For every use case C can solve, the same use case must
10-
be handled in Zig in an equally or more satisfying way.
11-
12-
Zig is not afraid to roll the major version number of the language if it
13-
improves simplicity, fixes poor design decisions, or adds a new feature which
14-
compromises backward compatibility.
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.
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
136128
produced .gcov files.
137129

138-
### Troubleshooting
139-
140-
If you get one of these:
141-
142-
```
143-
undefined reference to `_ZNK4llvm17SubtargetFeatures9getStringB5cxx11Ev'
144-
undefined reference to `llvm::SubtargetFeatures::getString() const'
145-
```
146-
147-
This is because of
148-
[C++'s Dual ABI](https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html).
149-
Most likely LLVM was compiled with one compiler while Zig was compiled with a
150-
different one, for example GCC vs clang.
151-
152-
To 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

0 commit comments

Comments
 (0)