The OpenNET Project / Index page

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



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

Оглавление

Выпуск языка программирования Zig 0.11.0, opennews (??), 04-Авг-23, (0) [смотреть все]

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


99. "Выпуск языка программирования Zig 0.11.0"  +/
Сообщение от warlock66613 (ok), 05-Авг-23, 20:38 
Можно увидеть перечень UB? Что насчёт strict aliasing, как эта проблема решена, если решена?
Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

105. "Выпуск языка программирования Zig 0.11.0"  +3 +/
Сообщение от BratishkaErik (ok), 05-Авг-23, 21:39 
Их пора не перечислили, компилятор все равно в следующем коммите может поменять поведение, благо не дошли до 1.0. Для алиасинга есть несколько предложений, но пока неизвестно, как возвращение async /await повлияет на UB и этот алиасинг.
В теории UB будет доведено до минимцма по типу „integer overflow for both signed and unsigned types is undefined” (в отличии от C, здесь решили сделать симметрично, чтобы дожать производительность и программист не ломал мозг, для гарантий есть +% (wrapping) и +| (saturating) addition, тоже симметрично работающие и для знаковых, и для беззнаковых), а остальное будет так называемым detectable illegal behaviour (напр. выход за границы массива), проверки которых врубаются/вырубаются в зависимости от режима сборки, или можно переопределить в блоке/функции для всех режимов с помощью @setRuntimeSafety.
https://github.com/ziglang/zig/issues/2402 — про терминологию.
https://github.com/ziglang/zig/issues/1108 — noalias по умолчанию с возможностью разрешить алиасинг, вместо текущего mayalias по умолчанию с возможностью запретить.
https://github.com/ziglang/zig/issues/1966 — собсна и перечислить UB.
https://github.com/ziglang/zig/issues/2301 — связано с предыдущем, попытаться покрыть проверками безопасности всё оставшееся т.е. тот самый illegal behaviour.
https://github.com/ziglang/zig/issues/157 — возможность получить известный во время компиляции максимальный размер стэка для функции
https://github.com/ziglang/zig/issues/1639 — связано с предыдущем, попытка убрать stack overflow решением от предыдущего.
https://github.com/ziglang/zig/issues/7769 — закрепленные структуры (означает, что адрес к ней является его частью (в каком-то поле) и нельзя копировать эту структуру по значению).
Ну и из связанного — https://github.com/ziglang/zig/issues/6396, модель памяти Zig
Ответить | Правка | Наверх | Cообщить модератору

121. "Выпуск языка программирования Zig 0.11.0"  +/
Сообщение от warlock66613 (ok), 05-Авг-23, 22:58 
> Их пора не перечислили, компилятор все равно в следующем коммите может поменять
> поведение

Значит не production-ready и даже не вообще не ready. А в эффективность отслеживания в дебаге лично я вообще не верю. Чтобы отслеживать в дебаге, программу надо скомпилировать, а как её скомпилировать если в ней UB? И зная как тяжело и трудно разрабы Rust борятся в этом плане с LLVM я не понимаю как можно вот так вот просто взять и убрать UB.

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

123. "Выпуск языка программирования Zig 0.11.0"  –1 +/
Сообщение от Аноним (-), 06-Авг-23, 05:54 
> В теории UB будет доведено до минимцма по типу „integer overflow for
> both signed and unsigned types is undefined”

Ну то-есть скоростных алгоритмов на ЭТОМ мы не увидим. Потому что например то же крипто на си штатно уповает на wraparound uint'ов заданного размера. Что экономит операции проца там где хардвар это обеспечивает сам "размером регистра" допустим.

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

128. "Выпуск языка программирования Zig 0.11.0"  +1 +/
Сообщение от BratishkaErik (ok), 06-Авг-23, 11:16 
Ну почему? Если нужен wraparound, просто использовать +%, -% и т.д., +%= и т.д. В std.crypto (основной разраб Frank Denis) с производительностью довольно неплохо https://github.com/ziglang/zig/blob/0.11.0/lib/std/crypto/ff...
Ответить | Правка | Наверх | Cообщить модератору

168. "Выпуск языка программирования Zig 0.11.0"  +/
Сообщение от Аноним (-), 09-Авг-23, 12:53 
> Ну почему? Если нужен wraparound, просто использовать +%, -% и т.д., +%= и т.д.

А, т.е. это настраиваемо? Но вообще по дефолту UB его назвать - херь полная. Это хуже чем даже сишка по UB. UB - нежелательный элемент, потому что о нем помнить надо. И можно прострелить пятку. В сях например достаточно помнить о wrap по мудулю 2^N, это делает оценку математики и ее валидности достаточно простой.

> В std.crypto (основной разраб Frank Denis) с производительностью довольно
> неплохо https://github.com/ziglang/zig/blob/0.11.0/lib/std/crypto/ff...

Они додумались еще и крипто в стдлиб засунуть? При том кодит поди еще и не криптограф, чтобы совсем збс? Или я что-то не понял? Почему это в стдлибе вообще должно быть?

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

111. "Выпуск языка программирования Zig 0.11.0"  +/
Сообщение от Аноним (110), 05-Авг-23, 22:02 
Если бы ты хотел это узнать, то увидел бы на главной в документации
Ответить | Правка | К родителю #99 | Наверх | Cообщить модератору

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

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




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру