Zig 0.9

good-penguin.png

Спустя 6 месяцев и 2023 коммита от 177 независимых участников вышла новая версия Zig.

Zig — это (кросс)компилятор языков программирования Zig, С++, С, Objective-C, Objective-C++, а также сборочная система для них. Проект разрабатывается под лицензией MIT. Недавно в Zig Core Team вошёл ещё один разработчик на зарплате: Isaac Freund.

В новой версии:

  • Появилась поддержка Objective-C, Objective-C++.

  • Улучшилась поддержка WebAssembly, RISC-V, Haiku.

  • Добавлены платформы ARM64 Windows и Solaris/Illumos.

  • Различные фиксы для уже поддерживаемых платформ.

  • В CI добавлены тесты скорости работы компилятора (подробнее). Теперь после каждого коммита видно, как меняется время парсинга, компиляции, анализа, а также сколько используется памяти. Это помогает оперативно находить регрессии и устранять их. Как пример, в Pull Request, который добавил Allocgate, забыли сделать free. Все тесты проходили, но на графике было видно увеличение потребления памяти, что помогло найти и исправить эту ошибку.

  • Одним из самых важных изменений языка является введение понятия Address Spaces. Теперь отдельным переменным можно указывать, где им создаваться (за счёт генерации компилятором специализированных инструкций эта функциональность полезна для встраиваемого оборудования и графических процессоров):

    pub const will_be_placed_in_flash: i32 addrspace(.flash) = 123;
    
    pub fn readFlash(ptr: *addrspace(.flash) i32) i32 {
       return ptr.*;
    }
    
  • Реализация компилятора Zig на Zig (self-hosted) готова на 44%.

  • Обновлены сторонние компоненты:

    • LLVM 13;
    • musl 1.2.2;
    • glibc 2.34;
    • mingw-w64 9.0.0.
  • Множество изменений в стандартной библиотеке (подробнее).

>>> Подробности

©  Linux.org.ru