Профиль: Аноним (вход | регистрация) неRU opennet.me  
OpenNET

[ новости /+++ | форум | теги |    ]

Выпуск языка программирования Zig 0.17.0

03.10.2026 23:27 (MSK)

После пяти месяцев разработки опубликован выпуск языка программирования Zig 0.17.0, развиваемого в качестве современной замены языка Си. В Zig пытаются сохранить простоту, гибкость использования и предсказуемость кодогенерации языка Си, при этом добавляя новшества для более эргономичной и безопасной разработки. Zig предоставляет возможности метапрограммирования (выполнения кода во время компиляции) и современную систему типов, созданную с оглядкой на обеспечение безопасности и производительности (опциональные типы вместо нулевых указателей, выравнивание по адресу как часть типа, целочисленные типы с размерностью от 0 до 65535 бит, кортежи и т.д.). Код инструментария распространяется под лицензией MIT.

В подготовке релиза приняли участие 206 разработчиков, которые внесли 925 коммитов. Основные изменения:

  • Переработана сборочная система (Build System), в которой процесс конфигурации отделён от процесса сборки. Переработана система кэширования.
  • Добавлен протокол Build Server Protocol, позволяющий клиентам отслеживать процесс сборки и управлять им.
  • Существенно улучшен собственный ELF-компоновщик.
  • В компиляторе реализована возможность использования инкрементальной компиляции в Linux-окружениях на системах с архитектурой x86_64.
  • Обновлены версии LLVM 22, musl 1.2.5, glibc 2.44, заголовочные файлы ядра Linux 7.2.
  • Расширена поддержка целевых платформ loongarch32 и SPARC64. добавлена поддержка трассировки стека на системах ARM и SPARC. Удалена поддержка некоторых сборочных целей для архитектуры PowerPC с glibc.
  • В языке предложена формальная спецификация грамматики, добавлены новые встроенные функции (@backingInt, @fromBackingInt, @divCeil, @SpirvType и др.), удалены устаревшие конструкции ("a ** b", "void{}", "errdefer |err|", "i0").
  • Инструменты трансляции C-кода вынесены в отдельный пакет translate-c.
  • В стандартной библиотеке предложена новая система выделения памяти SafeAllocator, пригодная для использования в многопоточном коде. Переработан модуль std.zon.parse.


  1. Главная ссылка к новости (https://ziglang.org/download/0...)
  2. OpenNews: Релиз серверной JavaScript-платформы Bun 1.4, переписанной с Zig на Rust
  3. OpenNews: Представлены Buz и Cruller, форки JavaScript-платформы Bun, продолжающие развитие на языке Zig
  4. OpenNews: Проект Phoenix развивает современный X-сервер, написанный на языке Zig
  5. OpenNews: Разработчики openSUSE развивают zssh, реализацию SSH на языке Zig
  6. OpenNews: Выпуск языка программирования Zig 0.11.0
Автор новости: Мемоним
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/66391-zig
Ключевые слова: zig
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (51) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.4, котобот (?), 23:46, 03/10/2026 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –1 +/–
     
  • 1.6, Аноним (6), 23:49, 03/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/–
    >вместо нулевых указателей

    Остается пожелать ребятам реализовать его для десятка платформ. Получиться десяток zig.

     
     
  • 2.9, Аноним (9), 00:50, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    Опциональные типы не особо так отличаются от нулевых указателей, но нужен компилятор, который будет тихонько компилять в нули назад. Думаю, второй zig в это сможет.
     

  • 1.7, Аноним (7), 00:24, 04/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/–
    Использую его как кросс-компилятор, собираю программы под Linux и Windows (хост должен быть Linux). Очень удобно, всем советую, есть есть потребность!


    Есть даже отдельный проект, который переводит C/C++ библиотеки на систему сборки Zig Build: https://github.com/AllYourCodebase

     
  • 1.8, Аноним (9), 00:47, 04/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/–
    Вот это действительно замена Си, а не обёртка над маллоком. Аллокатор там - библиотечный объект, а не часть языка.
     
     
  • 2.11, Аноним (11), 01:12, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • –5 +/–
    К сожалению, замена Си не нужна. Си устарел не только и не столько на уровне языка, но и на уровне, простите за тавтологию, уровня - в современных реалиях он слишком низкоуровневый. zig эту проблему только усугубляет - там не только vtable придётся писать руками, но и аллокатор через всю цепочку вызовов таскать, а зачем, когда недефолтный аллокатор нужен крайне редко. То что написано на C останется на C, а то что будет переписываться, будет переписываться на go или rust. Ну и неадекватный BDFL + нестабильность ставят крест на применении для неигрушечных проектов.
     
     
  • 3.12, Аноним (12), 01:15, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/–
    Как там было в меме? Весь кровавый ынтерпрайз в основе держится на СИшной либе, которую мейнтейнит в свободное время чувак из Ванкувера.
     
  • 3.13, Аноним (9), 01:37, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    >аллокатор через всю цепочку вызовов таскать

    Ставь лойс, если прокидывать данные научился только через цепочку вызовов.

     
     
  • 4.21, Аноним (21), 08:22, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    А как еще? (неиронично спрашиваю, я любитель, написал на Zig ровно один маленький звукосинтезатор, и да, прокидывал аллокатор цепочкой вызовов. Не очень понимаю, как еще можно)
     
     
  • 5.37, pepe_watafa (?), 12:36, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Позвольте я спрошу у LLM-ок за вас:
    '''
    Не обязательно «таскать allocator через всю цепочку».

    Есть несколько вариантов:

    — передать его параметром — нормальный вариант для библиотечного кода;
    — сохранить в 'self'/объекте и передать один раз при создании;
    — положить в общий 'Context';
    — привязать к lifetime подсистемы: arena, pool, frame/request allocator;
    — вообще вынести allocation наверх и передавать вниз уже готовый буфер/массив/другой storage;
    — выделить всё при 'init()' и дальше сделать runtime/hot path полностью без аллокаций;
    — спрятать allocator в глобальном или thread-local состоянии, если осознанно устраивает такая скрытая зависимость;
    — в отдельных случаях policy можно зафиксировать на comptime.

    То есть проблема не в том, что Zig заставляет передавать 'Allocator' в каждую функцию. Zig заставляет явно определить, откуда берётся память и кому принадлежит её lifetime.

    Если конкретной функции действительно нужна динамическая аллокация, allocator должен каким-то образом быть ей доступен — аргументом, через 'self'/context или через скрытое состояние. Магии тут нет.

    А вот «allocator протаскивается через полпроекта» — это уже вопрос архитектуры и границ ownership, а не обязательное свойство Zig.
    '''

     
     
  • 6.51, Аноним (51), 15:22, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    То есть таскать То есть таскать То есть таскать То есть таскать Это иррелевантно... большой текст свёрнут, показать
     
  • 3.19, Аноним (19), 06:33, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/–
    >Си устарел не только и не столько на уровне языка, но и на уровне, простите за тавтологию, уровня - в современных реалиях он слишком низкоуровневый

    Критерии устарелости в студию! Так пишут люди, которые привыкли к готовым конструкциям. Готовых конструкций в процедурном языке быть не должно, в принципе. Эти люди не осилили процедурную парадигму.

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

     
     
  • 4.22, Аноним324 (ok), 09:05, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Си процедурный язык и этим всё сказано.

    Ни одной программы на С в процедурном стиле так и не увидел.

     
     
  • 5.33, Аноним (33), 12:19, 04/10/2026 Скрыто ботом-модератором     [к модератору]
  • +1 +/–
     
  • 5.35, YetAnotherOnanym (ok), 12:24, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > не увидел

    Записыавай:
    Офтан Катахром
    Эмоксипин
    Тауфон
    Можешь ещё черникой и морковочкой догнаться.

     
  • 4.44, Аноним (44), 13:55, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    А указатели на функции в структурах, это тоже процедурно?
     
     
  • 5.53, Аноним (53), 15:51, 04/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     
  • 4.52, Аноним (51), 15:23, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Готовых конструкций в процедурном языке быть не должно, в принципе. Эти люди не осилили процедурную парадигму.

    Так пишут диванные теоретики которые кода никогда сами не писали.

     
     
  • 5.54, Аноним (53), 15:52, 04/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     
  • 3.20, ДядяПетя (?), 06:47, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Ну контекст в го почему-то никого таскать не смущает
     
  • 3.43, Мемоним (?), 13:49, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > неадекватный BDFL + нестабильность

    А что не так с BDFL? И ожидать стабильности от 0.17 как-то странно.

     
  • 2.56, Анонимный аноним (?), 16:11, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    В Си аллокатор это тоже библиотечный объект, а не частл языка. Ты с Си++ перепутал.
     

  • 1.14, Аноним (14), 02:16, 04/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/–
    Зачем этот язык существует, если на нём вообще больше ничего не написано?
     
     
  • 2.18, Аноним (18), 06:21, 04/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     
  • 2.25, Аноним (25), 10:44, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Слегка поправлю - "ничего ценного")
    А зачем? Для самовыражения.
    Ты слышал про ТемлОС? Там челу написание кода помогало лечить шизу.

    Так и тут, вместо того чтобы быть никому ненужным фриком, чел теперь СОЗДАТЕЛЬ НОВОГО ЯП ЗИГ)


     
  • 2.39, анонимус (??), 12:55, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    Ну например, эмулятор терминала Ghostty с 60K звёзд на гитхабе, поддерживающий клавиатурный протокол kitty (чем не может похвастаться ни один из нативных эмуляторов гнома/кде/хфце/итд)
     

  • 1.15, Аноним (15), 03:26, 04/10/2026 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/–
     
  • 1.16, bluesimus (ok), 03:39, 04/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/–
    > в качестве современной замены языка Си.

    Это как с Вовчиком, "убийцы" которого выпускаются разрабами чуть ли не каждый месяц уже несколько десятков лет.

    > современную систему типов, созданную
    > с огладкой на обеспечение безопасности и производительности

    А какой смысл делать упор на безопасность? Инкапсуляция — это про безопасность? Или protected про безопасность? Или умение ssh пользоваться про безопасность? Или сборщик мусора про безопасность? Слово "безопасность" как-то вот превратилось в набор букв.

    Ну и да, любой язык хочет быть производительным. Мысль из разряда: огонь горячий, вода холодная. Даже Питонический очень-очень хочет быть производительным, у него для этого numba есть. Ладно, у них "система типов, созданная с оглядкой на производительность". Как система типов связана с производительностью? Разве производительность не про непосредственно рантайм? Это всё не претензии к тому, кто новость печатал, на самом деле, просто попытки базово осмыслить новшество в сабже приводит к подобному.

    > нулевых указателей, выравнивание по адресу как часть типа, целочисленные типы с
    > размерностью от 0 до 65535 бит, кортежи и т.д.).

    Мы сделаем "убийцу" языка С, используя в точности те же самые приёмы в коде. Удачи, что сказать.

    > распространяется под лицензией MIT...

    Вот бы ещё юристам было не плевать на лицензии, которые придумали прогеры шутки ради, у меня такое ощущение. Чтобы были.

    Хайпожорство, а не язык, ес чесн. С++ в помощь, ошибиться с его выбором сложно, а если сам по себе язык кажется сложноватым, я могу только сказать: гит гуд.

     
     
  • 2.24, Аноним (24), 09:48, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/–
    Это люди не понимают смысл слова secure -- а это вовсе не "безопасность" или даже "безопасный". Смысл "обеспечение безопасности" или "охранение", а уж кому и от кого, это за рамками. Хинт, не тем, кому это втюхивают как нечто хорошее.
     
     
  • 3.27, bluesimus (ok), 11:06, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Это люди не понимают смысл слова secure -- а это вовсе не
    > "безопасность" или даже "безопасный". Смысл "обеспечение безопасности" или "охранение",
    > а уж кому и от кого, это за рамками. Хинт, не
    > тем, кому это втюхивают как нечто хорошее.

    Вообще, согласен с вами, если рассматривать наиболее широкую область кибер-безопасности.

    В моём понимании, secure для разработки больше означает надёжность, последовательность, целостность, инкапсуляцию. То бишь, хех, безопасность от того, чтобы разраб сломал всё сущее, ОС там, другие проги, свою программку.

     
  • 2.32, Прохожий (??), 12:18, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/–
    >А какой смысл делать упор на безопасность?

    Если под безопасностью понимать надёжность, то смысл - в экономике эксплуатации. Взломает такой софт хакер или упадёт в самый неподходящий момент такой софт - пользователь получит убытки. Раньше, когда софт не был таким массовым, как в наши дни, на безопасность было плевать (кроме некоторых сфер, критических для жизни человека). Теперь - нет, потому что убытки могут быть огромными.

    И да, в этом смысле, все готовые стандартные абстракции - это про дополнительный уровень надёжности.

    >Как система типов связана с производительностью?

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

    >Разве производительность не про непосредственно рантайм?

    Не только.

    Я - не сторонник Zig, если что.

     
     
  • 3.40, bluesimus (ok), 12:57, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/–
    Все приколы с кибер-безопасностью решаются идеальным образом с помощью физического барьера. Обращение к денежному вопросу весьма показательно. Если у вас есть выход в инет, ждите ддос. Ну, то бишь, потерю бабоса. Такова сетевая жизнь. Главное, хе-хе, "недополученную" прибыль не искать, её не существует.

    В принципе, соглашусь с вашей мыслью о производительности. Связь есть, хотя оная кажется мне несколько мутноватой и косвенной.

     

  • 1.17, Аноним (17), 04:57, 04/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/–
    Внезапно, адекватный язык.
    Выкинули древние костыли, и при этом не стали загонять в рамки «пишем так и только так, яскозал». Довольно строг, я пока хеловрот скомпилировал — попотел, сразу вспомнился старина паскаль, я авторов аж зауважал.
     
     
  • 2.26, Аноним (25), 10:47, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Выкинули древние костыли

    Оно уже научилось use-after-free и остальные типичные ошибки СИшки предотвращать?
    Если уже рекламируют как язык "безопасной разработки".

    > при этом не стали загонять в рамки «пишем так и только так, яскозал»

    До С++ с 14 вариантами инита ему все равно далеко))

     
  • 2.48, Аноним (-), 14:14, 04/10/2026 Скрыто ботом-модератором     [к модератору]
  • +1 +/–
     
  • 2.49, Аноним (-), 14:29, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    https://zsf.zulipchat.com/#narrow/channel/454446-ecosystem/topic//near/6287809

    ну и как результат адекватности этого андрюши, лол

     

  • 1.23, Аноним (23), 09:36, 04/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/–
    Язык для системного программиста, который точно знаем что он хочет. Хотя это не только язык, но и полноценный тулчейн (например, тут вам и настоящая кроскомпиляция и понятная система сборки на том же самом языке). Читать и самое главное понимать написанное не составляет труда (минимум абстракций и как следствие нагрузки на мозги, - не надо держать в голове целую кучу иерархии типов и быть мастером спорта по теории типов). Это и впрямь современный лаконичный Си. Удачи проекту!
     
  • 1.28, Аноним (28), 11:10, 04/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/–
    Название у него какое-то подозрительное.
     

  • 1.29, kusb (?), 11:23, 04/10/2026 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/–
     
  • 1.30, Аноним (30), 12:08, 04/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    >[оверквотинг удален]
    >     var debug_allocator = std.heap.DebugAllocator(.{}){};
    >     defer std.debug.assert(debug_allocator.deinit() == .ok);
    >
    >     const gpa = debug_allocator.allocator();
    >
    >     const u32_ptr = try gpa.create(u32);
    >     _ = u32_ptr; // silences unused variable error
    >
    >     // oops I forgot to free!
    > }

    А разве defer не являются точно таким же ручным управлением памятью?

     
     
  • 2.34, Аноним (34), 12:21, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    является, а что?
     
     
  • 3.41, Аноним (30), 13:09, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    А тогда зачем??????????????
    Из-за фатального недостатка?
     
     
  • 4.46, Разраб (?), 14:09, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    дефер лишь формализует паттерн.
    в ди например это scope(exit) и им не ограничивается.
    в сишарп через файнали
    using(var x = disposable())
    {}
     

  • 1.31, Аноним (34), 12:09, 04/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    хороший яп с ручным управлением памятью.
     
  • 1.36, Аноним (36), 12:26, 04/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    > Обновлены версии LLVM 22

    Вот как надо: https://github.com/suidvandiewereld/Mettle.

    > Mettle is a systems language where the toolchain is part of the contract.  
    > Require what the compiler must do. Read what it did. Check that it kept your program's meaning.  
    > Native x86-64, ARM64 and GPU code generation, with its own optimizer, linker, runtime and debugger. No LLVM, no VM, no GC.

     
     
  • 2.42, Мемоним (?), 13:48, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Из Zig тоже постепенно выпиливают LLVM. И свой кодеген уже вполне рабочий.
     

  • 1.47, Разраб (?), 14:13, 04/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    кстати, один доктор философии пилит свой фрэйм clef-lang com за основу взят F# и его компилятор, в языке не используется сборка мусора, код чистый нативный, аналогично зиг используется арена аллокатор.
     
  • 1.50, Аноним (50), 14:59, 04/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/–
    В новый стандарт си тоже добавят дефер.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    XSQUARE
    Inferno Solutions
    Hosting by Hoster.ru
    Хоcтинг: