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

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



"Выпуск языка программирования Zig 0.17.0"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Выпуск языка программирования Zig 0.17.0"  +/–
Сообщение от opennews (??), 03-Окт-26, 23:32 
После пяти месяцев разработки опубликован выпуск языка программирования Zig 0.17.0, развиваемого в качестве современной замены языка Си. В Zig пытаются сохранить простоту, гибкость использования и предсказуемость кодогенерации языка Си, при этом добавляя новшества для более эргономичной и безопасной разработки. Zig предоставляет возможности метапрограммирования (выполнения кода во время компиляции)  и современную систему типов, созданную с огладкой на обеспечение безопасности и производительности (опциональные типы вместо нулевых указателей, выравнивание по адресу как часть типа, целочисленные типы с размерностью от 0 до 65535 бит, кортежи и т.д.). Код инструментария распространяется под лицензией MIT...

Подробнее: https://www.opennet.me/opennews/art.shtml?num=66391

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

4. Сообщение от котобот (?), 03-Окт-26, 23:46    Скрыто ботом-модератором–2 +/–
Ответить | Правка | Наверх | Cообщить модератору

6. Сообщение от Аноним (6), 03-Окт-26, 23:49   –1 +/–
>вместо нулевых указателей

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #9

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


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

Ответить | Правка | Наверх | Cообщить модератору

8. Сообщение от Аноним (9), 04-Окт-26, 00:47   +5 +/–
Вот это действительно замена Си, а не обёртка над маллоком. Аллокатор там - библиотечный объект, а не часть языка.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #11, #56

9. Сообщение от Аноним (9), 04-Окт-26, 00:50   +1 +/–
Опциональные типы не особо так отличаются от нулевых указателей, но нужен компилятор, который будет тихонько компилять в нули назад. Думаю, второй zig в это сможет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

11. Сообщение от Аноним (11), 04-Окт-26, 01:12   –6 +/–
К сожалению, замена Си не нужна. Си устарел не только и не столько на уровне языка, но и на уровне, простите за тавтологию, уровня - в современных реалиях он слишком низкоуровневый. zig эту проблему только усугубляет - там не только vtable придётся писать руками, но и аллокатор через всю цепочку вызовов таскать, а зачем, когда недефолтный аллокатор нужен крайне редко. То что написано на C останется на C, а то что будет переписываться, будет переписываться на go или rust. Ну и неадекватный BDFL + нестабильность ставят крест на применении для неигрушечных проектов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #12, #13, #19, #20, #43

12. Сообщение от Аноним (12), 04-Окт-26, 01:15   +4 +/–
Как там было в меме? Весь кровавый ынтерпрайз в основе держится на СИшной либе, которую мейнтейнит в свободное время чувак из Ванкувера.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11

13. Сообщение от Аноним (9), 04-Окт-26, 01:37   +1 +/–
>аллокатор через всю цепочку вызовов таскать

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #21

14. Сообщение от Аноним (14), 04-Окт-26, 02:16   –4 +/–
Зачем этот язык существует, если на нём вообще больше ничего не написано?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #18, #25, #39

15. Сообщение от Аноним (15), 04-Окт-26, 03:26    Скрыто ботом-модератором+/–
Ответить | Правка | Наверх | Cообщить модератору

16. Сообщение от bluesimus (ok), 04-Окт-26, 03:39   –1 +/–
> в качестве современной замены языка Си.

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

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

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

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

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

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

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #24, #32

17. Сообщение от Аноним (17), 04-Окт-26, 04:57   +4 +/–
Внезапно, адекватный язык.
Выкинули древние костыли, и при этом не стали загонять в рамки «пишем так и только так, яскозал». Довольно строг, я пока хеловрот скомпилировал — попотел, сразу вспомнился старина паскаль, я авторов аж зауважал.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #26, #48, #49

18. Сообщение от Аноним (18), 04-Окт-26, 06:21    Скрыто ботом-модератором+/–
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14

19. Сообщение от Аноним (19), 04-Окт-26, 06:33   +2 +/–
>Си устарел не только и не столько на уровне языка, но и на уровне, простите за тавтологию, уровня - в современных реалиях он слишком низкоуровневый

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #22, #44, #52

20. Сообщение от ДядяПетя (?), 04-Окт-26, 06:47   +/–
Ну контекст в го почему-то никого таскать не смущает
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11

21. Сообщение от Аноним (21), 04-Окт-26, 08:22   +1 +/–
А как еще? (неиронично спрашиваю, я любитель, написал на Zig ровно один маленький звукосинтезатор, и да, прокидывал аллокатор цепочкой вызовов. Не очень понимаю, как еще можно)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13 Ответы: #37

22. Сообщение от Аноним324 (ok), 04-Окт-26, 09:05   +/–
> Си процедурный язык и этим всё сказано.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19 Ответы: #33, #35

23. Сообщение от Аноним (23), 04-Окт-26, 09:36   +2 +/–
Язык для системного программиста, который точно знаем что он хочет. Хотя это не только язык, но и полноценный тулчейн (например, тут вам и настоящая кроскомпиляция и понятная система сборки на том же самом языке). Читать и самое главное понимать написанное не составляет труда (минимум абстракций и как следствие нагрузки на мозги, - не надо держать в голове целую кучу иерархии типов и быть мастером спорта по теории типов). Это и впрямь современный лаконичный Си. Удачи проекту!
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #59

24. Сообщение от Аноним (24), 04-Окт-26, 09:48   +2 +/–
Это люди не понимают смысл слова secure -- а это вовсе не "безопасность" или даже "безопасный". Смысл "обеспечение безопасности" или "охранение", а уж кому и от кого, это за рамками. Хинт, не тем, кому это втюхивают как нечто хорошее.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16 Ответы: #27

25. Сообщение от Аноним (25), 04-Окт-26, 10:44   –1 +/–
Слегка поправлю - "ничего ценного")
А зачем? Для самовыражения.
Ты слышал про ТемлОС? Там челу написание кода помогало лечить шизу.

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


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14 Ответы: #60

26. Сообщение от Аноним (25), 04-Окт-26, 10:47   +/–
> Выкинули древние костыли

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17

27. Сообщение от bluesimus (ok), 04-Окт-26, 11:06   +/–
> Это люди не понимают смысл слова secure -- а это вовсе не
> "безопасность" или даже "безопасный". Смысл "обеспечение безопасности" или "охранение",
> а уж кому и от кого, это за рамками. Хинт, не
> тем, кому это втюхивают как нечто хорошее.

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24

28. Сообщение от Аноним (28), 04-Окт-26, 11:10   +1 +/–
Название у него какое-то подозрительное.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #38

29. Сообщение от kusb (?), 04-Окт-26, 11:23    Скрыто ботом-модератором+/–
Ответить | Правка | Наверх | Cообщить модератору

30. Сообщение от Аноним (30), 04-Окт-26, 12:08   +/–
>[оверквотинг удален]
>     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 не являются точно таким же ручным управлением памятью?

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #34

31. Сообщение от Аноним (34), 04-Окт-26, 12:09   +/–
хороший яп с ручным управлением памятью.
Ответить | Правка | Наверх | Cообщить модератору

32. Сообщение от Прохожий (??), 04-Окт-26, 12:18   +3 +/–
>А какой смысл делать упор на безопасность?

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

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

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

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

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

Не только.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16 Ответы: #40

33. Сообщение от Аноним (33), 04-Окт-26, 12:19    Скрыто ботом-модератором+1 +/–
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22

34. Сообщение от Аноним (34), 04-Окт-26, 12:21   +/–
является, а что?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30 Ответы: #41

35. Сообщение от YetAnotherOnanym (ok), 04-Окт-26, 12:24   +/–
> не увидел

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22

36. Сообщение от Аноним (36), 04-Окт-26, 12:26   +/–
> Обновлены версии 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.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #42

37. Сообщение от pepe_watafaemail (?), 04-Окт-26, 12:36   +/–
Позвольте я спрошу у 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.
```

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21 Ответы: #51

38. Сообщение от котобот (?), 04-Окт-26, 12:49    Скрыто ботом-модератором+/–
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28

39. Сообщение от анонимус (??), 04-Окт-26, 12:55   +2 +/–
Ну например, эмулятор терминала Ghostty с 60K звёзд на гитхабе, поддерживающий клавиатурный протокол kitty (чем не может похвастаться ни один из нативных эмуляторов гнома/кде/хфце/итд)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14 Ответы: #61

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32

41. Сообщение от Аноним (30), 04-Окт-26, 13:09   +1 +/–
А тогда зачем??????????????
Из-за фатального недостатка?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #34 Ответы: #46

42. Сообщение от Мемоним (?), 04-Окт-26, 13:48   +/–
Из Zig тоже постепенно выпиливают LLVM. И свой кодеген уже вполне рабочий.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36

43. Сообщение от Мемоним (?), 04-Окт-26, 13:49   +/–
> неадекватный BDFL + нестабильность

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11

44. Сообщение от Аноним (44), 04-Окт-26, 13:55   +1 +/–
А указатели на функции в структурах, это тоже процедурно?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19 Ответы: #53

46. Сообщение от Разрабemail (?), 04-Окт-26, 14:09   +/–
дефер лишь формализует паттерн.
в ди например это scope(exit) и им не ограничивается.
в сишарп через файнали
using(var x = disposable())
{}
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #41

47. Сообщение от Разрабemail (?), 04-Окт-26, 14:13   +/–
кстати, один доктор философии пилит свой фрэйм clef-lang com за основу взят F# и его компилятор, в языке не используется сборка мусора, код чистый нативный, аналогично зиг используется арена аллокатор.
Ответить | Правка | Наверх | Cообщить модератору

48. Сообщение от Аноним (-), 04-Окт-26, 14:14    Скрыто ботом-модератором+1 +/–
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17

49. Сообщение от Аноним (-), 04-Окт-26, 14:29   +/–
https://zsf.zulipchat.com/#narrow/channel/454446-ecosystem/t...

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17

50. Сообщение от Аноним (50), 04-Окт-26, 14:59   +1 +/–
В новый стандарт си тоже добавят дефер.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #55, #57

51. Сообщение от Аноним (51), 04-Окт-26, 15:22   +/–
> — передать его параметром — нормальный вариант для библиотечного кода;

То есть таскать

> — сохранить в `self`/объекте и передать один раз при создании;

То есть таскать

> — положить в общий `Context`;

То есть таскать

> — привязать к lifetime подсистемы: arena, pool, frame/request allocator;

То есть таскать

> — вообще вынести allocation наверх и передавать вниз уже готовый буфер/массив/другой storage;

Это иррелевантно сравнению глобального vs явно переданного аллокаторов.

> — выделить всё при `init()` и дальше сделать runtime/hot path полностью без аллокаций;

Это тоже

> — спрятать allocator в глобальном или thread-local состоянии, если осознанно устраивает такая скрытая зависимость;

То есть глобальный аллокатор руками.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #37

52. Сообщение от Аноним (51), 04-Окт-26, 15:23   +/–
> Готовых конструкций в процедурном языке быть не должно, в принципе. Эти люди не осилили процедурную парадигму.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19 Ответы: #54

53. Сообщение от Аноним (53), 04-Окт-26, 15:51    Скрыто ботом-модератором+/–
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44

54. Сообщение от Аноним (53), 04-Окт-26, 15:52    Скрыто ботом-модератором+/–
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #52

55. Сообщение от Аноним (53), 04-Окт-26, 15:54    Скрыто ботом-модератором+/–
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #50

56. Сообщение от Анонимный аноним (?), 04-Окт-26, 16:11   +/–
В Си аллокатор это тоже библиотечный объект, а не частл языка. Ты с Си++ перепутал.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8

57. Сообщение от Аноним (57), 04-Окт-26, 16:26    Скрыто ботом-модератором+/–
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #50

58. Сообщение от Аноним (59), 04-Окт-26, 16:58   +/–
Может просто паскаль подкрутить, если есть в чем его подкручивать? А?
Ответить | Правка | Наверх | Cообщить модератору

59. Сообщение от Аноним (59), 04-Окт-26, 17:01   +/–
Я же сейчас побегу его учить! Прекрати! ;)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23

60. Сообщение от Аноним (14), 04-Окт-26, 17:15   +/–
> помогало лечить шизу

Так помогло, что сначала его из дому выгнали, а потом он и вовсе помер. Ну, офигеть.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25

61. Сообщение от Аноним (14), 04-Окт-26, 17:20   +/–
> эмулятор терминала Ghostty

А _нужное_ что-то написано? Терминалов как грязи, и для работы проходит буквально любой. Тем более, что конкретно это поделие делается в первую очередь для мака.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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