аргумент про то что с89 не актуален не принимается?
Не принимается. Всего год назад это была последняя, самая новая версия стандарта C, которая поддерживалась одним известным компилятором. Неправильная компиляция программ на единственной версии языка, которую ты поддерживаешь явно никого не красит, но даже если твой компилятор слегка посовременнее, отказываться от поддержки единственного диалекта, который многим из твоих пользователей доступен… несколько некрасиво.
Но это даже не самое главное. Я сейчас не обсуждаю вопрос мотивации. Я просто хочу устновить тот факт, что разработчики компиляторов являются саботажниками (без кавычек, заметим: классическое определение: умышленное неисполнение или небрежное исполнение определённых обязанностей, скрытое противодействие осуществлению чего-либо).
Даже если принять во внимание то фантастическое объяснение, что после вызова realloc указатель, внезапно, начинает указывать на элемент за концом массива (любому нормальному человеку, не саботажнику, в общем-то ясно, что это высосанная из пальца интерпретация, предназначенная оправдать чушь, которую творят компиляторы), то стоит признать что описание этого поведения, мягко скажем, сделано небрежно.
Придумать такое можно только ради оправдания саботажа, никак не для чего-то ещё.
Кстати, а вы можете привести какие-то другие примеры, где компиляторы ломают код без UB?
Я — нет. Но саботажники, слава богу, сделали это за меня. Откройте proposal и найдёте там примеры того, как разные компиляторы ломают валидные программы. Вместе с предложением задним числом объявить эти программы невалидными. С помощью добавления изменений в соотвествующий стандарт:
Ну вот function inlining ломает программы если в этой функции среди параметров есть эксклюзивный (restrict) указатель. Ну или ломал раньше, но новостей о починке я не видел.
Всё, что можно сделать - это разделить UB на “хорошие” и “плохие”. Но всем пофиг: разработчики компиляторов нифига не заинтересованы в этом (они, наоборот, новых UB добавтить хотят), “инжинерные программисты” пишут не на C или C++, а на конкретной версии конкретного компилятора, а те, кто уже понял во что превратились C и C++ - переходят на Rust.
Это потому что вы интуитивно отметаете программы с UB - с теми, которые вам кажутся настоящими, “плохими” UB, которые программист уж точно не будет допускать. Но возьмите классику жанра: https://godbolt.org/z/9hfPeWrhM
Много вы опитимизаций можете придумать, которые подобные программы оставят работоспособными? И да, с function inilining, всё легко может сломаться (как, собственно, в clang и происходит).
В Китае на протяжении десятков лет возрастала потребность в таких специалистах, росли и их зарплаты, отсюда всё больше молодых людей решали обучаться этой профессии, а потом всё больше людей получали опыт реальной работы.
В США же наоборот, десятки лет падал спрос…
Разработчики всех остальных распространённых браузеров уже реализовали EME, и мы хотели бы исключить вероятность, что, когда это станет нормой, люди не смогут получить доступ к такому базовому интернет-контенту, как голливудские фильмы, просматриваемые в потоковом режиме с использованием Firefox. Мы также не хотим, чтобы создалась ситуация, при которой пользователи Firefox были бы вынуждены использовать другие браузеры для основополагающих действий, связанных с использованием интернета. DRM and the Challenge of Serving Users (blog.mozilla.org)
Спасибо, почитаю. Сам читаю Авантюриста (весь текущий и будущий бардак впечатляюще расписал в подробностях еще прошлым летом), Полюха (немного со странностями, но прогнозы сбываются), ну и ворандпис как источник новостей. Еще недавно читал какую-то древнюю (несколько лет прошло) статью Панарина — в общих чертах описаны сегодняшние события, поразился. Ссылки по запросу или в гугле во избежание.
Плохая же у вас память. GCC, так-то, может выдать список проходов: https://godbolt.org/z/16jYGqGqK
Их там больше 7 и даже больше 77.
А вот зато компионент в GCC меньше 7 (front-end, tree-ssa, rtl - это если больгие обсуждать, каждый из компонент делится на кучу частей поменьше).
Потому откуда вы это сакральное число взяли - загадка.
Не принимается. Всего год назад это была последняя, самая новая версия стандарта C, которая поддерживалась одним известным компилятором. Неправильная компиляция программ на единственной версии языка, которую ты поддерживаешь явно никого не красит, но даже если твой компилятор слегка посовременнее, отказываться от поддержки единственного диалекта, который многим из твоих пользователей доступен… несколько некрасиво.
Но это даже не самое главное. Я сейчас не обсуждаю вопрос мотивации. Я просто хочу устновить тот факт, что разработчики компиляторов являются саботажниками (без кавычек, заметим: классическое определение: умышленное неисполнение или небрежное исполнение определённых обязанностей, скрытое противодействие осуществлению чего-либо).
Даже если принять во внимание то фантастическое объяснение, что после вызова realloc указатель, внезапно, начинает указывать на элемент за концом массива (любому нормальному человеку, не саботажнику, в общем-то ясно, что это высосанная из пальца интерпретация, предназначенная оправдать чушь, которую творят компиляторы), то стоит признать что описание этого поведения, мягко скажем, сделано небрежно.
Придумать такое можно только ради оправдания саботажа, никак не для чего-то ещё.
Я — нет. Но саботажники, слава богу, сделали это за меня. Откройте proposal и найдёте там примеры того, как разные компиляторы ломают валидные программы. Вместе с предложением задним числом объявить эти программы невалидными. С помощью добавления изменений в соотвествующий стандарт:
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2577.pdf
Ну вот function inlining ломает программы если в этой функции среди параметров есть эксклюзивный (restrict) указатель. Ну или ломал раньше, но новостей о починке я не видел.
Тоже мне, нашли панацею.
Во-первых “cc1: warning: command-line option '-finit-local-zero' is valid for Fortran but not for C”.
А во-вторых даже если обнулять - всё равно оптимизации невозможны: https://godbolt.org/z/chaxze71P
Всё, что можно сделать - это разделить UB на “хорошие” и “плохие”. Но всем пофиг: разработчики компиляторов нифига не заинтересованы в этом (они, наоборот, новых UB добавтить хотят), “инжинерные программисты” пишут не на C или C++, а на конкретной версии конкретного компилятора, а те, кто уже понял во что превратились C и C++ - переходят на Rust.
Это потому что вы интуитивно отметаете программы с UB - с теми, которые вам кажутся настоящими, “плохими” UB, которые программист уж точно не будет допускать. Но возьмите классику жанра: https://godbolt.org/z/9hfPeWrhM
Много вы опитимизаций можете придумать, которые подобные программы оставят работоспособными? И да, с function inilining, всё легко может сломаться (как, собственно, в clang и происходит).
Во-во. "Не найдено такое-то слово". Я его зачем по-твоему писал?)
По идее для любой работы с utf-8 строками где раньше использовался char.
Еще меньше проблем с "aliasing".
В США же наоборот, десятки лет падал спрос…
Третий закон ньютона:)
В 3ем сезоне они показали это:) ru.youtube.com/watch?v=QCzD5uhSViY
Можно начинать смотреть сразу с середины
kingdesk.com/projects/wp-hyphenate/
…русский язык в комплекте.