После 7 месяцев работы и 2711 коммитов вышла новая версия Zig: 0.8
Zig это:
-
Современный компилятор С
-
Современный компилятор С++
-
Компилятор языка Zig
-
Сборочная система для C, C++, языка Zig
-
(Планируется) Пакетный менеджер для С, C++, языка Zig
Zig разрабатывается под лицензией MIT: https://github.com/ziglang/zig/blob/master/LICENSE
Язык Zig – это язык общего назначения, который старается быть простым. Нет макросов, скрытых аллокаций, скрытого потока управления.
Небольшая заметка, которая пытается объяснить зачем нужен Zig, когда уже есть C++, D, и Rust: https://ziglang.org/learn/why_zig_rust_d_cpp/
Даже если вам не интересен язык Zig, возможно вам будет интересен Zig как кросскомпилятор С или С++.
#include <iostream>
int main() {
std::cout << "Hello World!\n";
return 0;
}
$ zig c++ -o hello hello.cpp -target riscv64-linux
$ qemu-riscv64 ./hello
Hello World!
Ещё про использование zig как кросскомпилятора: https://andrewkelley.me/post/zig-cc-powerful-drop-in-replacement-gcc-clang.html
В новой версии:
-
Обновление LLVM до LLVM 12.
-
Поддержка arm64 macOS (aka the Apple Silicon) и также поддержка кросскомпиляции C, C++, и Zig в arm64 и x86_64 macOS.
-
Zig также разрушает миф, что вам нужен Mac и Xcode для компиляции кода для Mac OS. Заголовочные С файлы Apple выложены под Apple Public Source License которая разрешительная.
Так что вы можете собирать бинарники для Apple из-под Linux/Windows/FreeBSD без XCode:
#include <iostream>
int main() {
std::cout << "Hello World!\n";
}
$ zig c++ main.cpp -o test -target x86_64-macos
$ file test
test: Mach-O 64-bit x86_64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE>
Подробнее: https://ziglang.org/download/0.8.0/release-notes.html#macOS-Support
и
https://github.com/ziglang/fetch-them-macos-headers
-
Добавлена поддержка WASI libc
-
Начальная поддержка Haiku
-
Изменения в языке: https://ziglang.org/download/0.8.0/release-notes.html#Language-Changes
-
Изменения в стандартной библиотеке: https://ziglang.org/download/0.8.0/release-notes.html#Standard-Library
-
Zig поддерживает Position Independent Executables, даже когда компилируются статические бинарники
-
Изменения в сборочной системе: https://ziglang.org/download/0.8.0/release-notes.html#Zig-Build-System
-
Обновление musl до 1.2.2, mingw-w64 до 9.0.0, возможность нацеливания glibc 2.33
Полный список изменений: https://ziglang.org/download/0.8.0/release-notes.html
>>> Официальный сайт