#
Глава 2. Настройка вашей среды
Ах, значит, вы решили продолжить с Zig. Смело! Честно говоря, я впечатлён — большинство людей уже бы сдались, но не вы. Отличный выбор, особенно если вам нравится контролировать каждую мелочь без привычной головной боли, свойственной большинству языков системного программирования. Однако прежде чем мы погрузимся в код и начнём тренировать ваши низкоуровневые навыки, нужно разобраться с одним важным моментом. Если вы думаете, что сможете отправиться в это путешествие без настройки Language Server Protocol (LSP), то с тем же успехом можете взять дубину и начать рисовать на стенах пещеры. Серьёзно, в современном программировании отсутствие LSP — это практически доисторический уровень. Но не волнуйтесь, мы вас приведём в порядок. В этой главе речь пойдёт об установке Zig и о том, чтобы ваша среда не застряла в каменном веке.
К концу этой главы вы не просто установите Zig — вы будете готовы нырнуть в него с уверенностью человека, который точно знает, что делает (или хотя бы очень хорошо притворяется). Так что давайте оставим пещерные времена позади и шагнём в будущее системного программирования?
В этой главе мы рассмотрим следующие темы:
- Установка Zig.
- Настройка ZLS.
#
Установка Zig
Итак, вы решили попробовать Zig. Умный ход. Если вы хоть немного похожи на меня, то наверняка потратили уйму времени на борьбу с установщиками, которые ведут себя скорее как стражи, чем помощники. Но не бойтесь — Zig не заставит вас сомневаться в своих жизненных выборах.
На самом деле, установка Zig настолько проста и приятна, что вы можете заподозрить подвох. Спойлер: его нет. Никаких раздутых инсталляторов, загадочных ошибок и запутанных зависимостей. Только вы, несколько команд и обещание языка программирования, острого как бритва. Почему острого? Потому что Zig даёт такой низкоуровневый контроль, что другие языки кажутся завёрнутыми в пузырчатую плёнку.
Неважно, используете ли вы Linux, Windows или macOS — процесс быстрый, безболезненный и даже приятный. Давайте отбросим лишнее и установим Zig. В конце концов, у вас есть дела поважнее — например, программировать с уверенностью, которую даёт только настоящий контроль.
Примечание о версии Zig и обновлениях кода
На момент написания и публикации этой книги последней стабильной версией Zig была 0.15.2. Язык всё ещё развивается, и будущие релизы могут внести изменения, влияющие на примеры кода в книге.
Для самых свежих примеров и корректировок под конкретные версии обращайтесь к официальному репозиторию GitHub: https://github.com/PacktPublishing/Learning-Zig
#
Осторожность или авантюра: ваш первый выбор в Zig
У меня к вам вопрос: вы выбираете стабильный релиз или решаете прогуляться по краю с ночной сборкой? Давайте начистоту: Zig ещё не дошёл до версии 1.0, а его цикл релизов привязан к довольно неспешному шестимесячному ритму LLVM. Это значит, что официальные релизы Zig могут приходить как по почте улиткой, и к моменту выхода они уже могут немного устареть по сравнению с ежедневными изменениями в мастере.
Конечно, можно начать с тега-релиза — это нормально для первого знакомства. Но если вы решили, что Zig — ваш новый лучший друг и хотите копнуть глубже, советую перейти на ночную сборку. Почему? Потому что именно там происходит всё самое интересное, и это избавит вас от головной боли при следовании туториалам или обращении за помощью. Сообщество Zig и ресурсы вроде zig.guide ориентируются на мастер-ветку, а не на «окаменевшие» версии.
Нужна помощь с выбором? Давайте сыграем в игру «Стабильно или смело».
#
Стабильно или смело
Ваш проект уже в продакшене или скоро будет?
Да → Рекомендуем стабильный релиз (надёжность и поддержка).
Нет → Следующий вопрос.Вам комфортно с возможными багами или ломающими изменениями?
Да → Рекомендуем ночную сборку (доступ к последним фичам).
Нет → Следующий вопрос.Вы полагаетесь на туториалы, сообщество или сторонние библиотеки?
Да → Ночная сборка (большинство ресурсов актуальны для мастера).
Нет → Следующий вопрос.Критична ли совместимость с внешними инструментами или системами?
Да → Стабильный релиз (лучшая совместимость).
Нет → Следующий вопрос.Вы готовы часто обновлять среду?
Да → Ночная сборка (актуальность ценой частых обновлений).
Нет → Следующий вопрос.Вы предпочитаете подход «настроил и забыл»?
Да → Стабильный релиз (меньше обновлений).
Нет → Оцените другие приоритеты.Вы экспериментируете с новыми фичами или тестируете крайние случаи?
Да → Ночная сборка (идеально для экспериментов).
Нет → Следующий вопрос.Вы хотите вносить вклад в Zig или быть в курсе развития языка?
Да → Ночная сборка (лучше для контрибьюторов).
Нет → Стабильный релиз (для стабильного использования).
Вот итог:
- Если вы чаще отвечали «да» на вопросы о стабильности и совместимости — выбирайте стабильный релиз.
- Если вам важнее последние фичи и актуальность — выбирайте ночную сборку.
Плюс в том, что Zig позволяет легко переключаться между версиями или даже запускать несколько версий одновременно. Каждый релиз — это самодостаточный пакет, который можно положить куда угодно на вашей системе. Никакого беспорядка — только гибкость.
#
Linux: страна выбора
Если вы работаете в Linux, то наверняка привыкли делать выбор — иногда даже слишком много вариантов ради удобства! Начнём с простого: менеджер пакетов вашего дистрибутива. Большинство крупных дистрибутивов уже содержат последнюю версию Zig — почему бы не воспользоваться этим?
Полный список менеджеров пакетов с поддержкой Zig можно найти здесь: https://github.com/ziglang/zig/wiki/Install-Zig-from-a-Package-Manager.
Если же вам нравится всё контролировать (или даже немного помучить себя), можно установить Zig вручную.
Сначала скачайте готовый бинарник со страницы загрузок Zig (https://ziglang.org/download/#release-master). master в ссылке — это ночные сборки; если нужна конкретная версия (например, 0.13.0), просто поменяйте ссылку: https://ziglang.org/download/#release-0.13.0.
Перед скачиванием убедитесь, что выбрали правильную архитектуру CPU (x86_64, arm64 и т.д.). Узнать свою архитектуру можно командой:
uname -m
После этого скачайте архив:
wget https://ziglang.org/download/0.13.0/zig-linux-x86_64-0.13.0.tar.xz
Распакуйте:
tar xf zig-linux-x86_64-0.13.0.tar.xz
Добавьте путь к zig в переменную окружения PATH:
echo 'export PATH="$HOME/zig-linux-x86_64-0.12.0:$PATH"' >> ~/.bashrc
Готово! Zig установлен на Linux именно так, как вам нравится.
Для других оболочек (zsh, fish и др.) команду нужно немного изменить.
#
Windows: страна переменных PATH и PowerShell
Пользователи Windows тоже не обделены! Zig можно установить через Chocolatey, Scoop или WinGet:
choco install zig # Chocolatey
winget install zig.zig # WinGet
scoop install zig # Scoop
Если предпочитаете ручную установку — скачайте нужный архив для вашей архитектуры (скорее всего x86_64/AMD64). Проверить архитектуру:
$Env:PROCESSOR_ARCHITECTURE
Распакуйте файлы куда удобно и добавьте путь к zig.exe в системную или пользовательскую переменную PATH:
[Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path", "Machine") + ";C:\_\\zig-windows-_", "Machine")
[Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path", "User") + ";C:\_\\zig-windows-_", "User")
Не забудьте заменить путь на свой! Без этого шага придётся каждый раз указывать полный путь к zig.exe.
#
Mac: культ Homebrew
macOS — где всё просто работает... пока не перестаёт :) Если у вас установлен Homebrew:
brew install zig
Zig установлен! Легко и приятно.
#
Проверка установки
Теперь убедитесь, что всё работает:
zig version
Должно вывести что-то вроде:
0.12.0
#
Кстати, я использую Nix
Если у вас уже стоит Nix — поздравляю! Установка Zig становится ещё проще:
nix-env -iA nixpkgs.zig
Nix позволяет держать несколько версий Zig без конфликтов и мусора в системе.
Для ночных сборок настройте выражения Nix под себя.
Преимущество Nix — чистота и воспроизводимость среды.
Даже если Nix уже не такой «андеграунд», он всё ещё показывает вашу продвинутость!
#
Настройка ZLS для умного кодинга на Zig
Одна из лучших черт Zig — простота сборки инструментов с нуля. Это касается не только ваших проектов, но и всей экосистемы: например, Language Server (ZLS). Сейчас мы покажем, как легко собрать и настроить среду разработки с помощью ZLS.
#
Сборка ZLS из исходников
Клонируйте репозиторий:
git clone https://github.com/zigtools/zls.git && cd zls
Соберите:
zig build -Doptimize=ReleaseSafe
Теперь у вас есть рабочий zls.
Следующий шаг — интеграция с вашим редактором.
Поддерживаются VS Code и Neovim, для других редакторов смотрите официальную документацию.
#
Использование ZLS в VS Code
Установите официальное расширение Zig Language из маркетплейса VS Code. После установки расширение само найдёт ZLS (если он есть в PATH) и подключит все возможности: автодополнение, переход к определению и т.д.
Перезапустите редактор и готово!
#
Использование ZLS в Neovim
Для Neovim потребуется плагин nvim-lspconfig и поддержка Zig (zig.vim):
local vim = vim
local Plug = vim.fn['plug#']
vim.call('plug#begin')
Plug('neovim/nvim-lspconfig')
Plug('ziglang/zig.vim')
vim.call('plug#end')
vim.g.zig_fmt_parse_errors = 0
vim.g.zig_fmt_autosave = 0
vim.cmd [[autocmd BufWritePre *.zig lua vim.lsp.buf.format()]]
local lspconfig = require('lspconfig')
lspconfig.zls.setup {
cmd = { '/path/to/zls_executable' },
settings = {
zls = {
zig_exe_path = '/path/to/zig_executable',
}
}
}
Если используете мастер-ветку Zig — не ставьте ZLS через Mason: только ручная сборка!
Плагин
zig.vimподдерживается даже автором языка!
Форматирование лучше доверить ZLS, а не плагину.
Укажите пути к zls и zig, если их нет в PATH.
Подробности — в документации nvim-lspconfig.
#
Тонкая настройка ZLS через zls.json
Создайте файл zls.json для глобальных или пользовательских настроек:
{
"zig_exe_path": "/path/to/zig_executable",
"semantic_tokens": "partial",
"enable_build_on_save": true,
"build_on_save_step": "check"
}
Пути указывайте только если инструменты не видны через PATH. Проверить путь к конфигу можно командой:
zls env # для новых версий ZLS (0.14+)
zls --show-config-path # для старых версий ZLS <0.14-dev...
Файл должен быть валидным JSON!
#
Автоматическая проверка при сохранении
Добавьте параметры:
{
"enable_build_on_save": true,
"build_on_save_step": "check"
}
Теперь при каждом сохранении файла будет запускаться команда проверки сборки без генерации бинарника.
В build.zig добавьте шаг проверки:
const exe_check = b.addExecutable(.{ ... });
const check = b.step("check", "Check if your_executable compiles");
check.dependOn(&exe_check.step);
Это позволит мгновенно ловить ошибки компиляции прямо в редакторе! Перезапустите редактор/ZLS после изменений. Такой подход экономит время и нервы: ошибки видны сразу после сохранения файла!
#
Тест: проверка знаний по установке
Перед завершением главы проверьте себя короткой викториной!
Вопрос 1. Что нужно выбрать первым при установке Zig?
-
- Скачать ZLS;
-
- Выбрать между стабильной версией и ночной сборкой;
-
- Настроить редактор.
Вопрос 2. Как быстрее всего установить Zig на Linux?
-
- Собрать из исходников;
-
- Использовать менеджер пакетов дистрибутива;
-
- Скачать бинарник вручную.
Вопрос 3. Верно ли: стабильная версия рекомендована для доступа к последним фичам?
-
- Да;
-
- Нет.
Вопрос 4. Что нужно сделать после ручной установки Zig на Windows?
-
- Скопировать zig.exe в System32;
-
- Добавить путь к zig.exe в PATH;
-
- Установить через Chocolatey.
Вопрос 5. Почему важно соответствие версий ZLS и Zig?
-
- ZLS работает только со стабильными релизами;
-
- ZLS может не поддерживать новые фичи ночной сборки;
-
- Требуется специальный конфиг.
Бонус: Что учитывать при работе с ночной сборкой?
-
- Возможны баги/ломающие изменения;
-
- Туториалы могут устареть;
-
- Оба варианта верны.
#
Результаты теста:
- 5–6 правильных: Мастер Zig! Вы готовы к работе!
- 3–4 правильных: Ученик! Есть куда расти.
- 0–2 правильных: Новичок! Не беда — повторите материал!
#
Итоги
Вы справились с установкой Zig! Независимо от ОС процесс был простым: несколько команд — и вы готовы к работе! Мы обсудили выбор между стабильностью и новизной, показали гибкость переключения между версиями, подробно разобрали настройку ZLS, интеграцию с популярными редакторами и автоматическую проверку ошибок при сохранении кода.
Эти шаги — фундамент удобной среды разработки на Zig!
В следующей главе мы перейдём от настройки к практике, мы напишем первую программу на Zig и познакомимся с возможностями его инструментария!