Для полегшення роботи з різними версіями Zig:
https://marler8997.github.io/anyzig/
Для полегшення роботи з різними версіями Zls:
https://codeberg.org/knightpp/anyzls/
Заповнювачі виводу:
https://ziglang.org/documentation/0.15.2/std/#std.Io.Writer.print
Книга Педро:
https://pedropark99.github.io/zig-book/Chapters/01-zig-weird.html
Документація мови:
https://ziglang.org/documentation/0.15.2/
Документація стандартної бібліотеки:
https://ziglang.org/documentation/0.15.2/std/
Навчання на основі виправлення помилок:
https://codeberg.org/ziglings/exercises
sudo xbps-install -S neovim
vim .bashrc
alias nv="nvim"
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
mv ~/.local/state/nvim ~/.local/state/nvim.bak
mv ~/.cache/nvim ~/.cache/nvim.bak
git clone --depth 1 https://github.com/AstroNvim/template ~/.config/nvim
rm -rf ~/.config/nvim/.git
nvim
:LspInstall zls
:TSInstall zig
:DapInstall codelldb
Manage plugins
:Lazy check
:Lazy update
:Lazy clean
:Lazy sync
:AstroUpdate
https://github.com/andrewrk/tetris
Встановлюємо основні залежності:
sudo xbps-install -Su zig libX11-devel MesaLib-devel glfw-devel
Встановлюємо libepoxy:
git clone git@github.com:anholt/libepoxy.git
cd libepoxy
mkdir _build && cd _build
meson
ninja
sudo ninja install
Вже після написання статті побачив, що libepoxy є в репозиторії Void, тому можете пробувати також sudo xbps-install -Su libepoxy.
Відповідно, залежності libX11-devel та MesaLib-devel вище можуть бути непотрібними, але це не точно:
sudo xbps-install -Su zig libepoxy glfw-devel
Встановлюємо tetris:
git clone git@github.com:andrewrk/tetris.git
Патчимо його під версію Zig 0.13, яка (поки що) за замовчуванням постачається Void.
На версії Zig 0.15 цього, мабуть, вже не доведеться робити, не перевіряв.
cd tetris
build.zig:
const exe = b.addExecutable(.{
.name = "tetris",
.root_source_file = b.path("src/main.zig"),
.optimize = optimize,
.target = target,
});
src/main.zig:
---callconv(.c)
+++callconv(.C)
Запускаємо:
zig build play
Зазвичай залежності, прописані в build.zig.zon, будуть компілюватися при запуску zig build.
Але якщо вам потрібно не компілювати залежності, а тільки підключити їх з системи, то можна додати рядок exe.linkSystemLibrary("ІМ'Я-БІБЛІОТЕКИ"); у файлі build.zig після об’явлення змінної exe.
Звісно, бібліотека має бути встановлена перед цим.
Наприклад, нас цікавить бібліотека SDL3, яка є залежністю для dvui.
Встановлюємо обидва пакети SDL3 та SDL3-devel:
sudo xbps-install -S SDL3 SDL3-devel
У файлі build.zig.zon маємо тільки згадку dvui:
.dependencies = .{
.dvui = .{
.url = "...",
.hash = "...",
},
},
Тоді у файлі build.zig після:
const exe = b.addExecutable(.{
...
});
дописуємо:
exe.linkSystemLibrary("SDL3");
І zig build має злінкувати системну бібліотеку:
$ zig build
[3] Compile Build Script
├─ [2375/9753] Linking
├─ [2371/2920] Code Generation
└─ [12406] Semantic Analysis
└─ meta.stringToEnum__anon_84415