пока что только про нее отзывы слышал
ну я же говорю. с ней на расте может писать даже такой питонист как я, не нюхавший крестов
Это значит, что компилятор проверяет условия, за которыми в C/C++/Zig нужно следить самому. Насколько это круто? Кому как.
Было бы классно, если бы это было реализовано. 😉
Ну я например планирую реализовать это в плюсах когда разберусь с исходниками кланга. С++ как язык интересен тем что многие вещи в стандарте прописаны как UB что значит что поведение в стандарте не прописано и отдано на откуп компилятору. То есть можно написать свое поведение когда при возвращении ссылок на локальные переменные они продолжат жить дальше навернуть поверх этого лайфтайм-анализ и получится тот самый lifetime inference по ссылке выше и при этом это не будет нарушением стандарта с++ 😉
> многие вещи в стандарте прописаны как UB что значит что поведение в стандарте не прописано и отдано на откуп компилятору Гм... Я бы посоветовал для начала выяснить разницу между Undefined Behaviour и Unspecified Behaviour.
уб можно доопределить
Ага, доопределить можно, а вот писать нельзя. 🤦♀️
если компилируешь с гцц то можно
И в том и в том случае стандарт не говорит что должен делать компилятор, то есть авторы стандарта не смогли договориться о желаемом поведении и вместо того чтобы фиксировать поведение с которым вторая сторона будет не согласна пометили это как UB и отдали это на откуп компилятора чтобы каждый пользователь С++ смог настроить поведение компилятора на свой вкус
Я же не спрашивал Ваши фантазии на тему Undefined Behaviour? Что это такое и какие последствия имеет однозначно написано уже много раз. То, что Вы отказываетесь это понимать и желаете интерпретировать как Вам нравится — Ваше дело. Но при компиляции такого кода реальными компиляторами будут сюрпризы.
И мне нравиться такое развитие языка программирования - когда язык развивается не в угоду вкусов каких-то отдельных авторов или участников коммитета а когда язык представляется больше языковым фреймворком - когда стандарт добавляются лишь фичи с которыми будут согласны все а все остальное можно настроить под свои вкусы
В последний раз для тех, кто не в курсе. > UB это одно из валидных состояний кода а не ошибка Undefined Behaviour — это ошибка программиста, это такой код, который запрещено писать, и компилятор реально полагается на то, что кода с UB ему никто никогда не подсунет как на аксиому. На этом считаю тему закрытой.
Ок, закрываем тему, добавлю только что я уже неоднократно поднимал эту тему @procxx чате а там народ как раз считает что UB это не ошибка а возможность для оптимизаций (иначе если бы UB считался за ошибку то такие программы компилятор просто не скомпилировал бы из-за ошибки в коде)
Обсуждают сегодня