#
Краткий пересказ изменений в версии Zig 0.15.1
Версия Zig 0.15.1 включает значительные улучшения производительности компилятора, экспериментальные возможности инкрементальной компиляции и ряд значительных изменений в стандартной библиотеке и интерфейсах ввода-вывода. Основные изменения включают:
#
Улучшения производительности:
- Самостоятельный бекенд x86: По умолчанию используется самоподдерживаемый x86 бекенд, обеспечивающий значительное ускорение сборки в режиме отладки (примерно в 5 раз быстрее, чем LLVM).
- Параллелизация этапов компиляции: теперь этапы анализа семантики, генерации кода и линковки выполняются параллельно, значительно сокращая общее время компиляции.
#
Изменения в стандартной библиотеке:
- Устаревшие структуры данных удалены, включая многие реализации кольцевых буферов, заменённые новыми стандартизированными интерфейсами ввода-вывода (std.Io.Reader, std.Io.Writer).
- Стандартная библиотека больше не зависит от низкоуровневых сетевых функций (std.net), улучшая модульность приложений.
- Переработаны API серверов и клиентов HTTP, ставшие менее ограниченными и зависящими исключительно от стандартных потоков ввода-вывода.
- Структуры std.ArrayList и std.ArrayListAligned устарели и будут удалены.
#
Инкрементальная компиляция:
- Продолжается работа над поддержкой инкрементальных сборок, позволяющих быстро обновлять код путём перекомпиляции лишь изменённых частей проекта.
#
Другие важные нововведения:
- Добавлена поддержка динамического наблюдения файлов на macOS через встроенный файловый монитор.
- Введён новый веб-интерфейс для визуализации шагов сборки и диагностики ошибок («time reports»).
- Обновлены механизмы обработки ошибок форматов строк и выравнивания Unicode.
- Устранено использование оператора usingnamespace, улучшив читаемость и стабильность программы.
- Повышена производительность цикла for и оптимизирован вывод сообщений в консоль.
#
Исправления и улучшения стабильности:
- Закрыто большое количество багов, среди которых исправление некорректных переходов между файлами, проблем с потоками ввода-вывода и улучшенная обработка неопределённого поведения (UBSan).
Эти изменения направлены на улучшение производительности, упрощение разработки и повышение качества итоговых проектов на Zig. Более подробное описание в официальном Release Notes