Спустя шесть месяцев работы и 2023 коммитов команда разработчиков Zig выпустила обновление 0.9.0. Теперь Toolchain работает лучше, Self-Hosted Compiler завершён на 44 процента, Support Table расширена, а Standard Library стал более полезным.
Одно из главных изменений языка — возможность выделить для указателя или переменной определённое адресное пространство. Делается это с помощью ключевого слова addrspace.
Теперь @tagName, @errorName, @typeName и @embedFile являются *[N: 0]const u8, а не []const u8. Это означает, что они могут использоваться везде, где допустим строковый литерал. Другими словами, их можно привести к одному из следующих типов:
Добавлены @minimum и @maximum. Они могут принимать целые и дробные числа, а также векторы. В последнем случае сравнение происходит поэлементно.
Удалили ключевые слова true, false, undefined и null. Теперь они являются примитивами, такими как void, u32 и прочие. Их можно использовать, например, в качестве имён для свойств структур:
В Zig появился синтаксис, который позволяет производить безопасные арифметические операции. Если результат не помещается в переменную определённого типа, то значение будет приведено к минимуму или максимуму.
Теперь компилятор выдаёт ошибки для неиспользуемых локальных переменных или параметров.
А ещё добавили @select. Он выбирает значения поэлементно из векторов a и b по предикату pred. Если pred[i] истинно, то результатом будет a[i], иначе b[i].
Разработчики рассказали, что следующее мажорное обновление — 0.10.0 — будет включать стабилизацию языка, первый драфт спецификации, а также завершённый компилятор.
Полный список изменений можно посмотреть на официальном сайте.