>Я тебе даже номера искомых пунктов из "стандарта" си дал....которые ничего не пруфают. Хорошо, давай разжую для самых маленьких. Тезис "Спецификация бесполезна если там куча оговорок", в данном контексте, по сути состоит из следующих двух тезисов:
1. В спецификации КУЧА оговорок -> требуется пруф, что их действительно КУЧА, а не полтора частных случая. Тебе также следует привести конкретное определение, что вообще считается КУЧЕЙ, а что нет. В противном случае, я вынужден констатировать, что куча тут только у тебя в штанах.
2. Если в спецификации есть <некое количество> оговорок, то она бесполезна -> требуется пруф, что заданное количество оговорок коррелирует с полезностью спецификации.
>Ну-ну. А на выходе всё равно получается хз как))
А ещё можно научиться читать. Советую лично тебе воспользоваться этим советом. По первой ссылке:
>>Status: RESOLVED INVALID
И предъява там вообще не к гцц, а к шлангу. К тому самому шлангу, который от ллвм-проджект, да-да. То есть, халатность по отношению к разработке LLVM вполне можно выставлять как упущение ржавчинолюбов, которые пользуются, как ни странно, поделием основанным именно на б-гомерзком фронте плюсового LLVM API. Ну и, кстати:
>>Our implementation-defined behavior is defined by our implementation
То есть, получается, что не "хз как", а вполне себе implementation-defined. А следующие две ссылки на стак вообще ничего нового не демонстрируют и, как следствие, не пруфают. Ты солгал, получается.
>А потом у тебя "переносимый код" спокойно себе компилируется, но результат получаешь другой))
Используешь IDB/UB = ССЗБ, ответственность за действия целиком на тебе. А если всё-же следовать стандарту, то код действительно получается переносимым и компилируется в предсказуемый вид на любой архитектуре, которой больше чем одна (если кто-то вдруг не знал). Что там кстати с поддержкой архитектур в rustc? А, точно, в tier 1 по прежнему полторы калеки, как жаль...
>Ох сколько уязвимойстей было из-за того что в сришечке переполнение signed это UB)))
Спасибо за демонстрацию столь феноменальных навыков построения причинно-следственных связей, но в реальности причиной уязвимостей является некомпетентность/невнимательность программиста, а не дизайн инструмента. Или ты уже бежишь призывать отказываться от экскаваторов, потому что на нём можно случайно переехать человека? Впрочем, как *показывает практика*... github[dot]com/Speykious/cve-rs
>И компилятор, по хорошему, может просто заменить UB на noop.
Может, но не должен. На то оно и UNDEFINED.
>Но разрабы компиляторов конечно так не сделали, потому что
в отличии от опеннетных экспертов понимают, зачем вообще оно существует. Это тебе домашнее задание, узнать предназначение UB. Предвосхищая доводы в стиле "чтобы сделать плохо миру, ведь сишники ненавидят человечество": нет, это ложный ответ.
>На самом деле, если знать историю си и то, как принимался этот "стандарт", то сразу понятно почему так сделали.
Тебе - нет, не понятно. Иначе бы занялся делом, а не позорился в комментариях.
>О, так оказывается в Стандарте есть обязательное к исполнению и не обязательные))
Фантазировать прекрати или хотя бы читать научись.
>Причем сам стандарт это не определяет, это решают имплементирующие его.
Имплементирующие стандарт решают что имплементировать, а что нет. Для тебя это неожиданность?
>Да, штука неприятная, не спорю.
Ахах, понимаю, UB в C - это "ужас, срочно переписать весь код на другом языке!", а ФУНДАМЕНТАЛЬНАЯ недоработка в дизайне - это "ну, штука неприятная, гхм пук". Сектанты такие сектанты.
Не волнуйся, в расте ещё множество подобных весёлых "неприятных штук", например, протекющий унсейф контекст в сейф через лямбды: play[dot]rust-lang[dot]org/?version=stable&mode=debug&edition=2021&gist=9d167c7dd188c2995d550474fa28107e