mirror of
https://github.com/ziglang/zig.git
synced 2024-11-15 16:45:27 +00:00
readme update
This commit is contained in:
parent
d72fb2abad
commit
05198e0321
55
README.md
55
README.md
@ -3,19 +3,16 @@
|
||||
A system programming language which prioritizes optimality, safety, and
|
||||
readability.
|
||||
|
||||
Zig is a small language, yet powerful enough to solve any computing problem.
|
||||
Zig is a small, simple language, yet powerful. Zig fits into the same niche
|
||||
as C, except does everything better.
|
||||
|
||||
Zig intends to replace C. Therefore, porting a C project to Zig should be a
|
||||
pleasant experience. For every use case C can solve, the same use case must
|
||||
be handled in Zig in an equally or more satisfying way.
|
||||
|
||||
Zig is not afraid to roll the major version number of the language if it
|
||||
improves simplicity, fixes poor design decisions, or adds a new feature which
|
||||
compromises backward compatibility.
|
||||
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)
|
||||
|
||||
## Existing Features
|
||||
## Feature Highlights
|
||||
|
||||
* Compatible with C libraries with no wrapper necessary. Directly include
|
||||
C .h files and get access to the functions and symbols therein.
|
||||
@ -45,24 +42,19 @@ compromises backward compatibility.
|
||||
* 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`.
|
||||
* Currently supported architectures: `x86_64`
|
||||
* Currently supported operating systems: linux
|
||||
* Friendly toward package maintainers. Reproducible build, bootstrapping
|
||||
process carefully documented. Issues filed by package maintainers are
|
||||
considered especially important.
|
||||
* Easy cross-compiling.
|
||||
|
||||
## Planned Features
|
||||
|
||||
* 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
|
||||
case. You can export an auto-generated .h file.
|
||||
* Eliminate the need for configure, make, cmake, etc.
|
||||
* Automatically provide test coverage.
|
||||
* Ability to declare dependencies as Git URLS with commit locking (can
|
||||
provide a tag or sha256).
|
||||
* Include documentation generator.
|
||||
* Compiler exposes itself as a library.
|
||||
* Support for all popular architectures and operating systems.
|
||||
* Currently supported architectures:
|
||||
* `x86_64`
|
||||
* Currently supported operating systems:
|
||||
* `linux`
|
||||
* `freestanding`
|
||||
* Support for all popular operating systems and architectures is planned.
|
||||
|
||||
## Community
|
||||
|
||||
@ -135,25 +127,6 @@ the last step will fail, but you can execute
|
||||
`llvm-cov gcov $(find CMakeFiles/ -name "*.gcda")` and then inspect the
|
||||
produced .gcov files.
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
If you get one of these:
|
||||
|
||||
```
|
||||
undefined reference to `_ZNK4llvm17SubtargetFeatures9getStringB5cxx11Ev'
|
||||
undefined reference to `llvm::SubtargetFeatures::getString() const'
|
||||
```
|
||||
|
||||
This is because of
|
||||
[C++'s Dual ABI](https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html).
|
||||
Most likely LLVM was compiled with one compiler while Zig was compiled with a
|
||||
different one, for example GCC vs clang.
|
||||
|
||||
To fix this, you have 2 options:
|
||||
|
||||
* Compile Zig with the same compiler that LLVM was compiled with.
|
||||
* Add `-DZIG_LLVM_OLD_CXX_ABI=yes` to the cmake configure line.
|
||||
|
||||
### Related Projects
|
||||
|
||||
* [zig-mode](https://github.com/AndreaOrru/zig-mode) - Emacs integration
|
||||
|
Loading…
Reference in New Issue
Block a user