| 1.4, Карлос Сношайтилис (ok), 12:27, 02/03/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
> Возможности, связанные с языком С: Реализован черновик спецификации, определяющей механизм отложенного выполнения "defer"
Если вы не идёте к RAII, RAII идёт к вам
| | |
| |
| 2.34, Аноним (34), 14:42, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
Давно пора. Только вот зачем они сделали эту фичу как control block, а не как декларацию с полноценными лямбда-функциями, мне не понятно. Так придётся колхозить замыкания, если надо захватывать значения переменных на этапе defer, что часто бывает нужно. И теперь даже если потом добавят лямбды, с текущим defer они не совместимы. В общем, подложили лишние грабли и себе, и C++.
| | |
| |
| 3.48, Сладкая булочка (?), 15:36, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Давно пора.
Давно уже есть в gcc и используется (например, в коде systemd). Надо просто стандартизовать.
| | |
| 3.99, Аноним (99), 19:15, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Давно пора.
Давно пора научиться посылать лесом неосиляторов, когда те начинают скулить "запилите мне фичу, к которой я привык в другом языке, я без неё кодить не умею, плак-плак".
| | |
|
| |
| 3.58, Аноним (58), 16:11, 02/03/2026 [^] [^^] [^^^] [ответить]
| –3 +/– | |
> Только defer - это не RAII.
Конечно.
Только defer - это недо RAII.
Но в копролитный язык из прошлого века не могут добавить сразу нормально.
Пользователи не поймут. В прямом смысле.
У них мозг атрофировался еще во времена С89.
А тут такие изменения!
Они еще только-только пережили добавление keywordʼа bool.
А тут в С26 на горизонте маячит is_within_lifetime.
Прикинь! Лайфтаймы в СИшке!
Половина дидов просто сопьется от такого напряжения межушного ганглия.
| | |
| |
| 4.64, Аноним (64), 16:38, 02/03/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
> А тут в С26 на горизонте маячит is_within_lifetime
> Прикинь! Лайфтаймы в СИшке!
Это у тебя что-то с межушным ганглием. is_within_lifetime - это про C++.
| | |
| |
| 5.65, Аноним (65), 16:49, 02/03/2026 [^] [^^] [^^^] [ответить]
| –1 +/– | |
> is_within_lifetime - это про C++.
Ты все испортил! (с)
Я тут СИшников пугаю, а ты всё портишь!!
defer тоже было "про С++", а тут вот как оберрнулось.
Они запросто поверят и в лайфтаймы.
| | |
|
| 4.71, Аноним (71), 17:36, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
>Половина дидов просто сопьется от такого напряжения межушного ганглия.
Я весь такой красивый, молодой и модный. Пишу на Си. Дедов никогда не видел. Может они где-то есть в Интернете?
| | |
| 4.101, Сладкая булочка (?), 19:18, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
>> Только defer - это не RAII.
> Конечно.
> Только defer - это недо RAII.
> Но в копролитный язык из прошлого века не могут добавить сразу нормально.
> Пользователи не поймут. В прямом смысле.
> У них мозг атрофировался еще во времена С89.
В gcc уже давно есть и используется в проектах.
| | |
| 4.102, Сладкая булочка (?), 19:20, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
>> Только defer - это не RAII.
> А тут в С26 на горизонте маячит is_within_lifetime.
Путать С26 c C++26 - это талант.
| | |
|
|
|
| |
| |
| 3.90, Аноним (99), 18:53, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
А, точно. Вот так правильно:
Какой ещё ARM? Только TSMC, только x64!
| | |
|
|
| |
| |
| 3.29, злой_ой (?), 14:22, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
как всегда машина времени:
$ cat /usr/ports/devel/llvm22/Makefile | grep ^DISTVERSION
DISTVERSION= 22.1.0
$ ls -la /usr/ports/devel/llvm22/Makefile
-rw-r--r-- 1 root wheel 25902 26 Feb 21:47 /usr/ports/devel/llvm22/Makefile
$ ls -la /usr/ports/devel/llvm22/distinfo
-rw-r--r-- 1 root wheel 180 26 Feb 21:47 /usr/ports/devel/llvm22/distinfo
| | |
|
| 2.24, Аноним (42), 14:08, 02/03/2026 [^] [^^] [^^^] [ответить]
| –1 +/– |
Не спеши, может, компиляцию хрома опять сломали. Раст, опять же, к осени ждать только.
| | |
|
| |
| 2.10, Аноним (10), 13:13, 02/03/2026 [^] [^^] [^^^] [ответить]
| +2 +/– |
Технологии языков прошлого века, когда родителей раста ещё не было в планах.
| | |
| |
| |
| 4.27, Аноним (34), 14:20, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
На самом деле, эти идеи далеко не новы и обсуждались задолго до Раста. И у конкретно этого решения с метками есть свои минусы и противники, как и у альтернатив. Поэтому долго не стандартизировали. Видимо, просто плюнули и решили, что что-то - лучше, чем ничего.
| | |
| 4.30, злой_ой (?), 14:27, 02/03/2026 [^] [^^] [^^^] [ответить]
| +1 +/– | |
подсмотрели метки? у раста?
man perlsyn
/LABEL
уже и не вспомнить, с каких пор там оно.
| | |
|
|
| 2.73, Аноним (73), 17:45, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
>у раста подсмотрели)
Не знаю, по крайней мере в чистой сишке этой гадости нет. А вот компилятор Раста делается на основе LLVM. Нет LLVM - нет rustc.
| | |
|
| 1.8, Аноним (-), 12:58, 02/03/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +3 +/– | |
> Добавлена поддержка именованных циклов, позволяющих присваивать имена циклам и оператору switch, которые можно указывать в операторах break и continue для явного определения цикла, из которого производится выход.
Что только не придумают, лишь бы goto не использовать.
| | |
| |
| 2.77, нах. (?), 18:07, 02/03/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
причем придумка - всем хуже просто использования goto. (например семантика break LABEL получается совершенно контринтуитивной и еще ищи там в дветыщипятой строке закрывающую скобочку)
покусанные дейкстрой по прежнему героически борются с устройством компьютера, пожелаем им сдохнуть в муках.
| | |
| |
| 3.157, Аноним (64), 01:54, 03/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> покусанные дейкстрой по прежнему героически борются с устройством компьютера
Блин, лучше и не скажешь, все так.
| | |
|
|
| 1.12, Сусанин (?), 13:28, 02/03/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– | |
> Добавлена поддержка именованных циклов, позволяющих присваивать имена циклам...
Наконец-то сподобились перетащить это из Perl, в котором это уже десятки лет есть ровно с таким же синтаксисом.
| | |
| |
| |
| 3.18, Аноним (18), 13:59, 02/03/2026 [^] [^^] [^^^] [ответить]
| +4 +/– |
Из чего? Это которые в разноцветных шапочках и из ямайки? Они тут причем?
| | |
|
| |
| 3.25, Аноним (-), 14:10, 02/03/2026 [^] [^^] [^^^] [ответить]
| –2 +/– | |
> GOTO ещё не перетащили?
Пф. зачем перетаскивать технологию устаревщую на десятилетия?
Это же пример убогого овнокода дидов.
| | |
| |
| 4.39, Аноним (34), 15:00, 02/03/2026 [^] [^^] [^^^] [ответить]
| +3 +/– |
Эта "устаревшая" технология с успехом решает все задачи на неё возложенные. И кстати, в конкретно этом случае с именованными циклами, польза последних по сравнению с имеющимся goto довольно сомнительна. Наверно, сделали для альтернативно одаренных с фобией goto.
| | |
| |
| 5.125, Аноним (125), 20:32, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Эта "устаревшая" технология с успехом решает все задачи на неё возложенные
Ага, задачи вроде "как превратить 10 строк кода в лапшу за неимением нормальных средств в языке для решения задачи".
| | |
| |
| 6.156, Аноним (64), 01:40, 03/03/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
Как бы тебе объяснить то чтоб ты уже наконец понял. Сишка это системный язык программирования для написания драйверов, ядер ОС, прошивок для МК и тд. Не нужны там эти ваши километры DWARF-лапши в бинарях. Да - простой goto, который транслируется в какой-нить JMP в x86 - это круто и достаточно. Целое ядро на миллионы строк кода так написано.
| | |
|
|
|
|
|
| 1.14, Аноним (14), 13:40, 02/03/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Заголовок "Релиз набора компиляторов LLVM 22"
Портянка "Среди улучшений в Clang 22"
Так а в LLVM что-то изменили?
| | |
| |
| 2.17, Аноним (17), 13:45, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
Во-первых, clang - часть llvm, поэтому то что изменили в clang то изменили в llvm. Во-вторых, читай новость целиком.
| | |
|
| 1.26, Аноним (26), 14:10, 02/03/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– | |
> операторы сравнения "<", ">", "<=" и ">=" синтезированы из оператора "<=>"
а это вообще что? как? куда? а главное — зачем?
| | |
| |
| 2.31, Аноним (34), 14:31, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
Это позволяет определить, сгенерирован ли оператор компилятором на основе operator<=> (фича C++20) или определён пользователем.
https://godbolt.org/z/YcG1jTv8Y
"Зачем" - не знаю, но видимо есть какие-то случаи, когда это может пригодиться.
| | |
| 2.107, Сладкая булочка (?), 19:32, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
>> операторы сравнения "<", ">", "<=" и ">=" синтезированы из оператора "<=>"
> а это вообще что? как? куда? а главное — зачем?
Очевидно, что "<=>" - изображение летающий тарелки. Вот прилетят они и увидят, что ты их уважаешь.
| | |
|
| 1.33, Аноним (33), 14:38, 02/03/2026 [ответить] [﹢﹢﹢] [ · · · ]
| –5 +/– | |
обязательно было вот это Г делать явным?
outer:
for (int i = 0; i < IK; ++ i) {
for (int j = 0; j < JK; ++ j) {
continue; // переход к CONT1
continue outer; // переход к CONT2
// CONT1
}
// CONT2
}
В пхп давно оно неявное, достаточно указать номер уровня вложенности continue 2;
| | |
| |
| 2.35, Аноним (34), 14:46, 02/03/2026 [^] [^^] [^^^] [ответить]
| +3 +/– | |
Ну да, а потом иди считай, куда твой break или continue на самом деле переходит. Заняться нечем?
С метками тоже переходит не туда, где метка (и это косяк этого решения), но по крайней мере визуально видно о каком цикле речь. К тому же, метку можно назвать как угодно.
| | |
| |
| 3.41, Аноним (33), 15:06, 02/03/2026 [^] [^^] [^^^] [ответить] | +1 +/– | заняться не чем именно тем, кто мешает понятие меток с уровнем вложенности блочн... большой текст свёрнут, показать | | |
| |
| 4.60, Аноним (34), 16:18, 02/03/2026 [^] [^^] [^^^] [ответить] | +2 +/– | Да кому вообще он нужен, этот уровень вложенности Важен не уровень вложенности ... большой текст свёрнут, показать | | |
| |
| 5.67, Аноним (33), 17:31, 02/03/2026 [^] [^^] [^^^] [ответить] | +/– | как кому, смысл вашего break и continue изменился, теперь он не оператор выхода ... большой текст свёрнут, показать | | |
| |
| 6.82, Аноним (34), 18:24, 02/03/2026 [^] [^^] [^^^] [ответить] | +1 +/– | В том-то и дело, что break continue с меткой должен быть почти goto, с тем огр... большой текст свёрнут, показать | | |
| |
| 7.84, Аноним (33), 18:39, 02/03/2026 [^] [^^] [^^^] [ответить] | +/– | Сделаю акцент на этом, и ограничусь Давайте опишем процесс написания кода с явн... большой текст свёрнут, показать | | |
| |
| |
| 9.96, Аноним (33), 19:09, 02/03/2026 [^] [^^] [^^^] [ответить] | +/– | Я описал процесс изначального написания кода, и сделал акцент на подсчитывать у... большой текст свёрнут, показать | | |
| |
| 10.105, Аноним (34), 19:25, 02/03/2026 [^] [^^] [^^^] [ответить] | +/– | Не буду я ничего искать Если я пишу код, я помню метки и сразу напишу break ou... большой текст свёрнут, показать | | |
| |
| 11.112, Аноним (33), 19:55, 02/03/2026 [^] [^^] [^^^] [ответить] | +/– | считать ничего не нужно, достаточно посмотреть на комментарий предыдущего цикла ... большой текст свёрнут, показать | | |
| |
| 12.124, Аноним (34), 20:31, 02/03/2026 [^] [^^] [^^^] [ответить] | +/– | Накой ляд я буду делать такую метку Это разве что вы, с вашей привязанностью к ... большой текст свёрнут, показать | | |
| |
| 13.129, Аноним (33), 21:12, 02/03/2026 [^] [^^] [^^^] [ответить] | +/– | Ну тогда пример в студию хотя бы 10-ти вложенных меток для циклов, хочу посмотре... большой текст свёрнут, показать | | |
|
|
|
|
| |
| |
| 11.115, Аноним (33), 20:07, 02/03/2026 [^] [^^] [^^^] [ответить] | –1 +/– | а промах мимо уровня вложенности компилятором не фиксируется Я не буду разве по... большой текст свёрнут, показать | | |
|
|
|
| 8.94, Аноним (33), 19:00, 02/03/2026 [^] [^^] [^^^] [ответить] | +/– | а теперь просто к этой конструкции именованных циклов добавьте внешний цикл с ме... текст свёрнут, показать | | |
|
|
|
| 5.72, Аноним (33), 17:37, 02/03/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
я у же не говорю про то, что возьмет один дурак и изменит имя метки :) удачи искать что не так. А в случае с уровнем вложенности - это по факту инвариант (неизменяемое), он изменится только когда добавят новый уровень вложенности.
| | |
| |
| 6.75, Аноним (-), 18:02, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> он изменится только когда добавят новый уровень вложенности
И вот _тогда-то_ утдачи искать, что не так.
| | |
| |
| 7.91, Аноним (33), 18:53, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> И вот _тогда-то_ утдачи искать, что не так.
меняется уровень - меняется логика, а чту тут такого может быть не так? Выше примеры есть.
| | |
|
| 6.83, Аноним (34), 18:28, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> я у же не говорю про то, что возьмет один дурак и изменит имя метки :) удачи искать что не так.
Вообще не проблема, т.к. при первой же сборке компилятор подсветит несуществующую метку в goto.
| | |
| |
| 7.88, Аноним (33), 18:51, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Вообще не проблема, т.к. при первой же сборке компилятор подсветит несуществующую метку в goto.
ну да, только пойми теперь без разбора всей логики к какому циклу эта метка относилась.
| | |
| |
| 8.95, Аноним (34), 19:06, 02/03/2026 [^] [^^] [^^^] [ответить] | +/– | Блин, чувак, ты только что накуролесил в коде - ты можешь посмотреть git diff Д... текст свёрнут, показать | | |
| |
| 9.98, Аноним (33), 19:14, 02/03/2026 [^] [^^] [^^^] [ответить] | +/– | я вижу как куролесят современные XZ Речь о том, что, если не меняется логика вы... текст свёрнут, показать | | |
|
|
|
|
|
|
| 3.113, 12yoexpert (ok), 20:01, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
> Ну да, а потом иди считай, куда твой break или continue на самом деле переходит. Заняться нечем?
а нехер писать спагетти с 50 уровнями вложенности
| | |
| |
| 4.126, Аноним (34), 20:40, 02/03/2026 [^] [^^] [^^^] [ответить]
| –2 +/– |
Ну т.е. давайте сделаем фичу, чтобы ей не пользоваться. Л-логика 80 lvl.
| | |
| |
| 5.132, 12yoexpert (ok), 21:40, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
согласен. есть ведь goto - бери и пользуйся. нет, нужно создавать видимость бурной деятельности и выдумывать костыльные конструкции
| | |
|
|
|
| |
| 3.43, Аноним (33), 15:10, 02/03/2026 [^] [^^] [^^^] [ответить]
| –2 +/– | |
> Явное лучше неявного.
Согласен, а зачем тогда избыточность в виде оператора цикла, кода есть механизм меток и оператор безусловного перехода. Явное лучше, но почему-то "компилятор умнее". Умному компилятору явно указывать уровень вложенности нет необходимости. Сделали для людей это? Не смешите мои тапочки - Си сделан для людей :))))
| | |
|
| 2.50, Сладкая булочка (?), 15:40, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> В пхп давно оно неявное, достаточно указать номер уровня вложенности continue 2;
Сейчас бы ориентироваться на пых.
| | |
| |
| 3.56, Аноним (33), 16:08, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Сейчас бы ориентироваться на пых.
Спустя 56 лет править синтаксис, конечно же, чем еще можно удивить поколение смузихлебов и шайбакодеров.
| | |
|
|
| 1.37, Аноним (37), 14:58, 02/03/2026 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
50+ лет фанаты сишечки рассказывать что "ненужОн ваш RAII!" и без defer обойдемся!
А тут хоба - в драфт стандарта принял))
| | |
| |
| 2.46, 12yoexpert (ok), 15:24, 02/03/2026 [^] [^^] [^^^] [ответить]
| +2 +/– |
RAII это corruption, как раст, превращает straightforward обработку ошибок в какой-то бесполезный ад из костылей
но гуманитариям после курсов или совкового универа этого не понять, их удел - макдональдс или аутсорс
| | |
| |
| 3.66, Аноним (66), 17:15, 02/03/2026 [^] [^^] [^^^] [ответить]
| –2 +/– | |
> RAII это corruption
RAII это основа одного из самых распространенных и успешных ЯП - с++.
Оно помогает перестать ковыряться в дидовой гоутушной лапше, а нормально обрабатывать ошибки. Но я не удивлен, что ты это не осилил.
| | |
| |
| 4.68, Аноним (64), 17:31, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
перестать ковыряться в дидовой гоутушной лапше, которая хотя бы функцией ограничена и начать ковыряться в еще более адовой лапше setjmp/longjmp.
| | |
| |
| 5.119, Аноним (125), 20:14, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> начать ковыряться в еще более адовой лапше setjmp/longjmp
Лол. А где мне увидеть комбо компилятора/платформы, где исключения под капотом реально используют setjmp/longjmp, а не zero-cost DWARF и виндовый SEH?
| | |
| |
| 6.127, Аноним (64), 20:40, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> zero-cost DWARF
Да пофиг, goto тоже zero-cost или как это у вас там называется в плюсах. Вместо дидовой гоутушной лапши, ограниченной одной функцией, теперь ковыряемся в DWARF-лапше размазанной по всем файлам.
| | |
| |
| 7.130, Аноним (125), 21:33, 02/03/2026 [^] [^^] [^^^] [ответить]
| –1 +/– | |
> Да пофиг, goto тоже zero-cost или как это у вас там называется в плюсах
Оно ни капли не zero-const в плане читаемости и поддержки. В этом как бы весь смысл.
> теперь ковыряемся в DWARF-лапше размазанной по всем файлам.
О каких ковыряниях в DWARF-лапше ты говоришь? Есть стандартный trow/try/catch, который ведет себя предсказуемо и существует в куче языков помимо C++.
| | |
| 7.131, Аноним (131), 21:37, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Вместо дидовой гоутушной лапши, ограниченной одной функцией
Вот именно, что у тебя одна функция, а в ней намешано непосредственно логика, управление ресурсами и обработка ошибок. И все это склеено сполями из goto.
> теперь ковыряемся в DWARF-лапше размазанной по всем файлам.
В том-то и дело, что не ковыряемся: логика отдельно (сам код), управление ресурсами отдельно (RAII), обработка ошибок отдельно (исключения).
| | |
|
|
|
| 4.110, 12yoexpert (ok), 19:47, 02/03/2026 [^] [^^] [^^^] [ответить]
| –2 +/– |
> Оно помогает перестать ковыряться в дидовой гоутушной лапше,
ога
1) goto - плохо
2) диды так обрабатывают ошибки
3) на C/C++ пишут только диды
так сказали веб-синьоры на курсах
зато RAII - манна небесная, позволяет ловить исключения, исключения, брошенные в обработчиках исключений, конструкторах и деструкторах, вместо дидовской немодной обработки ошибок. или нет, давай лучше засунем в наши типы что-нибудь вроде ::is_null(), ::is_ready() или будем кидать те же ошибки, но уже при работе с ресурсом, это же так здорово, да? чтобы вообще никто и никогда даже в теории не смог обработать ошибки
в чём ты точно хорошо разбираешься - как приготовить бургер и заорать "свободная касса", т.е. обслуживать людей, которые понимают, почему RAII - corruption
| | |
| |
| 5.114, Аноним (125), 20:02, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> RAII - манна небесная, позволяет ловить исключения
Нет, RAII - это не способ ловить исключения. RAII вообще не имеет никакого отношения к исключениям и их обработке.
Поздравляю, ты как всегда сел в лужу. 👍
| | |
|
|
|
|
| 1.81, Ананоним (?), 18:17, 02/03/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– | |
Отец, прости их, потому что они не ведают, что творят...
Извратили лаконичные языки хуже некуда. Вместо того чтобы создать класс с деструктором и использовать по классике, им нужны всякие деферы.
| | |
| |
| 2.85, Аноним (71), 18:43, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Вместо того чтобы создать класс с деструктором и использовать по классике, им нужны всякие деферы.
На каждую функцию лепить классы? Вы же замахаетесь.
А дефер нужен чтобы подчистить продукты жизнедеятельности функции - поочищать память, занулить нужное, закрыть дескрипторы и тд.
| | |
| |
| 3.87, Ананоним (?), 18:49, 02/03/2026 [^] [^^] [^^^] [ответить]
| –1 +/– |
>> Вместо того чтобы создать класс с деструктором и использовать по классике, им нужны всякие деферы.
> На каждую функцию лепить классы? Вы же замахаетесь.
Кажется ты не понимаешь принципов ООП. Си подходит для низкоуровневых задач, там где надо всё руками для полного контроля, в ином случае подходит Си++. Ну а если гвозди забивать микроскопами, тогда и получится что микроскопы деградируют до очень сложных и дорогих молотков.
> А дефер нужен чтобы подчистить продукты жизнедеятельности функции - поочищать память, занулить
> нужное, закрыть дескрипторы и тд.
Приемлимые способы "подчистить продукты жизнедеятельности функции" всё давно придумано и используется. Но ты не осилил.
| | |
| 3.89, Ананоним (?), 18:51, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> поочищать память, занулить нужное, закрыть дескрипторы и тд.
Напиши хороший класс для памяти, нужного и файла (дескриптора), и тебе не нужно будет ничего подчищать вручную.
| | |
|
| 2.109, Сладкая булочка (?), 19:35, 02/03/2026 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Отец, прости их, потому что они не ведают, что творят...
> Извратили лаконичные языки хуже некуда. Вместо того чтобы создать класс с деструктором
> и использовать по классике, им нужны всякие деферы.
То есть для очистки ресурсов нужно втаскивать ООП в язык? Вы из какой палаты, товарищ?
| | |
| |
| 3.121, Ананоним (?), 20:22, 02/03/2026 [^] [^^] [^^^] [ответить]
| –1 +/– |
С царской палаты я. ООП в языке уже есть, C++ называется. Просто вы там не тот инструмент выбрали, коль вам так нужна автоматика очистки.
| | |
| 3.122, Аноним (125), 20:28, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> То есть для очистки ресурсов нужно втаскивать ООП в язык?
А языках без gc ресурсы по-другому и не очищаются: либо деструкторы (и классическое ООП им не обязательно), либо 100500 раз ручками пишешь defer.
| | |
| |
| 4.136, Сладкая булочка (?), 22:01, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
>> То есть для очистки ресурсов нужно втаскивать ООП в язык?
> и классическое ООП им не обязательно
В сообщении, на которое был ответ https://www.opennet.me/openforum/vsluhforumID3/139378.html#81 говорилось именно про классы с деструктором
> Вместо того чтобы создать класс с деструктором и использовать по классике, им нужны всякие деферы.
В gcc уже есть расширение, которое позволяет через атрибут привязать к объекту указатель на функцию для очистки.
| | |
| |
| 5.147, Аноним (125), 23:56, 02/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> В gcc уже есть расширение, которое позволяет через атрибут привязать к объекту указатель на функцию для очистки.
Во-первых, оно работает только для объектов на стеке. Для композитных объектов, вложенные объекты тебе придется по-классике ручками удалять.
Во-вторых, "уже есть" не GCC-расширение, а именно деструкторы в C++. С 80-х годов уже есть. GCC-расширение - чистой воды костыль, причем вендорлочный, в отличие от деструкторов C++.
| | |
| |
| 6.148, Сладкая булочка (?), 00:11, 03/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
>> В gcc уже есть расширение, которое позволяет через атрибут привязать к объекту указатель на функцию для очистки.
> Во-первых, оно работает только для объектов на стеке.
Как и defer также только для Scope-based resource management.
| | |
| 6.149, Сладкая булочка (?), 00:30, 03/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Для композитных объектов, вложенные объекты тебе придется по-классике ручками удалять.
А как вы в С будете неявно создавать композитные объекты? У вас будет какой-нибудь Foo *foo_new(), который будет неявно что-то там делать. Очевидно будет и void foo_free(Foo *f), вот вы и пишете в своей функции
Foo *f = foo_new();
defer foo_free(f);
И, в отличите от defer, для атрибутов можно одну и ту же функцию переиспользовать. Вот пример
_cleanup_free_ char *subvolume = NULL, *parent = NULL;
_cleanup_close_ int fd = -EBADF;
| | |
| |
| 7.152, Аноним (125), 00:46, 03/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> А как вы в С будете неявно создавать композитные объекты?
Речь шла не о том, чтобы их неявно создавать, а о том, чтобы они автоматом удалялись с родителем.
| | |
|
|
|
|
|
|
| 1.97, Аноним (99), 19:13, 02/03/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– | |
> Добавлена поддержка именованных циклов, позволяющих присваивать имена циклам и оператору switch
О, круто! Ещё надо присваивать имена присвоениям переменных и присвоениям имён циклам, операторам switch и присвоениям переменных.
> которые можно указывать в операторах break и continue для явного определения цикла, из которого производится выход.
Поперёк вложенности? Это ещё более круто! Это выведет возможности по наведению бардака в коде на совершенно новый, ранее недосягаемый уровень!
| | |
| 1.104, Аноним (86), 19:23, 02/03/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– | |
>Для включения следует использовать флаг "-fsanitize=alloc-token".
Без поддержки в валгринде бесполезно.
| | |
| 1.133, Аноним (133), 21:49, 02/03/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Он до сих пор более жирные бинарники генерирует чем gcc? А то я попробовал собрать u-boot для allwinner'а через clang 21. По сравнению с gcc 14 u-boot spl получился 22 кб, почти в лимит 24 вложился, против 16 кб в gcc.
| | |
|