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)

В таком виде это слишком куце и невнятно для новости, а для мини-новости наоборот есть лишние детали. Даже править не хочется, всё равно модераторы завернут, если не лишатся ума только.

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

Изменений языка и стандартной библиотеки слишком много писать, я не знаю, мне лень. Им тоже.

Вот их краткий релиз новой версии, может из него что-нибудь можно добавить в новость?

One sentence summary: The Toolchain «just works» in more cases, many bugs were fixed, the Self-Hosted Compiler is 44% complete, the Support Table is expanded, there were a handful of Language Changes, the project started Performance Tracking, and the Standard Library, although unstable, became more useful.

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

По-моему, на мини-новость вполне тянет. Стилистику, конечно, надо поправить.

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

Вот их краткий релиз новой версии, может из него что-нибудь можно добавить в новость?

Да тут описание в духе «добавлены фичи, пофикшены баги, го обновляться» )
Ладно, я попробую что-то сделать сейчас.

Virtuos86 ★★★★★
()

Не все правки xaizek мне по душе, но в общем и целом стало лучше.

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

Я бы из символизма сделал это одним коммитом.

anonymous
()
Ответ на: комментарий от LINUX-ORG-RU

А так язык на вид как питон со скобочками :D Живые пользователи есть на лоре?

сишка со стандартизированным defer и инопланетным синтаксисом, одно отсутствие цикла for чего стоит. Вроде разработчики стараются все делать правильно, но блин, ко всему этому придется долго привыкать.

По-моему эта штука полезнее всего не как самостоятельный язык, а как сборка LLVM для кросс-компиляции проектов на сишке и плюсах под разные платформы и версии glibc, musl и т.п.

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

Надо попробовать что-то сишное им покомпилять попозжа

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от IIIypuk

Из символизма нужно ужать 536 коммитов в один, а остальные оставить как есть.

anonymous
()

Недавно в Zig Core Team вошёл ещё один разработчик на зарплате: Isaac Freund

Этот zig не кинет! Отлично!

anonymous
()

Фигня этот zig. При компиляции жрёт больше 8 гигабайтов памяти.

Если разработчики даже это не смогли исправить, то нафиг он нужен?

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

Всё, что на LLVM, жрет, как не в себя при конпелянии, Rust тот же. Кто-то из бздунов вечно ноет на форуме, что и огнелис стал много жрать при сборке, как туда добавили код на Rust.

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

Щас-бы не жрать память (и время) в неопределенном количестве, когда компилируемая программа исполняется во время компиляции.

anonymous
()

zig-0.2.0.tar.gz 200818 2.9 MB, а ныне zig-0.10.0-dev.127.tar.xz 14MB Лет через пять будет MB сорок.

Это радует и печалит ...
anonymous
()
Ответ на: комментарий от anonymous

[quote] Мария Исааковна Петрова заполняет анкету. Завкадрами интересуется:

  • А почему вы Исааковна? Еврейка что ли?
  • А по-вашему, Исаакиевский собор - это синагога?[/quote]
anonymous
()
Ответ на: комментарий от dataman

Почему во всех новых языках для объявления функций пишут fn вместо func или function? Это действительно настолько удобнее или это в угоду лаконичности?

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

Почему во всех новых языках для объявления функций пишут fn вместо func или function? Это действительно настолько удобнее или это в угоду лаконичности?

В угоду рынку? fn - для писателя, function - для читателя. Читатели умнее и дороже, и так справятся. Писателей (дешевых) должно быть как можно больше, вот и снижают порог как только могут….

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

Понятия не имею. А в C3 автор недавно изменил, теперь можно и fn и func. :)

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

std.AutoArrayHashMapUnmanaged для писателя или для читателя?

Это для адептов context-free семантики, языков, библиотек, «фреймворков»… жизни в итоге… 8-E…

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

Всё, что на LLVM, жрет, как не в себя при конпелянии

Нет. Например, C3 хорош.

Видимо, это единственное его достоинство, или там то же пердоленье указателей, что и в Си только в профиль.

Virtuos86 ★★★★★
()
Последнее исправление: Virtuos86 (всего исправлений: 1)
Ответ на: комментарий от 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 ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Почему во всех новых языках для объявления функций пишут fn вместо func или function?

В старых языках точно также писали, в тех же ML и OCaml fn и fun для лямбд и вообще тупо let для обычных функций.

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

В угоду рынку? fn - для писателя, function - для читателя.

Опыт кобола да и паскаля показывает что слишком длинные ключевые слова наоборот портят читаемость.

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

fun для лямбд и вообще тупо let

Это, вообще-то, приведение к общему знаменателю - функциональному программированию, когда функции ничем не отличаются от других объектов - так называемые, первоклассные объекты.

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

Всё, что на LLVM, жрет, как не в себя при конпелянии, Rust тот же.

Это не так. Конкретно Rust жрет как не в себя благодаря «качеству» передаваемого в LLVM кода.

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

Опыт кобола да и паскаля показывает что слишком длинные ключевые слова наоборот портят читаемость.

После «энтэрпрайзной жабки» и крестов на шаблонах любой паскаль с коболом лирикой покажутся…

«Истина где-то рядом»: слишком короткая запись выворачивает мозг почище чего другого, и APL с потомками тому лучшее доказательство…

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

Он просто подождёт и посмотрит что будет :)

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

Всё, что на LLVM, жрет, как не в себя при конпелянии, Rust тот же.

Это не так. Конкретно Rust жрет как не в себя благодаря «качеству» передаваемого в LLVM кода.

Какой код передается при компиляции rustc, код исходников компилятора, он такой плохой?

Virtuos86 ★★★★★
()

Недавно в Zig Core Team вошёл ещё один разработчик на зарплате: Isaac Freund.

Забавно что ещё и кто-то за это деньги плотит.
Потому что этот Zig звучит как какой-то хобби-проект.

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

Забавно что ещё и кто-то за это деньги плотит.

Скорее всего корпорации начнут вливать в проект деньги.
Для них это будет не ТРАТА, а в конечном счете ЭКОНОМИЯ …

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

Забавно что ещё и кто-то за это деньги плотит. Потому что этот Zig звучит как какой-то хобби-проект.

Вот их доход от пожертвований неравнодушных людей: https://github.com/sponsors/ziglang

А так, они донатят ещё разрабу musl, https://musl.libc.org/

Andrew Kelley

автор Zig, самый топовый донатер среди обычных людей.

И

The Zig Programming Language

среди организаций также на первом месте.

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

Ого. Так там целые тусовки нынче на Гитхабе оказывается.
По ходу пора вылазить из криокамеры.

sphericalhorse ★★★★★
()

Я вижу костры из книг,
Я слышу овчарок лай,
И если один скажет Zig,
Миллионы ответят ...

splinter ★★★★★
()

Реализация компилятора Zig на Zig (self-hosted) готова на 44%.

Метапрог сам на себе детектед)

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

Это Шрайк

Я только до середины второй книги осилил, так он-таки хороший или плохой? Или стоит дочитать даже если сейчас кажется скучным?

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