LINUX.ORG.RU

Zig 0.9

 


0

3

Спустя 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.
  • Множество изменений в стандартной библиотеке (подробнее).

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

★★★★★

Проверено: xaizek ()
Последнее исправление: xaizek (всего исправлений: 7)
Ответ на: комментарий от moonmadness

Кланг + glibc и musl встроены, под множество архитектур, в архиве до 50 мб…

anonymous
()
Ответ на: комментарий от moonmadness

Это как?

Это я на Windows могу компилировать код для Linux(или любой другой поддерживаемой цели):

zig cc -O3 main.c -o main -target x86_64-linux-gnu
zig c++ -O3 main.cpp -o main -target x86_64-linux-musl
fsb4000 ★★★★★
() автор топика
Ответ на: комментарий от moonmadness

Это как?

Как Метапрог. Пишешь на своём языке, а он сначала компилируется в си, а потом в бинарь.

Хотя, это я раньше так думал, а тут по новости похоже что ошибаюсь…

pihter ★★★★★
()
Ответ на: комментарий от fsb4000

Да, любые флаги которые понимает clang или clang++ можно передавать и в zig cc или zig c++

выглядит как «ах, какое полезное изобретение!» надо пощупать!

// спасибо за надодку!

pihter ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.