Филипп Пизло (Filip Pizlo) представил на конференции SPLASH'24 открытый C/C++ компилятор Fil-C, предоставляющий защиту от проблем, вызванных ошибками при работе с памятью. Проект нацелен на обеспечение полной совместимости с существующим кодом на языках C и C++ - для обеспечения безопасной работы с памятью достаточно просто пересобрать существующий код. Компилятор построен с использованием компонентов от проекта LLVM и распространяется под лицензией Apache 2.0. Runtime поставляется под лицензией BSD. В отличие от недавно анонсированного проекта TrapC, находящегося на стадии проектирования, компилятор Fil-C уже доведён до готовности сборки существующего кода...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=62241
А визгу то стояло на опеннете что сишка небезопасная, а всего то надо было сделать безопасную сишку и никакой раст больше никогда никому не необходим.
да, всего-то.. на расте это гарантируется типами и маркерами, а на этом..
Да гарантируется что боров запрещает объектам мутировать и делает так что программирование превращается в борьбу с этим самым боровом, а не в получение работающего продукта.
борров это про мувинг семантику и заимствование структуресли вы называете рабочий продукт в котором двойное освобождение и утечки памяти то пожалуйста
другие вещи борров не решает
Это тоже самое что построить такой город в котором на входе и выходе каждого здания и в общественном транспорте поставить рамки, рентген и проверять каждого жителя не мутировал ли он после выхода из дома. А если по ходу надел шапку или сходил в туалет считать что он мутировал и собирать его гарбедж коллектором вместе во всеми связанными объектами. А вдруг он мутировал получив бомбу. Причём если он сразу вышел из дома с бомбой к нему вопросов нет. Сколько раз уже пытались построить такой город с названием то Серво, то Редокс получается ерунда, не выходить каменный цветок.
> Это тоже самое что построить такой город в котором на входе и выходе каждого здания и в общественном транспорте поставить рамки, рентген и проверять каждого жителя не мутировал ли он после выхода из дома.Хм... ты ж только, что описал Город-СИ.
Где вышедший из дома гражданин, может через void* мутировать в автобус, потом в боевой вертолет, а потом залезть в голову соседу (надеюсь, что только в голову) и отстрелить обоим ноги.> А если по ходу надел шапку или сходил в туалет считать что он мутировал и собирать его гарбедж коллектором
В расте есть ʼгарбедж коллекторʼ?
Это же просто новый уровень "кекспертизы" опеннета!> Сколько раз уже пытались построить такой город с названием то Серво, то Редокс получается ерунда, не выходить каменный цветок.
На редоксе уже дум играется - для продакшена готово)
Сколько там клоудфарь через свои раст серваки пропускает трафика? 30% от мирового?
Ну да, ну да "на расте ничего не написано" (с)
Дум даже на калькуляторе без ОС играется. А все остальное это называется свобода передвижения в конституции даже такое записано. Если мне нужно соседу в голову я просто иду к соседу в голову. И его на это согласие это очень опционально штука. И в такой город ты найдешь очень много программистов и строителей, которые тебе отстроят и запрограммируют.
> А все остальное это называется свобода передвижения в конституции даже такое записано.Хахаха, ты про ту смешную бумажку?
А ну давай-ка свободно передвинься в Ново-Огарёво)> Если мне нужно соседу в голову я просто иду к соседу в голову. И его на это согласие это очень опционально штука.
Совершенно не удивлен.
> И в такой город ты найдешь очень много программистов и строителей, которые тебе отстроят и запрограммируют.
А потом еще 30 лет - то водопровод течет, то запертные двери открываются если сделать 28 приседаний, то трамвай в дом вьехал, то банк отправил все деньги на случайный счет...
Зато все эти бракоделы при деле, можно годами фиксить узявимости и баги, которые сами и добавили.
Ты в таком городе живёшь и почему то не переезжает в безопасТный. Даже если бы такой город существовал он был бы тебе не по карману.
Переезд уже идёт полным ходом. Гугл, например, часть Андроида пишет на Rust.
Опять твое воображение. Если гюгде то и идёт переезд то только в лозунгах и дутых отчётах.
В смысле, моё воображение? Есть же, вроде, исходный код, можно самому посмотреть.
Если переезд так и будет продолжаться (https://www.opennet.me/opennews/art.shtml?num=58249) (21% НОВОГО кода на Rust и 79% на С/C++), то боюсь ни я, ни Вы не доживёте до этого счастливого момента.
> Если переезд так и будет продолжаться (https://www.opennet.me/opennews/art.shtml?num=58249)
> (21% НОВОГО кода на Rust и 79% на С/C++),Статья староватая, то был просто пробный шар.
Вот последние их заметки
security.googleblog.com/2024/09/eliminating-memory-safety-vulnerabilities-Android.html
Они считают, что если код окаменел - то там ошибок меньше.
И можно пока не переписывать.Хотя они делают усилия и для улучшения безопасности старого кода на С++
security.googleblog.com/2024/10/safer-with-google-advancing-memory.htmlНу и пробуют использовать в прошивках
security.googleblog.com/2024/09/deploying-rust-in-existing-firmware.html> то боюсь ни я, ни Вы не доживёте до этого счастливого момента.
Я собираюсь жить долго и увидеть как в проектах появляется плашка "new code - rust only")
> Я собираюсь жить долго и увидеть как в проектах появляется плашка "new code - rust only")Очевидно, вы мало смотрели на свободные проекты. Наиболее успешные используют кучи языков, как, например git.
Если кто-то может добавить новую функциональность, то приоритет не язык или безопасность, а функциональность. Потом, может быть у кого нибудь когда-нибудь дойдут руки сделать новую реализацию на чем-либо другом. Но применена она будет только если даст какое-либо преимущество. Виртуальная безопасность таковым не считается.
Так что: "надежды юношей питают".
> Если кто-то может добавить новую функциональность, то приоритет не язык или безопасность, а функциональность.А потом оно так и тащится с уязвимостями и костылями.
> Потом, может быть у кого нибудь когда-нибудь дойдут руки сделать новую реализацию на чем-либо другом.
И сообщество будет бухтеть "опять переписываете!"
> Но применена она будет только если даст какое-либо преимущество.
Кому? Если я завтра сяду переписывать ядро на брейнфак.. то кто мне запретит?
> Виртуальная безопасность таковым не считается.
А "виртуальная" она по чьему мнению?
У всяких гуло-амазоно она вполне реальная.> Так что: "надежды юношей питают".
Угу, а потом они превращаются в дидов и противятся новому.
> А потом оно так и тащится с уязвимостями и костылями.Смирись - по другому не бывает.
> И сообщество будет бухтеть "опять переписываете!"
Именно! Поэтому любое переписанное должно дать то - что не могло непереписанное.
> Кому? Если я завтра сяду переписывать ядро на брейнфак.. то кто мне запретит?
Никто. Только и в основную ветку никто не возьмет. Играйся в песочнице.
> А "виртуальная" она по чьему мнению?
По опыту разработки проектов сообществами.
> У всяких гуло-амазоно она вполне реальная.
Вот там да. Менеджеры могут нагнуть разработчиков в любую сторону. Но именно в крупных корпорациях система чаще всего дает сбои. Она кривая насквозь. Менеджерам надо делать вид разбирающихся в вопросе и внедрять любую хрень (польза не важна).
Поинтересуйтесь как корпорации разрабатывали месенджеры. Куча выброшенных на свалку денег. И в итоге все покупают нарабатки мелких контор.
> Смирись - по другому не бывает.Бывает)
Смиряться с бракоделием я не собираюсь.
Надеюсь законодатели в ЕС не подкачают, и введут ответственность за написанное (если денежки берешь).> Именно! Поэтому любое переписанное должно дать то - что не могло непереписанное.
Правильно! Ну так переписывание на раст дает то что не могут сделать ни СИ, ни плюсы.
А именно уменьшение ошибок памяти.> Никто. Только и в основную ветку никто не возьмет. Играйся в песочнице.
А если дядя спонсор вашего проекта настойчиво попросит?)
Не зря у LF есть платиновые и прочие спонсоры.
> По опыту разработки проектов сообществами.И что же это за проекты?
В андроиде - работает, у клоудфари - работате, куча всяких вейландовых композиторов - тоже работает.
Даже редокс кое-как работает.> Но именно в крупных корпорациях система чаще всего дает сбои. Она кривая насквозь.
Ты видел картину "с бородой - без бороды"?
Ну так вот без корпов получается только Хурд.
А с корпами - линукс.> Поинтересуйтесь как корпорации разрабатывали месенджеры. Куча выброшенных на свалку денег.
> И в итоге все покупают нарабатки мелких контор.Не вижу проблемы. Если есть возможность собрать шишки, а потом купить подходящее...
Фишка в том, что без корпов тонны перспективных мессенджеров уже загнулись.
> Надеюсь законодатели в ЕС не подкачают, и введут ответственность за написанное (если денежки берешь).Надеюсь не подкачают. Флаг им в руки! Верной дорогой идут!
> А именно уменьшение ошибок памяти.
Опять. Не переносите свое видение на всех. Для вас это важнее функциональности. С чего вы решили, что для других то же?
> И что же это за проекты?
Все проекты без заточки на конкретный язык программирования. Как вариант libreoffice.
Погугли multi program languages projects.
> Не вижу проблемы. Если есть возможность собрать шишки, а потом купить подходящее...
> Фишка в том, что без корпов тонны перспективных мессенджеров уже загнулись.Это лишь говорит о том, что ты не видишь. Корпорации не умеют в разработку. Одной из причин является именно система продвижения менеджеров, что либо внедривших (польза не важна, на бумаге из любой особенности преимущества можно высосать).
И да. Мы живем в мире корпораций. Где работает система патентов (система бонусов фаворитам королей переделанная в систему бонусов крупному капиталу).
Но это не значит что корпорации приносят пользу, это лишь значит что корпорации давят все вокруг.
> Опять. Не переносите свое видение на всех. Для вас это важнее функциональности.
> С чего вы решили, что для других то же?А эти другие вообще что-то решают? Их спрашивать будут?
Тут есть классные примеры сисметмд и вейланда, где соплей было много, а потом почти все довольны.> Все проекты без заточки на конкретный язык программирования. Как вариант libreoffice.
В противовес есть ядро линукс, которое мало того что (было) на безальтернативная сишка, так еще и с гнутыми ЕЕЕ.
> Это лишь говорит о том, что ты не видишь. Корпорации не умеют в разработку.
А у кого мелкомягкие купили винду? У кого эпл купил ios?
Почему корпорации успешно пишут 80% кода ядра?
Я уже насмотрелся на софт, который разрабатывают сообщество.
Типичное "лебедь-рак-щука".> И да. Мы живем в мире корпораций. Где работает система патентов (система бонусов фаворитам королей переделанная в систему бонусов крупному капиталу).
Странно. В моем мире патент имеет срок годности, а потом переходит в общественное достояние.
> Но это не значит что корпорации приносят пользу, это лишь значит что корпорации давят все вокруг.
Можно посмотреть на союз, где без корпораций и рыночной конкуренции выпускали такой хлам, что смотреть было страшно.
Вы часом не брат юзера ПрофессорНавигатор?А вообще - это старая песня.
Напоминает либертарианцев у которых "государство это зло", но никакого примера другого успешного объединения людей они привести не могут."Вы просто строите неправильный коммунизм" (с)
> А эти другие вообще что-то решают? Их спрашивать будут?Те кто не спрашивают - теряют добровольных разработчиков.
> А у кого мелкомягкие купили винду? У кого эпл купил ios?
Вы не видитие косяков в развитии как той так и другой вызванных как раз необоснованным внедрением всякой откровенной хни?
То что они в таком виде заняли большую долю рынка виновата как раз система корпораций.
> Странно. В моем мире патент имеет срок годности, а потом переходит в общественное достояние.
И как этот факт меняет ситуацию? Он совсем не отменят того, что патенты - это система бонусов крупному капиталу. Очень хороший механизм для того, что бы раздавить не обладающих большими деньгами конкурентов.
> Можно посмотреть на союз, где без корпораций и рыночной конкуренции выпускали такой хлам, что смотреть было страшно.
Смешались в кучу кони, люди. Корпорации отдельно - рыночная конкуренция отдельно. Это две очень далекие друг от друга сущности. Так где не хватает силы задавить конкурентов патентами, включают другие нерыночные механизмы, такие как лоббирование (когда принимают законы и подзаконные акты выгодные конкретным корпорациям).
> Напоминает либертарианцев у которых "государство это зло", но никакого примера другого успешного объединения людей они привести не могут.
Вы из прошлого тысячелетия вещаете?
Как вам Китай? У него корпорации ходят под прицелом. Любая оплошность приводит к проблемам. И что мы имеем?
То же что у них та же система патентов - так "с волками жить - по волчьи выть".
И да эта система практически не работала в период бурного развития.
> Те кто не спрашивают - теряют добровольных разработчиков.А вы уверены что они нужны?
Вот вам лично нужен был бы сотрудник (даже бесплатный) который сегодня работает, а завтра нет, а послезавтра вообще в запой на пару недель уйдет?
Как у вас будет с планированием разработки, релизов?Примите реальность - сейчас программные продукты настолько усложнились что написать что-то в одиночку практически невозможно.
Раньше да, можно написать утилиту на 10к LOC и стать знаменитым.
А сейчас нужны люди, которые могут посвещать проекту достаточно времени, вплоть до fulltime разработки.Это, кстати, подтверждается тем, что 80% кода ядра пишут разработчики на зарплате корпов.
И что успешные проекты без их участия можно пересчитать по пальца одной руки.> Вы не видитие косяков в развитии как той так и другой вызванных как раз необоснованным внедрением всякой откровенной хни?
А кто определяет что такой ХНЯ?
Юзеров устраивает? Оно лучше чем все остальное?> То что они в таком виде заняли большую долю рынка виновата как раз система корпораций.
В каком "таком виде"?
Винда просто работала из коробки. Надо 5 раз нажать кнопку "next" и ты просто пользуешься системой. Сравните это с линуксом тех же годов.А ios была одной из первых систем для смартфонов. То что все ломанулись копировать подходы, говорит о том что идея была удачной.
>> Напоминает либертарианцев у которых "государство это зло", но никакого примера другого успешного объединения людей они привести не могут.
> Вы из прошлого тысячелетия вещаете?О, у вас есть примеры негосударственного объединения людей?
> Как вам Китай? У него корпорации ходят под прицелом. Любая оплошность приводит к проблемам. И что мы имеем?
Не понял вопрос.
Как наличие патента на винду может замедлить линукс?
Корпорации тратят много денег на R&D и проверки тысяч гипотез.
Потом эксклюзивно владедеют технологией десяток-два лет.
А потом они передают ее всем.Это отличный способ мотивации вкладывать деньги в исследования, а финансовые запасы позволяют делать разные эксперементы и долгосрочные исследования.
> А вы уверены что они нужны?Вам, видимо, не нужны. Но не все такие как вы.
> А кто определяет что такой ХНЯ?
История.
> Юзеров устраивает? Оно лучше чем все остальное?
А вот это менеджеров совсем не волнует. И как правило, по всем параметрам хуже нормальных решений и реализаций.
> В каком "таком виде"?
> Винда просто работала из коробки. Надо 5 раз нажать кнопку "next" и ты просто пользуешься системой. Сравните это с линуксом тех же годов.Хороший пример. Метания: COM -> DCOM -> Net -> сервисы.
В то время как у linux: сервисы.
> А ios была одной из первых систем для смартфонов. То что все ломанулись копировать подходы, говорит о том что идея была удачной.
Идея вложить бабло в маркетинг и продавать запатентованные скругленные углы как разработку?
> Корпорации тратят много денег на R&D и проверки тысяч гипотез.
Корпорации тратят много денег на скупку всего что есть по дешевке и набору пулу патентов, которым потом и давят конкурентов. Иногда появляются новые ниши в которых пула патентов корпорации еще не на грабили. Вот там есть шанс у мелких компаний. Но корпорации быстро нишы закрывают.
>> А кто определяет что такой ХНЯ?
> История.Пока история определяет что десктопный линукс это 4% ХНЯ.
¯\_(ツ)_/¯> А вот это менеджеров совсем не волнует. И как правило, по всем параметрам хуже нормальных решений и реализаций.
Хм.. а чего ж эти реализации, которые по всем параметрам лучше, не стали популярными?
Неужели заговор?>> Винда просто работала из коробки.
> Хороший пример. Метания: COM -> DCOM -> Net -> сервисы.А как это касается пользователя?
Он как устанавливал на винде ворд, так и устанавливает.> В то время как у linux: сервисы.
И прдолинг)
Я помню как читал форумы, чтобы выяснить "какой ноутбук можно купить, чтобы были дрова"> Идея вложить бабло в маркетинг и продавать запатентованные скругленные углы как разработку?
Идея вложить в карман пользователя миникомпьютер.
Причем в удобном формфакторе и с простым получением программ и контента.> Корпорации тратят много денег на скупку всего что есть по дешевке
т.е финансируют разных удачников и неудачников, которые без денег корпорации возможно и не развились
>Вы не видитие косяков в развитии как той так и другой вызванных как раз необоснованным внедрением всякой откровенной хни?Обычные пользователи конечно же разбираются в технологиях которые внедряют корпорации. Это вот хакеры(как Столлман или Линус), не разбираются, но вот пользователи - да.
>Как вам Китай? У него корпорации ходят под прицелом. Любая оплошность приводит к проблемам. И что мы имеем?996?
>Тут есть классные примеры сисметмд и вейланда, где соплей было много, а потом почти все довольны.С "почти все довольны" вы загнули. Во-первых, ещё не все возможности в тот же самый вейленд внедрены/на него не все ещё программы портированы. И в некоторых случаях легче откатится в Xwayland. Во-вторых, особенно в корпоративных решениях это всё обрастает ужасающими костылями. Так что работы здесь ещё много.
>Напоминает либертарианцев у которых "государство это зло", но никакого примера другого успешного объединения людей они привести не могут.
>"Вы просто строите неправильный коммунизм" (с)Зато, когда такие люди успешно приводят примеры того, как по разному государства вмешиваются в определённые сферы, им говорят "это другое".
>Надеюсь законодатели в ЕС не подкачают, и введут ответственность за написанноеНадеюсь, что против бюрократов ЕС и Австралии программисты введут санкции, и даже приезжать не будут, чтобы не повторить ситуацию с Дуровым. Евродепутаты не являются людьми, которые разбираются в теории разработки, а вот ввести какую-то чисто бюрократическию процедру, с отрицательным смыслом - могут запросто.
>Я собираюсь жить долго и увидеть как в проектах появляется плашка "new code - rust only")Странная вещь. Лихо вы отсекаете кучу вещей, например, хаскеля, окамла и идриса.
Компьютеру свобода передвижения ненужна. Он - инструмент. А если честно, в реальности контролировать свободу передвижения очень полезно для безопасности общества и государства.
Какая кому разница что там нужно компьютеру. Свобода нужна программисту. А то что описано выше не контроль, а театр безопасТности. Контроль делается без всяких рентгенов и т.п.
> Компьютеру свобода передвижения ненужна. Он - инструмент. А если честно, в реальности
> контролировать свободу передвижения очень полезно для безопасности общества и государства.И именно поэтому было сказано что those who will give up essential liberty to obtain little temporary safety, deserve neither.
Совремненые слабаки зажравшиеся достижениями предков и воспринимающие некоторые вещи как данность - перестали ценить что имеют. А напрасно.
Если это город, населённый неадекватами (а в программировании это часто именно так, глядя на прорву CVE, поток которых не прекращается даже спустя много лет после написания кода), то вполне нормальный подход проверять каждого на предмет наличия оружия и до, и после.И нет, в Rust нет GC.
Раз нельзя назвать рабочим продуктом, то каким образов все это работало? От операционных систем, до стандартных приложений. И вы же, до появления раста, всем этим пользовались. Что с вами не так?
>каким образов все это работалоЧерез пень-колоду. На безрыбье и рак - рыба. Теперь выбор есть.
Ну дак и доведите до ума redox со всем альтернативным софтом на rust, что бы можно было сравнить с текущими осями и выбрать.
> Ну дак и доведите до ума redox со всем альтернативным софтом на
> rust, что бы можно было сравнить с текущими осями и выбрать.Че там с хурдом, уже довели до ума или без пары миллиардов от IBM и десятка лет упорной разработки тыщами разрабов (тоже финансируемых корпами) не выходит каменный цветок?
Хочешь сказать, что на Rust из ОС ничего готового нет и не будет?
А как тогда сравнивать?
> Хочешь сказать, что на Rust из ОС ничего готового нет и не будет?Нет, это ты сам себе придумал.
Попутно предлагая проделать много(десяти)летнюю работу тысяч человек.
> А как тогда сравнивать?А почему не хочешь сравнивать с хурдом?
Ну вон, тот же ведроид, в котором еще 2 года назад кода на расте было больше, чем в хурде вообще?
Или вон, nginx c кляудфлярной разработкой https://www.opennet.dev/opennews/art.shtml?num=62163, которую они "сами едят"?
Или амазоновский firecracker https://github.com/firecracker-microvm/firecracker (если есть с чем)?
свет клином что ли. Есть еще Asterinas
> Да гарантируется что боров запрещает объектам мутировать и делает так что
> программирование превращается в борьбу с этим самым боровом, а не в
> получение работающего продукта.С другой стороны это гарантирует что не попробуют освободить еще используемое получив dangling pointer или не сделают освобождение дважды, и тому подобне факапы. Так то нормальная идея вполне. С основной ее прелестью - zero cost как таковое, в рантайме.
Давно рекомендую всем адептам безопасТности надеть акваланг, спасательный круг запас еды на 10 дней, бронежилет и пробежать марафон 42 км на время. Зато во время марафона ты не утонешь, выживешь если заблудишься, и если в тебя будут стрелять больше вероятность выжить. Сплошная безопасТность. В Саус парке был такой тип который все время в спас жилете ходил по итогу утонул в театре. (И не в театре безопасТности)
Это, конечно, кривая аналогия. Но кекспертам местным нравится, потому что с логикой у них сплошные проблемы. Почему кривая? Потому что все абстракции в Rust ничего не стоят во время выполнения.
Ага только чтобы эти абстракции написать надо 10 программистов вместо 1 для одинакового результата. Зеро Коста не бывает, а тут и подавно.
Ровно наоборот. Это на дыряшке каждый раз люди велосипеды изобретают, пишут свои хеш-мапы. А потом ещё десятки лет находят в коде критические ошибки.
Так пишите на ocaml/haskell, на go в крайнем случае. Но нет, вот тянет почему-то писать всё на сях.
> Так пишите на ocaml/haskell, на go в крайнем случае. Но нет, вот
> тянет почему-то писать всё на сях.Потому что писать на ocaml/haskel - это вы сами такое. На этом реально полтора проекта, от отшибленых академов. И майнтенансу это не подлежит - ибо желающих вгружать половину мозга автора чтобы врулить в крутые абстракции на этом глобусе предсказуемо оказвается около ноля.
В этом смысле сишные проекты намного более живучие. По минимуму пропатчить может даже тот кто пришел недавно.
>На этом реально полтора проекта, от отшибленых академовВсе мои пет-проекты за последние пару лет на ocaml, немного haskell попробовал, но мне его вкус не понравился. Это ж надо было додуматься до того, чтобы отступы в языке сделать управляющими, как в питоне, и подобные мелочи.
>ибо желающих вгружать половину мозга автора чтобы врулить в крутые абстракции на этом глобусе предсказуемо оказвается около ноля.Я раз, что вы сами написали, что сишник обычный окамл/хаскель осилить не могут. В принципе я с вами согласен, но пишите тогда на go, для вас же язык делали, чтоб и думать не нужно было как в си, и память случайно не портилась.
>По минимуму пропатчить может даже тот кто пришел недавно.Когда я копаюсь в незнакомом коде на ocaml, я не рискую попортить память. Меня удивляет бесстрашие сишников.
> Все мои пет-проекты за последние пару лет на ocaml, немного haskell попробовал,
> но мне его вкус не понравился. Это ж надо было додуматься
> до того, чтобы отступы в языке сделать управляющими, как в питоне,
> и подобные мелочи.КМК, оно останется сугубо вашими пет-проектами и на том и на другом. Потому что желающих вкуривать в продвинутые абстракции чьего-то пет проекта будет предсказуемо около ноля. Это тот случай когда остальным может быть проще с ноля накатать, или взять что-то другое.
За всю мою жизнь я видел 1 применение окамла для чего-то минимально практичного - рефакторы по площади в Linux Kernel. Но это умеет 1 Julia Lawall или как там ее, с неким coccinelle. Для остальных это arcane art, но этот art где-то сильно сбоку и даже если носитель этого знания почит в бозе то ничего фатального не произойдет.
А если нечто написано на вот именно ocaml - то там при потере автором интереса ему наступает практически железобетонная амба, а для хаскела это вообще единственно виденный мной сценарий.
> Я раз, что вы сами написали, что сишник обычный окамл/хаскель осилить не могут.
А зачем? Мы решаем практические задачи. По каким-то своим причинам. Вгружать половину вашего мозга в мой ради какого-то захудалого пет-прожекта - контрпродуктивное убиение моего времени ни на что. И так считаю далеко не только я.
Где мне было надо - я за плюсерами весьма могучие абстракции раскрутил. Но то плюсеры. На этом можно делать prod-grade software. И там мучения оправданы, если удалось такой дредноут под себя подрихтовать, это довольно крутая ачивка во всех смыслах, от результата до демо "во как я могу" в виде который котируется в индустрии.
> go, для вас же язык делали, чтоб и думать не нужно
> было как в си, и память случайно не портилась.Я не пишу на го, такой парадокс :). Но как выглядят микросервисы на нем - да, это симпатично.
> Когда я копаюсь в незнакомом коде на ocaml, я не рискую попортить
> память. Меня удивляет бесстрашие сишников.Если я вообще не могу пропатчить код т.к. мне надо вгрузить сначала половину мозга того прогера - ну, окей, я этот код сотру и заново напишу или возьму что-то другое. Просто потому что так проще было, а всенепременно залезть на второй этаж используя намасленный столб, одев противогаз - не было для меня самоцелью. Я не гордый и по лестнице подымусь, или на лифте.
> Давно рекомендую всем адептам безопасТности надеть акваланг, спасательный круг запас еды
> на 10 дней, бронежилет и пробежать марафон 42 км на время.Ну, вообще, если ты решил провести отпуск на море - это может быть не такая уж плохая опция.
Во всяком случае, плюсеров косплеящих такую логику - я видел. И да, у плюсов хватило расширяемости чтобы с ними что-то такое провернуть вообще без корежения компилера на каждый пшик.
> Зато во время марафона ты не утонешь, выживешь если заблудишься, и
> если в тебя будут стрелять больше вероятность выжить. Сплошная безопасТность.С другой стороны, если известно что в полях вокруг мины - взять миноискатель может быть не такой уж и плохой идеей. А уж если робот сам покатается и все мины пометит/уберет - вообще зашибись! Хотя можно конечно и прямо своей тушкой проверить, вон, кочка подозрительная, попрыгать на ней самое то, да? :)
> В Саус парке был такой тип который все время в спас
> жилете ходил по итогу утонул в театре. (И не в
> театре безопасТности)Ну так я и не предлагаю юзать редсдохи. Это однако не мешает с314ть некоторые удачные и рациональные идеи!
Причем тут отпуск когда тут марафон. Где много людей собралось и бежит по одному маршруту кто быстрее. То что подходит для отпуска на минном поле не подходит для марафона, пойми. То что подходит для хеллоуворлда не подходит для большого проекта такого как движок браузера.
>То что подходит для хеллоуворлда не подходит для большого проекта такого как движок браузераА в Клаудфлэр, Гугл, Микрософт, Дропбокс, Дискорде, Мозилле, Амазоне об этом знают? :)
> Причем тут отпуск когда тут марафон. Где много людей собралось и бежит
> по одному маршруту кто быстрее. То что подходит для отпуска на
> минном поле не подходит для марафона, пойми. То что подходит для
> хеллоуворлда не подходит для большого проекта такого как движок браузера.Весь девелоп софта всерьез - марафон и есть. Исключение только одноразовые поделки, в общем от. И там фиг знает - попадется по пути океан, придется через него фигачить. Или сойти с дистанции - и тогда вас завтра в интерьере не будет, рассаду выращивайте, или что там.
>Давно рекомендую всем адептам безопасТности надеть акваланг, спасательный круг запас еды на 10 дней, бронежилет и пробежать марафон 42 км на времяПредлагаю адептам си следующие тезисы: тормоза придумали трусы. А давайте перила уберём, так как они паркуру мешают. И вообще, на их изготовления стройматериалы тратятся. И с балкона, на 24 этаже тоже перила уберём. И изоляцию с высоковольтных вещей тоже снимем.
только cost совсем не zero
Zero только в случае если программируешь и запускаешь этот код не ты)
Конечно, zero во время выполнения. Да, на компиляцию может больше времени уйти. Хотя, учитывая, как непросто порою ловятся ошибки работы с памятью в дыряшке - совсем не факт.
> только cost совсем не zeroВ случае именно борова, в именно рантайме - кост будет близким к zero, ибо это в целом про компил тайм проверки и анализ времени жизни переменных, грубо говоря.
Тут кто-то ссыль постил, с примерами - и даже образцами где сейчас хрустовский боров перестраховывается, заставляя явно маркировать некоторые вещи, хотя это могло бы быть и не обязательным в тех случаях.
Перешел на rust с плюсов. Точнее пишу на обоих. Пока пытался писать на rust по плюсовому, то да, была борба с боровым. Как только достиг дзена, боров потрясающе помогает. Пишешь неделю код, потом запускаешь и с первого запуска почти без багов.
Яркое описание того почему на расте нет софта из первых рук. Это я тут даже про тесты не пишу.
Ничего не понял. Какие первые руки? Какие тесты ты не пишешь?Отсутствие софта для юзера на расте? А firefox разве нет?
В целом я бы не стал писать юзерский софт на расте. По одной простой причине - у него нету стабильного ABI, а поэтому его не возможно поставлять с разделяемыми библиотеками - только с теми, которые написаны на других языках со стабильным ABI и к которым есть биндинги в раст. Растовские крейты нужно пересобирать вместе с софтиной. Это плохо в плане обновления после найденных уязвимостей и прочее. Кроме того сам бинарь получается весьма увесистый.
А вот для бэкэнда - отличнейший язык!
За сколько вы напишете тот же самый код на С/C++?
Медленнее и с большим количеством ошибок. И Гугл, и Микрософт уже проверили.
> Медленнее и с большим количеством ошибок. И Гугл, и Микрософт уже проверили.Эпические галеры^W места для работы рабов^W успешных специалистов...
Правда, сколько галерщика не переименовывай и не раздавай ему суть - менталитет у него останется характерный. Как это так, не дают бесплатный барак и надо самому себе еду добывать? Ну и гадость эта ваша свобода! Да и кнутователь у нас - добрый малый, не так уж сильно лупит, даже шкура не слезает.
"Смешались в кучу кони, люди". Мы тут менталитет программистов обсуждаем или объективные достоинства того или иного языка программирования?
> Эпические галеры^W места для работы рабов^W успешных специалистов...Даже интересно, а где ж работаешь ты?
> Правда, сколько галерщика не переименовывай и не раздавай ему суть - менталитет у него останется характерный.
Мы говорим про менталитет или про языки программирования?
> Как это так, не дают бесплатный барак и надо самому себе еду добывать? Ну и гадость эта ваша свобода!
О, по моему опыту, так обычно говорят какие-то васяны-стартаперы, которые "зачем ты горбатишься на дядю!", а потом "моя супер-мега компания из меня одного разорилась!!! плак-плак (;_;)"
Как показала история реально крутые вещи делались корпорациями - например сколько всего придумали в BellLab.> Да и кнутователь у нас - добрый малый, не так уж сильно лупит, даже шкура не слезает.
Sad to be you (c)
Вот в моей компании кнутователя нету, как и овертаймов. Наверное неправильная галера.
Но да, у тебя есть свобода работать в каком-то подвальчике и убеждать себя что "зато я свободен! Свободен от денег, современных технологий и здравого смысла"
> Даже интересно, а где ж работаешь ты?А я сам на себя работаю. Е... я ваши галеры и "благодетелей" - been there, done that, добавки не надо, спасибо!
> Мы говорим про менталитет или про языки программирования?
Сообщество имеет отношение к ЯП и обвесу вокруг. И лично мне хрустики как сообщество в целом - не нравятся. Сборище корпоративных винтиков.
> О, по моему опыту, так обычно говорят какие-то васяны-стартаперы, которые "зачем ты
> горбатишься на дядю!", а потом "моя супер-мега компания из меня одного
> разорилась!!! плак-плак (;_;)"По моему опыту так говорят господа с синдромом утенка, пытающихся доказать что вон то единственный вариант. А я со своей стороны считаю что у меня больше личной свободы. Даже если это и подразумевает некий гемор взамен, это как раз и есть часть взрослой полноценной жизни, когда решения принимаешь - сам. И получаешь результат по итогам.
> Как показала история реально крутые вещи делались корпорациями - например сколько всего
> придумали в BellLab.Как показала история, за всеми открытиями и изобретениями как правило были вполне конкретные имена, представляющие из себя что-то отличное от ноля, без всяких мегакорп за спиной.
А некоторые так то и основали - эти самые корпы. И кто сказал что процесс остановился? Так и появляются корпы. Есть те кто их создает. Есть нонеймы под ногами.
> Вот в моей компании кнутователя нету, как и овертаймов. Наверное неправильная галера.
Это несколько образно. См. на господ типа поха. Его мышление иррационально - так что без манагера за спиной он не больно дофига своим ходом сделает. Все время находит какие-то фатальные проблемы, утыкается в них рогом, "задача нерешаема". И манагеры нужны - чтоыбы вышибать из таких состояний тех, кто сам на это не способен. Как-то так.
> Но да, у тебя есть свобода работать в каком-то подвальчике и убеждать
> себя что "зато я свободен! Свободен от денег, современных технологий и
> здравого смысла"У меня есть много персональных свобод которых нет у вас. Я могу вот прям ща оседлать вел и покрутить себе по кайфу. А вы так же сможете в своей супер-корпе? Ну вот и поговорили о свободах.
В нормальном корпе как раз таки можно крутить вел в свое удовольствие и еще получать за это деньги, главное время от времени на почту отвечать)
> В нормальном корпе как раз таки можно крутить вел в свое удовольствие
> и еще получать за это деньги, главное время от времени на почту отвечать)На минуточку, там речь была - про гугол и майкрософт. А у этих с вот именно таким - довольно так себе, AFAIK. Я конечно не знаю ВСЕХ их условий для ВСЕХ работников, в ВСЕХ филиалах, на ВСЕХ должностях.
> Сообщество имеет отношение к ЯП и обвесу вокруг. И лично мне хрустики как сообщество в целом - не нравятся. Сборище корпоративных винтиков.Уверен, твое мнение очень ценно для для хрустиков)
> По моему опыту так говорят господа с синдромом утенка, пытающихся доказать что вон то единственный вариант.
Я такого не говорил, ты это сам сочиняешь.
Я сказал: по моему личному опыту, а не других варинтов нет.
Кто-то любит рисковать? Ну так флаг в руки и барабан на шею.
Кто-то любит чтобы за него решили админ проблемы, а он спокойно писал код.
Думаю работа найдется всем.> А я со своей стороны считаю что у меня больше личной свободы. Даже если это и подразумевает некий гемор взамен,
Т.е не все так безоблачно, как любят рассказывать адепты "просто бросай работу и открывай свое дело"?
> это как раз и есть часть взрослой полноценной жизни, когда решения принимаешь - сам. И получаешь результат по итогам.
А если я сам принял решение, что ну его нафиг все эти бухгалтерию и найм персонала, и поиск помещений, и налоги, что наелся всем этим .. и мне проще ходить работать на дядю работать, это взрослая жизнь или уже нет?
> Как показала история, за всеми открытиями и изобретениями как правило были вполне конкретные имена, представляющие из себя что-то отличное от ноля, без всяких мегакорп за спиной.
Хаха, особенно когда корпа оплачивала им эти исследования и открытия.
> Есть те кто их создает.
Да, а потом читаешь биографию "работал 20 лет в корпорации, а потом сделал свою".
> Есть нонеймы под ногами.
Пованивает снобизмом.
> Это несколько образно. См. на господ типа поха. Его мышление иррационально - так что без манагера за спиной он не больно дофига своим ходом сделает.
Э.. а что мешает нифига не делать в "своем бизнесе"?
Прямо как в анекдоте про негра и пальму "так я уже лежу ничего не делаю".> Все время находит какие-то фатальные проблемы, утыкается в них рогом, "задача нерешаема".
Есть и другая сторона медали, когда задача действительно не решаемая в пределах существующих ограничений. А человек бьется лбом об стену, тратит годы жизни и тонны денег.
А потом сидит у разбитого корыта.> И манагеры нужны - чтоыбы вышибать из таких состояний тех, кто сам на это не способен. Как-то так.
Тогда у моего соседа жена - менеджер.
Пока она не прожужжит ему все уши, фигушки он пошивелится чегось сделать)> У меня есть много персональных свобод которых нет у вас. Я могу вот прям ща оседлать вел и покрутить себе по кайфу.
Хм.. ну такой себе пример.
Я работаю в корпе, при этом на удаленке, да еще и с гибким графиком.
Запросто могу взять на пол дня отгул, и доработать в удобное для меня время.
Но, объективно редко так делаю, тк все друзья работают 5/7 и чтобы посидеть где-то то лучше на выходных.> А вы так же сможете в своей супер-корпе? Ну вот и поговорили о свободах.
Да могу.
От и поговорили)
> Уверен, твое мнение очень ценно для для хрустиков)Да и хрен с ними.
> Я такого не говорил, ты это сам сочиняешь.
А отвечал я тогда на что? :)
> Кто-то любит рисковать? Ну так флаг в руки и барабан на шею.
Как говорится, кто не рискует, тот не пьет шампанского.
> Кто-то любит чтобы за него решили админ проблемы, а он спокойно писал
> код. Думаю работа найдется всем.Это и правда плюс корп - но, увы, некоторые господа, имхо, хотят слишком дофига за свои услуги. И даже не столько в денежном смысле, сколько в тоталконтрольном.
> Т.е не все так безоблачно, как любят рассказывать адепты "просто бросай работу
> и открывай свое дело"?Любое решение - tradeoff. И все же количество стартапов и фрилансеров в IT намекает...
> А если я сам принял решение, что ну его нафиг все эти
> бухгалтерию и найм персонала, и поиск помещений, и налоги, что наелсяЭто при желании можно делегировать другим без сдачи в рабство корпорациям.
> всем этим .. и мне проще ходить работать на дядю работать,
> это взрослая жизнь или уже нет?Это жизнь овоща на грядке, имхо. Вы просто выбрали самое простое из решений - и самое овощное, ибо "благодетели" так то вовсе не о вашем благе заботились...
> Хаха, особенно когда корпа оплачивала им эти исследования и открытия.
Какие нафиг корпы оплачивали изобретение например всякого добра вокруг электричества? Или там законов физики? Все самые крутые открытия и изобретения человечества сделаны вполне конкретными людьми ;)
> Да, а потом читаешь биографию "работал 20 лет в корпорации, а потом сделал свою".
И, собственно, чего? Да, посмотреть как оно изнутри - имеет смысл. Если вы никогда не видели как можно было - попытка изобрести вел совсем с ноля может и зафэйлиться. Например, хорошим менеджером - не рождаются. И не видя как оно... можно посмотреть на примере какого-нибудь поха что получается. Когда везде утык в дурную проблему на ровном месте, там где у других проблем нет. Да, если делать корпу так - обанкротится как только инвесторам надоест этот фрик-парад.
>> Есть нонеймы под ногами.
> Пованивает снобизмом.Но суть дела отражает. Есть те чьи имена будут в истории. И есть те чьи имена никто не знает и не узнает, ибо сами по себе близкие к нолю величины. Смысл знать имя взаимозаменимого кодера в корпе? Сегодня один, завтра другой. Расходник для корпораций.
> Э.. а что мешает нифига не делать в "своем бизнесе"?
То что бабки при этом быстро закончатся. Это способствует прочистке мозга и ориентации на результат. Жирнокорп может за счет запаса прочности страдать фигней некоторое ограниченное время или в ограниченном масштабе. А стартап от этого загнется.
> Есть и другая сторона медали, когда задача действительно не решаемая в пределах
> существующих ограничений.ИМХО, "there is no such word as impossible, just a matter of figuring out how".
> Тогда у моего соседа жена - менеджер.
> Пока она не прожужжит ему все уши, фигушки он пошивелится чегось сделать)В каком-то роде так и есть. Некоторым людям в принципе было бы нормуль валяться под забором в грязи, бухнув хорошенько. Это их предпочитаемое состояние.
> Я работаю в корпе, при этом на удаленке, да еще и с гибким графиком.
Ну вот тут еще да, некоторым может и повезти. Однако если вам назначили какое-то совещание, и вы его пропустите, последствия будут и их масштаб вне вашего контроля.
Кроме того, вы врядли можете выбирать тулсы, окружение, технологии и проч. Это тоже степени свободы так то.
> Запросто могу взять на пол дня отгул, и доработать в удобное для
> меня время.Но скорее всего не сможешь скажем поработать лишь половину времени - если и так рубанул достаточно денег и как бы не жмет, а отдохнуть охота. Я могу на пару недель уйти в горы с друзьями. Вырубив нахрен коммуникаци. Это конечно что-то стоит - зато позволяет нормально отдохнуть.
> Но, объективно редко так делаю, тк все друзья работают 5/7 и чтобы
> посидеть где-то то лучше на выходных.Ну а мне такая "свобода" вида так и быть, отпустим с поводка на немного - такое себе.
>> А вы так же сможете в своей супер-корпе? Ну вот и поговорили о свободах.
> Да могу. От и поговорили)Тем не менее то что вы можете - куда более лимитированно. А у свобод много измерений.
> А я со своей стороны считаю что у меня больше личной свободы.Это распространённое заблуждение, что, дескать, если у тебя свой бизнес, то и личной свободы больше. Вы так же, как и остальные члены человеческого сообщества, от кого-то зависите. Например, от ваших клиентов. Или от налоговой инспекции. Или банально от бандитов, которым понравился ваш бизнес. Или от вашего бизнес-партнёра (если он есть). И так далее, и тому подобное.
> Это распространённое заблуждение, что, дескать, если у тебя свой бизнес, то и
> личной свободы больше. Вы так же, как и остальные члены человеческого
> сообщества, от кого-то зависите. Например, от ваших клиентов. Или от налоговой
> инспекции.Однако взаимодействие с налогерами и прочую бухгалтерию можно и делегировать. А если какой-то таск ну вот не хочется делать - клиент, таки, пойдет искать кого-то еще. И никак это не оспорит. Это как раз свободный мир свободных людей. Когда не хочешь делать таск - и не делаешь.
> Или банально от бандитов, которым понравился ваш бизнес. Или от
> вашего бизнес-партнёра (если он есть). И так далее, и тому подобное.Ну как бы это вообще стандартные функции государства, на которые ему налоги и платят, если что.
Ну это сильно зависит от задачи. Например, с БД сильно приятнее работать на Rust. Сериализация/десериализация тоже.
На Rust всё вышеперечисленное либо дешевле, либо zero-cost, либо compile time.
То есть да, сишечку можно превратить в жалкое подобие, но ценой производительности.
Это что за магия такая или трава, про зеро кост? Ты надеюсь сам понимаешь что так не может быть и ты пересказываешь маркетинговые сказки.
зероконст, если вы считаете что весь мир обкурился травой то это ваши проблемы, а не мира
Например вместо 128-битных указателей и прочей подобной фигни есть сильная типизация.В сишечке malloc/free имеют такую сигнатуру:
malloc(size) -> pointer
free(pointer) -> voidВ расте аналоги такие:
alloc(size, align) -> pointer
dealloc(pointer, size, align) -> voidНо явно хранить size/align надо только для динамических типов (вроде вектора или там хешмапы). Для типов, не меняющих свой размер, ничего держать в RAM не требуется, всё известно на этапе компиляции. Вот и получается zero-cost.
Опять же сырые указатели вообще говоря весьма умные внутри: https://doc.rust-lang.org/std/ptr/index.html (особенно про provenance читни)
На ссылки накладываются дополнительные ограничения. Например они не могут быть null, что автоматически означает, что нет вообще никаких проверок на null для ссылок. Плюс borrow-checker, который можно рассматривать как compile-time garbage collector.
Это в качестве иллюстрации, там куча всего ещё есть.
Предлагаю тебе зайти на сайт https://godbolt.org/ написать одинаковый код на расте и сишке и плюсплюске без llvm и пересчитать количество команд. Я конечно понимаю что для вас 10 км не круг и ты может быть найдешь пример где на расте будет меньше инструкция, но среднее количество команд сможешь оценить и ты.
> Я конечно понимаю что для вас 10 км не кругЯ конечно понимаю, что для вас "ну подумаешь сделали double free и подарили root" это не проблема, но другие не хотят писать такой код.
Если вопрос в кол-ве команд - то можно на ассемблере все фигачить (в надежде что пряморукость будет больше чему у оптимизирующего компилятора).
Ты же сам начал с производительности и "zero cost" и теперь сам же даешь заднюю. Типичный растоман.
https://godbolt.org/z/Pv9E74WanОкей, простой пример. Одинаковое количество инструкций. Придумай более сложный пример.
Предположу, что ты, когда сам тестил, забыл добавить -C opt-level=3 компилятору Rust. По умолчанию rustc собирает в дебаг режиме.
Я не хейтер раста или плюсов, но у тебя получился слишком примитивный пример, который не показывает различий в подходе у этих ЯП.
>>> Предлагаю тебе зайти на сайт https://godbolt.org/ написать одинаковый код на расте и сишке и плюсплюске без llvm и пересчитать количество команд....
> Я не хейтер раста или плюсов, но у тебя получился слишком примитивный
> пример, который не показывает различий в подходе у этих ЯП.Я вообще другой аноним, но считаю для ответа "доказательства моей правоты напиши сам" - вполне норм. Тем более, "ты, когда сам тестил, забыл добавить -C opt-level=3 компилятору Rust" проскакивало уже пару раз у "Военов Против Раста":
https://www.opennet.dev/openforum/vsluhforumID3/126424.html#270
Явно видно как деградирует уровень аргументации у адептов раста. Раньше было больше по существу сейчас остались лишь лозунги и маркетинг.
> Явно видно как деградирует уровень аргументации у адептов раста.Приходится опускаться на донный уровень оппенентов, тк они по другому не понимают.
> Раньше было больше по существу сейчас остались лишь лозунги и маркетинг.
Раньше было "да не нужна эта безопасность! Настоящий программист таких ошибок не делает!", а теперь пошли косяком "ну у нас тут производительность просядет в 5 раз, но это не страшно"))
> Аноним(1) Предлагаю тебе зайти на сайт https://godbolt.org/ и написать код, который докажет, что я прав!
> Аноним(1) Явно видно как деградирует уровень аргументации у адептов раста. Раньше было больше
> по существу сейчас остались лишь лозунги и маркетинг.Экая самокритичность, но адепт ты какой-то странный ...
Ну давай чуть менее примитивный. Аллокация динамического массива. Код делает примерно одно и тоже, если не лезть в дебри семантики. Какой-то драматической разницы я тут не вижу при том, что это два разных компилятора с двумя разными языками.https://godbolt.org/z/GaoKaM11K
Для иллюстрации добавил C++ для gcc и clang: https://godbolt.org/z/bjxn6s5sd
Вот и я говорю нашел едж кейс и пытаешься им что-то себе доказать. Но это лишь доказывает бессмысленность существования раста.
Ну так я не знаю, что ты вообще хочешь увидеть. Эквивалентный код выдаёт эквивалентный ассемблер.Тоже самое будет и для более сложного кода.
Развене видно, что он тупо тролит. Причëм толсто.
Хм.. а разве не ты пернул в комментарий "напиши код и считай кол-во команд"?
Тебе скинули уже 2 примера, но от тебя я не увидел ни строчки кода.
Так что давай "проргаммирывай", может какой-то пруф из себя выдавишь.> Но это лишь доказывает бессмысленность существования раста.
Это доказывает только товю недалекость.
Но это не страшно, я даже не буде предлагать бете учить раст или писать на нем.
Можешь писать на чем хочешь, а другие люди сами за себя решат.
Аш два Эдж кейса и это сразу что-то доказывает? У тебя когнитивное искажение домашка загуглить какое именно.
> Аш два Эдж кейса и это сразу что-то доказывает?На 2 больше чем у тебя)
Ты пока смог выдать "а если вдруг найдется код где будет разное кол-во команд".
Ну так приводи пример.
Бремя доказательства лежит на том, кто утверждает.> У тебя когнитивное искажение домашка загуглить какое именно.
Я трачу время на общение то ли с тролями, то ли с идиотами?
Да, это наверное не самое рациональная трата времени, то у меня как раз был обед)
> Для типов, не меняющих свой размер, ничего держать в RAM не требуется, всё известно на этапе компиляции.поэтому чтобы код был безопасным надо чтобы всё было написано на раст, один внедряла в ядро уже сдулсо..
> один внедряла в ядро уже сдулсо..из-за дидов-"вы не заставите миня учить раст, ррряяя!!!1"-неосиляторов.
Перешел туда, где его умения ценятся. И правильно сделал.
Пусть лучше меньше дырений будет в андроиде, хроме, винде. А ядро... типа кому оно нужно.
> Пусть лучше меньше дырений будет в андроиде, хроме, винде. А ядро... типа кому оно нужно.просто мир так устроен - что-то делается если есть заинтересованность, в космос запусти процессор и он весь будет в дыренях из-за радиации - все вычисления проверяются в рантайме
Вы про того, кто придя в проект как разработчик, захотел свою работу свалить на других а сам рулить?Мало того, что эта работа, как и было сказано бессмысленная по своей сути. Так у него еще и наглости хватило пытаться ее на других взвалить.
Те смотрели на дитятко, ну из ..вна куличики лепет. Пусть, себе, лепет. Никому не мешает.
Но когда он закатил истерику, давайте все вместе помогайте мне из ..вна куличики лепить. Диды, конечно, не выдержали и послали.
> Мало того, что эта работа, как и было сказано бессмысленная по своей сути.Ага, ага, настлолько что Линус разочарован тем, что все так медленно внедляется.
И одной из причин называет - дидов неосиляторов.> Но когда он закатил истерику, давайте все вместе помогайте мне из ..вна куличики лепить. Диды, конечно, не выдержали и послали.
Конечно послали, Тео хочет сам лепить из овна, других не подпускает)
Благо он уже не молод, может помрет ненароком.
Будет повод выпить пивка))
> И одной из причин называет - дидов неосиляторов.Он теперь политик. Вместо вываливания кучи помоев на головы раздолбаям дает эти раздолбаям обделаться.
Обделывайтесь наздоровье.
> Конечно послали, Тео хочет сам лепить из овна, других не подпускает)
Еще раз и медленно, тот кто взялся внедрять в linux rust хотел что бы его работу за него делали другие.
Или они считают себя мессиями новой веры в которую должны уверовать все остальные?
Именно такие вопросы любителям rust и задали.
Если бы были показаны реальные а не теоретические достоинства rust на том что внедряется, и тогда бы были вопросы целесообразности. Но ведь не было показано ничего. Только требование уверовать в силу rust.
Пусть мальчики сами куличики из ..овна лепят.
> Он теперь политик. Вместо вываливания кучи помоев на головы раздолбаям дает эти раздолбаям обделаться.Раздолбаи обделываются уже почти 30 лет.
Он не просто так упомянул
You'd think that all the basics would have been fixed long ago, but they're not. We're still dealing with basic issues such as memory management.Возможно дело действительно в политике и спонсоров ситуация
> Обделывайтесь наздоровье.просто не устраивает.
Ты платишь нехилые бабки, а бракоделы типа Тцо делаю CVEшки, которые потом еще 2 раза чинят (тк с первого раза не получается).> Еще раз и медленно, тот кто взялся внедрять в linux rust хотел что бы его работу за него делали другие.
Нет. Откуда у тебя такие фантазии?
Как раз Тео не хочет делать свою работу - он ломает интерфейсы, а исправить заголовки функций в расте он не может - у него же лапки.> Или они считают себя мессиями новой веры в которую должны уверовать все остальные?
Фантазии становятся еще более безумными...
> Именно такие вопросы любителям rust и задали.
Э? Им просто сказали "вы не заставите нас изучить раст" (второй язык допущенный я ядро).
Надеюсь что компетентность таких бракоделов будет пересмотрена Линусом и спонсорами ядра.> Если бы были показаны реальные а не теоретические достоинства rust на том что внедряется, и тогда бы были вопросы целесообразности.
> Но ведь не было показано ничего. Только требование уверовать в силу rust.Хм.. ну да, понимаю.
У других компаний есть проекте в проде которые не просто работают, а отлично работают.
К сожалению разрабы ядра не настолько круты.> Пусть мальчики сами куличики из ..овна лепят.
Пока не придет Торвальдс и скажет "какого фига ставятся палки в колеса!?"
> Раздолбаи обделываются уже почти 30 лет.Поэтому ядро захватывает мир? А у тех кто делал микроядро или на безопасных языках - ничего кроме проблем. У тебя альтернативная логика.
> Как раз Тео не хочет делать свою работу - он ломает интерфейсы, а исправить заголовки функций в расте он не может - у него же лапки.
То есть это Тео должен заниматься тем чем он не брался и никогда не собирался?
Он должен за растовиков делать их работу?
Опять у тебя альтернативная логика.
> У других компаний есть проекте в проде которые не просто работают, а отлично работают.
Их не интересуют другие проекты. Они дали шанс показать пользу от rust в ядре. Пока не показали ничего.
> Пока не придет Торвальдс и скажет "какого фига ставятся палки в колеса!?"
Пока он в очередной раз не скажет, что-то у вас не очень получается. В очередной раз макнув растовиков носом в их творения.
> Поэтому ядро захватывает мир? А у тех кто делал микроядроЛол, сколько там комплектов Minix в мире работает?
Сколько всяких девайсов ThreadX (ныне Azure RTOS) было выпущено? Больше 10 миллиардов.
И это все микрокернелы.> или на безопасных языках - ничего кроме проблем. У тебя альтернативная логика.
И какие проблемы от безопасных языков?
Вон АДА/Спарк как пример безопасного языка - применяется на куче супер критических систем.> То есть это Тео должен заниматься тем чем он не брался и никогда не собирался?
Э.. типа "раз ядро началось с С99 то теперь я буду писать только на нем" ?
Ядро официально поддерживает 2 языка.
Логично что задача программера в ядре освоить их хотя бы на уровне "я понимаю, что написано".> Он должен за растовиков делать их работу?
Это его работа. Если он ломает АПИ, то логично что он и должен исправить функции.
> Опять у тебя альтернативная логика.
Нет у тебя.
> Их не интересуют другие проекты. Они дали шанс показать пользу от rust в ядре. Пока не показали ничего.
Да, а кому Линус говорил персональное спасибо за драйвера для М чипов написанных как раз на расте?
Драйвер который прошел сертификацию кроноса?
А это отличный пример, когда люди с незакостенелым мышлением могут сделать сложные вещи.> Пока он в очередной раз не скажет, что-то у вас не очень получается. В очередной раз макнув растовиков носом в их творения.
Растовиков? Разве он упомянул что "они плохо делают свою работу"?
Нет! Он сказал что
but part of the problem is that old-time kernel developers are used to C and don't know Rust. They're not exactly excited about having to learn a new language that is, in some respects, very different.
Т.е те самые диды неосиляторы.
Надоело - поскипал> Это его работа. Если он ломает АПИ, то логично что он и должен исправить функции.
Нет. Не логично от слова совсем. Он не брался за эту работу. За эту работу брались другие. Пусть и делают.
Если они не могут сделать нормальную систему интеграции - пусть сами с тем что создали и возятся.
Пусть лепят свои куличики из ..овна сами, а если они попытаются взрослых дядей усадить в песочницу рядом с собой, то направление им показали. Один уже проследовал.
> Растовиков? Разве он упомянул что "они плохо делают свою работу"?
Если они не могут сделать так что бы это было ненапряжно для других, то как еще он мог сказать, что они делают это плохо?
Начать, как раньше, помоями поливать?
>За эту работу брались другие. Пусть и делают.Так они и делают. Но их диды нарочно не пускают, потому что не хотят учить ещё один язык программирования. Был же случай, когда человек написал драйвер, подкорректировал для этого некоторый код на Си, но правки не принимали те самые диды-неосиляторы.
> подкорректировал для этого некоторый код на Си, но правки не принимали те самые диды-неосиляторы.Любая правка должна быть обоснованной.
Основанием "невозможность создать обвязку" - не является.
Прежде чем соваться надо что-то в консерватории поправить.
То есть правьте свою систему создания обвязок.
> Любая правка должна быть обоснованной.Обоснование "тут раз в месяц CVE находят" является достаточным?
> Прежде чем соваться надо что-то в консерватории поправить.
Э... не намекаешь ли ты что дидам пора на пенсию?
> Обоснование "тут раз в месяц CVE находят" является достаточным?Для большинства проектов - ни разу. Или давай новую функциональность или улучшай характеристики.
> ... не намекаешь ли ты что дидам пора на пенсию?
Почини свой контрабас.
Поясняю прямым текстом, инструмент нужно править до тех пор, пока не устранят проблему.
> Поясняю прямым текстом, инструмент нужно править до тех пор, пока не устранят проблему.Имеющимися инструментами это невозможно. Почему? Потому что природа человека несовершенная. Ну не может он в сложном коде не допускать ошибок. Поэтому и придуман был более совершенный, но и более сложный в использовании инструментарий. Но диды против. Сроди собаки на сене.
Откуда ты такой вылез?В данном случае инструмент - система интеграции rust в ядро.
Она кривая. Без ее починки у внедрятелей rust будет очень моного работы или постоянная война с другими разработчиками.
> Надоело - поскипалТ.е слился? Предсказуемо.
> Он не брался за эту работу. За эту работу брались другие. Пусть и делают.
Что значит не брался?
Откуда ты такое вообще взял?> Пусть лепят свои куличики из ..овна сами,
У тебя какая-то странная фиксация на куличиках и овне.
Не то чтобы это было слишком странно (все-таки форум девиантов), то ты это повторяешь из сообщения в сообщение.> Если они не могут сделать так что бы это было ненапряжно для других, то как еще он мог сказать, что они делают это плохо?
А у нас цель комфорт дидов? Или выполненная задача?
Когда Торвальдс включил -Werror по умолчанию, то было тоже куча нытья.
Даже статейки писали
https://www.phoronix.com/news/Linux-5.15-Werror-Pain
и пытались ревертить
https://patchwork.kernel.org/project/linux-kbuild/patch/2021...
> Т.е слился? Предсказуемо.Не интересно общаться на эти тему с людьми с альтернативной логикой.
> Что значит не брался?
> Откуда ты такое вообще взял?Вот даже так. :)
Человек который разрабатывает файловую систему откровенно об этом и говорил.
> У тебя какая-то странная фиксация на куличиках и овне.
> Не то чтобы это было слишком странно (все-таки форум девиантов), то ты это повторяешь из сообщения в сообщение.Потому что ничем иным rust в ядре на данный момент не является.
Пустили дититок в песочнице поиграться. Глядишь кто-нибудь наиграется и в нормальную разработку вольется.
> А у нас цель комфорт дидов? Или выполненная задача?
Если инструмент настолько кривой, что предполагает дополнительную работу для множества других людей никак с этой работой не связанных, то такому инструменту место на свалке.
> Когда Торвальдс включил -Werror по умолчанию, то было тоже куча нытья.
И к чему это?
У тебя явная болезнь альтернативной логикой. Из-за этого совсем неинтересно.
> Лол, сколько там комплектов Minix в мире работает?Сколько всяких девайсов ThreadX (ныне Azure RTOS) было выпущено? Больше 10 миллиардов.
И это все микрокернелы.и никто их на rust не переписывает, а linux проще изолировать чем переписывать
https://www.opennet.dev/opennews/art.shtml?num=62226
Очередной дремучий человек не понимает, что если в языке нет, например, null, то и разыменновывания нулевого указателя тоже не будет. Парадокс блаба крепко держит опеннетовских анонимов.
> если в языке нет, например, nullто это не значит, что его в этой процессорной архитектуре нету. Это просто значит, что язык замёл мусор под ковер, спрятав null от программиста. А в ассемблере он есть.
Не бывает в рантайме zero-cost. Физически невозможно.Либо деплоить пользователям бинарь, собранный в дебаг режиме и огребать по полной с просадками производительности, либо собираеть без рантайм-проверок и молиться, что а) «он абсолютно точно работает так же, как и дебажный» и б) «на дебажном всё–всё протестил, багов нет, мамой клянусь».
Пользователь находится в такой же дилемме Эскобара: либо у него просела производительность, но в случае неотловленного бага всё «безопасно» покрашится, либо использовать такой же «небезопасный» бинарь, как и на других языках, но только выплюнутный «самым безопасным на свете компилятором, верьте нам».
Наглядная иллюстрация: бинарник библиотеки librsvg старых версий, ещё на сишечке, весит порядка 250Кб. Тот же самый код, будучи строчка–в–строчку переписанным на Rust (о чём мэйнтэйнер с гордостью заявлял: вот мол, так легко взял и переписал) — даёт бинарник порядка 4.5 Мб. Нестрипаемых. Такой–то zero–cost.
Надеюсь, вы слышали про разные способы линковки бинарников?Zero-cost - это не про итоговый размер бинаря. Раст при статический линковке добавляет в код свои стандартные библиотеки. Поэтому размер бинаря может быть большим. Но это не значит, что ваш конкретный код будет медленнее в итоге. Примеры здесь уже приводились.
> Либо деплоить пользователям бинарь, собранный в дебаг режиме и огребать по полной с просадками производительности,Но зачем?
> либо собираеть без рантайм-проверок и молиться, что а) «он абсолютно точно работает так же, как и дебажный» и б) «на дебажном всё–всё протестил, багов нет, мамой клянусь».
Все типы, null-проверки, разбор инвариантов, и прочее compile-time будет работать как и в дебаге.
Если уже сравнивать с овнокодом на дыряшке - то там весь код "мамой клянуть тут не будет double free".> Пользователь находится в такой же дилемме Эскобара: либо у него просела производительность,
С чего вдруг и/или 'на сколько'?
Вон авторам Fil-C норм просадки до 5 раз.> но в случае неотловленного бага всё «безопасно» покрашится,
Именно так. Оно просто крашнется, а не ʼподарит рутʼ, ʼвыполнит чужой кодʼ или ʼубьет соседскую собакуʼ.
Краш это абсолютно предсказуемый сценарий, в отличии от.> либо использовать такой же «небезопасный» бинарь, как и на других языках, но только выплюнутный «самым безопасным на свете компилятором, верьте нам».
Восхитительная чушь! Сам придумал?
> Наглядная иллюстрация: бинарник библиотеки librsvg старых версий, ещё на сишечке, весит порядка 250Кб. Тот же самый код, будучи строчка–в–строчку переписанным на Rust (о чём мэйнтэйнер с гордостью заявлял: вот мол, так легко взял и переписал) — даёт бинарник порядка 4.5 Мб. Нестрипаемых.
А можно пруфцов? Просто я уже насмотрелся на местных раст-кекспертов, которые даже не могли выключить debug при сборке.
И? Деревянная телега весит думаю 250—300 кг.
Лада гранта весит почти тонну. Следовательно телега это идеальный инструмент, не то что ваши бензиновые жужжалки.> Такой–то zero–cost.
Если бы ты просто прочитал его определение, а именно
"Zero Cost Abstractions - the ability to move certain behaviors to compile time execution or analysis."
то вопросов у тебя было бы меньше.
> А можно пруфцов? Просто я уже насмотрелся на местных раст-кекспертов, которые даже
> не могли выключить debug при сборке.Дебиановские кексперты устроят?
https://packages.debian.org/buster/librsvg2-2
https://en.wikipedia.org/wiki/Librsvg
Версии библиотеки после 2.40.21 — уже с добавлением растишки. После 2.45.6 — 100% только «безопасный» биокефирчик.
https://download.gnome.org/sources/librsvg/2.40/librsvg-2.40...
Собранная из сырцов librsvg-2.so.2.40.21 после strip — у меня получилось 234176 байт. Потому что там, блин, нечему весить — это фронтенд к cairo, а не полноценный движок.
Ответственному за это растолюбцу можно даже в глаза посмотреть:
https://viruta.org/pages/about.html
Причём да, это не халтура, это реально работа от упёртого фанатика, чтобы было как можно более «безопасно». Методичное выкидывание всего плохого, грязного, некошерного сишного кода и методичное впиливание растишки.
> И? Деревянная телега весит думаю 250—300 кг.
Только речь не про дереявянную телегу. Речь об отказе от спортбайка (который да, без шуток, небезопасный — если рук и мозгов нет, разложиться легче лёгкого) в пользу задушенной эконормированной евростандартной пробкотошнилки, до кучи ещё и требующей подышать в трубочку чтобы завести двигатель. Но при этом почему–то занимающей три ряда и жрущей топливо как полноценный рейсовый автобус.
> Сам придумал?
Либо мы делаем проверки в рантайме и теряем в производительности, либо не делаем, просто говорим что «от сих до сих код безопасный, потому что весь целиком на растишке» — тогда будет быстро.
Внезапно, реальный кремниевый процессор, исполняющий команды, от использования растишки быстрее работать не начинает и в розового пони не превращается. Физика, беспощадная ты…
А... это те самые дебиановцы, которые так "подправили" SSH либу, что все нафиг сломали?
(CVE-2008-0166)
Да, это просто супер эксперты!> Версии библиотеки после 2.40.21 — уже с добавлением растишки. После 2.45.6 — 100% только «безопасный» биокефирчик.
Ух, как тебя корежит, аж просто приятно наблюдать)
А новых функций там не добавилось?> Собранная из сырцов librsvg-2.so.2.40.21 после strip — у меня получилось 234176 байт.
А без stripʼа?
> Причём да, это не халтура, это реально работа от упёртого фанатика, чтобы было как можно более «безопасно». Методичное выкидывание всего плохого, грязного, некошерного сишного кода и методичное впиливание растишки.
Да, чел молодец. Выкидывает отстойный небезопасный си.
> Только речь не про дереявянную телегу. Речь об отказе от спортбайка (который да, без шуток, небезопасный — если рук и мозгов нет, разложиться легче лёгкого)
Так если бы они сами дохли - без проблем, так оно ж еще и на встречку выезжает.
Но мне нравится твое сравнение СИшки с 🐓-ми байкерами-саркерами.
Прямо 100% в яблочко.> в пользу задушенной эконормированной евростандартной пробкотошнилки, до кучи ещё и требующей подышать в трубочку чтобы завести двигатель.
> Но при этом почему–то занимающей три ряда и жрущей топливо как полноценный рейсовый автобусТы сравнивал производительность? Или опять прдеж в лужу?
На сколько процентов код на расте медленнее чем на СИ?Пока я вижу что у тебя прдак порвало только от того, что пакетик стал немного больше.
Причем я подозреваю, что код раста ты не собирал ручками
А для раста есть strip --strip-debug. Если автор пакета его не использует - это его право.
Можешь переделать как тебе нравится.
Ну, то есть код ты не в состоянии самостоятельно посмотреть и истерично–попугайские вскрики про «дыряшку», «пердёж», «как вас корёжит, ахаха», «отстойный–небезопасный» — это максимум твоей технической экспертизы. Оке–ей…> На сколько процентов код на расте медленнее чем на СИ?
Так мы не определились, код с рантайм проверками или код который условились считать безопасным потому что «ну раст же, камон, это волшебный язык, он не позволяет глупых ошибок», но с отключёнными проверками? Или вообще код, у которого под капотом сплошной _unchecked?
> А для раста есть strip --strip-debug.
Это флаг, который говорит strip удалять меньше чем просто strip без параметров (удалить только отладочные символы) — смысл про него вообще специально упоминать?
> Если автор пакета его не использует…
Растовый бинарник в пакете, естественно, тоже пострипан. Прикол там в другом. Но ты его не выкупаешь, поэтому дадим знатокам дополнительную минуту.
> Причем я подозреваю, что код раста ты не собирал ручками
Вот именно потому что я собирал ручками и раст и карго — к самопровозглашённым евангелистам растишки отношусь с брезгливым предубеждением.
А вот у мэйнтейнеров дебиана да, случился нешуточный афедронный кризис, когда выяснилось что ради крошечной утилитки теперь нужен llvm, шланг, карго и куча пакетов из инторнетов. И всё это теперь нужно поддерживать в актуальном состоянии. Во имя Великой БезопасТности™. Ну или потому что Федерико красиво почесал ЧСВ. Рассылка целую неделю полыхала, или две…
> Ну, то есть код ты не в состоянии самостоятельно посмотретьМне просто лениво.
Зато ты весело дергаешься.>> На сколько процентов код на расте медленнее чем на СИ?
> Так мы не определились, код с рантайм проверками или код который условились считать безопасным потому что «ну раст же, камон, это волшебный язык, он не позволяет глупых ошибок», но с отключёнными проверками? Или вообще код, у которого под капотом сплошной _unchecked?Э... Ты вообще растбук читал?
От того что бы не ленишься расставлять все эти bold/italic твои вопли не станут более ценными.У тебя бомбит от того, что либа стала больше.
Я это уже понял.
Вопрос, а стала ли она медленнее, ведь ты вбрасываешь
"Но при этом почему–то занимающей три ряда и жрущей топливо как полноценный рейсовый автобус".> смысл про него вообще специально упоминать?
У меня были сомнения, что ты вообще про него слышал.
> Растовый бинарник в пакете, естественно, тоже пострипан.С учетом того что это дебианцы, я бы не был настолько уверен.
> Прикол там в другом. Но ты его не выкупаешь, поэтому дадим знатокам дополнительную минуту.
Да я, если честно, вообще не понимаю чего ты сказать хочешь ¯\_(ツ)_/¯
Развел истерику на кучу сообщений.> Вот именно потому что я собирал ручками и раст и карго — к самопровозглашённым евангелистам растишки отношусь с брезгливым предубеждением.
Может твои ручки, как у Фредерико.
> А вот у мэйнтейнеров дебиана да, случился нешуточный афедронный кризис, когда выяснилось что ради крошечной утилитки теперь нужен llvm, шланг, карго и куча пакетов из инторнетов.
Добро пожаловать в реальный мир.
> И всё это теперь нужно поддерживать в актуальном состоянии.
Но.. но зачем?
Дебиан это же про протухшие полуразложившиеся пакеты.
Могли бы зафиксировать версию и вернуться к этому вопросу лет через пять.. или вообще не возвращаться.> Во имя Великой БезопасТности™. Ну или потому что Федерико красиво почесал ЧСВ. Рассылка целую неделю полыхала, или две…
Луддиты должны страдать)
А как история закончилась? Они откатили изменения и вернулись на старую либу?
Или привычно утерлись тк кроме Фредерико никто не собирается заниматься этой штукой?
>Либо деплоить пользователям бинарь, собранный в дебаг режиме и огребать по полной с просадками производительности, либо собираеть без рантайм-проверок и молитьсяЕмнип рантайм проверки в расте только для размеров массивов. В си нет никакого способа убедится, что указатель не null во время компиляции, в rust - есть, часть сишных проверок уже не нужна. В си нет никакой возможности убедится, что нет double free, в rust для большого количества ситуаций - есть, опять же минус проверки. Вы бы в теме начали разбираться, прежде чем троллить.
Там сейчас порядка 40 тысяч строк кода и почти 250 зависимостей в древе, при чём некоторые из них жирные прям на кодеген вроде serde или nalgebra. Я ради интереса посмотрел, сколько по итогу получается. Где-то 300-400 кб вышло до strip (285 после полной оптимизации на размер).Ну тоесть да, туда запихнули дебажную инфу в полном объёме. На производительность это не влияет. Страдают только те, кто не может купить себе хотяб какое-то минимальное количество памяти (если меньше 8 гигов, то это у тебя какое-то железо для embedded или раритет). Зато мейнтейнер теперь будет читать читабельные issue при поломках.
Справедливости ради, отлов ошибки во время компиляции гораздо лучше аварийного завершения во время выполнения.
Ну, так поставил ловушку, перехватывай и обрабатывай, кто ж запретит..
А если именно бросать неосвобожденные объекты на самотек, то вполне вариант.
> Ну, так поставил ловушку, перехватывай и обрабатывай, кто ж запретит..
> А если именно бросать неосвобожденные объекты на самотек, то вполне вариант.Ну, ехал ты на гироскутере, и фирмварь державшая тебя на неустойчивой хрени - в рантайме поймала ловушку... а круто, да?! :). И это всего лишь потребиловка обычная, без особых требований.
А теперь представь что баг отловлен компилтайм. Некая разница, не так ли? Хотя конечно вы можете признать себя существом второго сорта и никогда не уметь вон такое, будет прикалывать тех кто так может, хорошо же когда всякие овощи - не конкуренты :)
> Ну, ехал ты на гироскутере, и фирмварь державшая тебя на неустойчивой хрени
> - в рантайме поймала ловушку... а круто, да?!Вы на Питоне не пишете? А то там, что не перехват ошибок, то только для того чтобы точно так же грохнуться, но с красивым длинным некрологом.
А перехват ошибок делают что бы обработать ситуацию и продолжить работу. ;)
> Вы на Питоне не пишете?Нет конечно, за кого вы меня считаете?!
> А то там, что не перехват ошибок, то только для того чтобы точно так же грохнуться, но с
> красивым длинным некрологом.Ну так за это все и любят питон и питонистов. Особенно если это выпилить и заменить удалось, тогда сразу хорошо - что все это не у меня!
> А перехват ошибок делают что бы обработать ситуацию и продолжить работу. ;)
Очень круто показало себя в апгрейдере убунты, завалившем мне больше апгрейдов чем доехав до финиша. Вот уж бенефит то, супертул просто!
>Ну, так поставил ловушку, перехватывай и обрабатывай, кто ж запретит..У вас произошло разыменновывание нулевого указателя/повторное освобождение памяти. Что вы тут обрабатывать собрались?
> Что вы тут обрабатывать собрались?Если речь о ПО гироскутера, то немедленно запустить аварийный вариант контроля устойчивости, перезапустить ПО, или часть ПО, и попытаться установить предыдущий режим движения, чтоб тушка на гироскутере вообще ничего не заметила.
Если речь о заводском ПО, то постоянные баги все же не уместны, а единичные надо обрабатывать, а не резко прекращать работу.
>Если речь о ПО гироскутераО по гироскутера речь в соседней ветке
>а единичные надо обрабатыватьГде проходит разница между постоянными и единичными?
>а не резко прекращать работуОбразовался у вас висячий/нулевой указатель. Как вы собираетесь обрабатывать эту ситуацию? Только не заговаривайте зубы, а по шагам распишите, что тут нужно делать. Для полноты картины, представьте, что этот висячий/нулевой указатель лежит в самом начале пользовательских данных, и попытка сохранить результаты работы приведёт к его разыменовыванию.
> Только не заговаривайте зубы,Возникло, как минимум, событие "недоверия к работающему экземпляру ПО".
Тут его путь только в топку, или весь процесс или отдельные объекты.
Только не сброс или останов, а контролируемый перезапуск, или о откат состояния, с последующим восстановлеиием состояния близком к тому, что было до сбоя.
>Возникло, как минимум, событие "недоверия к работающему экземпляру ПО".В чём событие возникло? Опять же, давайте конкретики
>а контролируемый перезапускЭто как?
>или о откат состоянияОткат состояния крайне плохо уживается с изменяемостью, которая в c/c++ буквально везде. Кроме того, это состояние нужно где-то хранить, а с учётом количества операций, нужных для банальных вещей, у вас на одно действие будут миллионы промежуточных переходов - у вас просто памяти не хватит
> Если речь о ПО гироскутера, то немедленно запустить аварийный вариант контроля устойчивости,Это как? И чем от основного отличается? И что значит - немедленно? Любая операция требует времени. И тут нельзя попросить подождать. И любая потеря состояния - грабель пачка.
> перезапустить ПО, или часть ПО, и попытаться установить предыдущий режим движения,Режим движения. Ха. Там контроллер обмотки мотора переключает. В реальном времени подгоняя параметры чтобы юзер не навернулся, парируя продвинутым управлением все поползновения навернуться. А если это пытаться перезапустить и потерять состояние - вот тут юзерь с приличной вероятностью пойдет отзывы постить, приложив фоту, с аргументом почему это покупать не надо.
> чтоб тушка на гироскутере вообще ничего не заметила.
Агаблин, там времени для этого может быть не так уж и дофига, чтобы что-то перезапускать так всерьез. И если кто поймал обработчик типа паники - участь пользака будет довольно незавидна, имхо.
> Если речь о заводском ПО, то постоянные баги все же не уместны,
> а единичные надо обрабатывать, а не резко прекращать работу.Тут как бы варианты возможны. Скажем - уход в failsafe вполне себе опция. На то и failsafe, чтобы отвалиться по крайней мере в безопасное состояния. В серьезных случаях - рассматривают и возможности сбоев железа, например. Так чтобы ничего фатально не выгорало, контроль не терялся насовсем, даже если что-то сдуреет - или даже даст дуба.
>> ..ПО гироскутера
>> что значит - немедленно?
> Любая операция требует времени.Ну, ладно пол-микросекунды на поддержание равновесия, и 10-40 mS на пользовательский интерфейс ;)
> Там контроллер обмотки мотора >>переключает.Конечно! На гололом Расиберри только демонстрационный макет выйлет.
А в ПО для сопроцессора мотора и гироскопов проблемы с памятью маловероятны, в силу "дубовости" ПО, и отсутсвия выдрления или освобождения паияти.>>А если это пытаться перезапустить
Эту часть вероятно не понадобится перезапускать.
Но.. если писать руками, то и перезапуск никто не земетит, и даже серию перезапусков.
Хотя, тут уже логичнее ПО править, а не грамотно прикрывать гарниром баги.> уход в failsafe вполне себе опция.
Временно,на время перезапуска, или устранения сбоя без перезапуска.
Вот пример: Windows7+ при сбое видеодрайвера могнет экраном, перезапустит драйвер, и работа продолжается, а Windows Xp писал некролог белым по синему.
Что странного в нескольких активных экземплярах ПО, все серьёзные системы резервируют.
Возвращаемся к безопасным языкам.
Большая часть ПО не критична к быстродействию, зато более громозкая и напутанная, использует библиотеки..
И более того, как бы Вы гениально не писали код, всегда найдется коллега, который подложит свинью. И с этого момента безопасные диалекты Си обретают интерес.
> Ну, ладно пол-микросекунды на поддержание равновесия, и 10-40 mS на пользовательский
> интерфейс ;)Конечно не пол микросекунды, но... если юзер бодренько чешет - частота коммутаций обмоток моторов приличная, а взбрык практически гарантирует что юзеру не понравится дальнейшее.
И вот тут всякие паники - достаточно спорная идея. В такой штуке просто не должно быть багов ведущих к этому. Иначе морда юзера - и его отзывы - будут характерные. Есть софт который не может позволить себе сбойнуть или "подумаешь, чуть позже". Реальный мир не ждет.
> Конечно! На гололом Расиберри только демонстрационный макет выйлет.
Ну на именно распи такое, конечно, странно делать.
> А в ПО для сопроцессора мотора и гироскопов проблемы с памятью маловероятны,
> в силу "дубовости" ПО, и отсутсвия выдрления или освобождения паияти.Вон то было скорее как пример почему реальное время нельзя поставить на паузу а уповать на панику может быть и довольно хреновой идеей.
А Linux - импользуется где надо более сложные и продвинутые вещи чем в МК рулящий мотором можно затолкать. Вы же не будете обсчет где какой поезд на МК делать? И бортовой компьютер космического корабля - тоже. Особенно часть с UI. Тем не менее некоторые характерные для реалтайма constraints там будут очень кстати.
> Эту часть вероятно не понадобится перезапускать.
> Но.. если писать руками, то и перезапуск никто не земетит, и
> даже серию перезапусков.Это все усложняет и всегда будет риск что это работает не так как програмер себе представлял. Как по мне намного лучше работает - если оно простое и безбажное. А в более требовательных системах ставят N систем считающих параллельно - и вырубают/ребутают сглючившего, это и чисто хардварно можно - по расхождению управляющих сигналов.
> Хотя, тут уже логичнее ПО править, а не грамотно прикрывать гарниром баги.
Я про то и говорил - в вон том багов вообще быть не должно. А если возможны какие-то странные вещи типа сбоя проца или что там еще и это суперважно - есть иные подходы, типа выбора 2 из 3.
>> уход в failsafe вполне себе опция.
> Временно,на время перезапуска, или устранения сбоя без перезапуска.Это от характера системы и сбоя зависит. Сбои так то тоже бывают как transient так и permanent. Если скажем девайс заметил отказ критичного датчика - окей, в этом случае он вообще не может корректно и безопасно работать.
> Вот пример: Windows7+ при сбое видеодрайвера могнет экраном, перезапустит драйвер, и работа
> продолжается, а Windows Xp писал некролог белым по синему.Это тоже все - как повезет. Т.е. ребут GPU это довольно навороченое действо где много чего может пойти не так. При этом ни разу не нулевой риск десинка с софтом, и в целом - оно часто работает, но вообще результат этого может быть и undefined, никто не гарантирует успех всего этого. А я лично видел как восьмера локапнулась при потуге накатить апдейт видеодрайвера, графика умерла, что хотите то и делайте.
> Что странного в нескольких активных экземплярах ПО, все серьёзные системы резервируют.
В этом конечно ничего странного. Но это все сильно усложняет и удорожает.
> И более того, как бы Вы гениально не писали код, всегда найдется
> коллега, который подложит свинью. И с этого момента безопасные диалекты Си
> обретают интерес.В принципе - да. Но с именно panic как реакцией - для всяких околоуправляюших систем это может быть а может и не быть хорошей идеей.
Аварийное завершение наоборот лучше чем выход за пределы.
> Аварийное завершение наоборот лучше чем выход за пределы.Вы еще и не понимаете написанного. Или ловко всё свели только к "выходу за пределы". Вам сказали, что до ошибки в рантайме и не дойдет, ошибочный код будет отловлен еще на этапе компиляции, исполняемого файла даже не получите, чтобы там получился (условный!) "выход за пределы" или аварийное завершение. А так-то да, аварийное завершение лучше, чем критическая ошибка в эксплуатации, согласен. Но некомпилирующаяся из-за кривого ошибочного кода программа еще лучше. О чем и написал аноним выше.
> а всего то надо было сделать безопасную сишкуТак это и не сишка, а какой-то кадавр с си-синтаксисом.
В соседних темах люди не хотят использовать раст из-за просадки производительности на 1-2% по сравнению с чистой сишкой.
А тут просадка в "1.5-5 раз" (ПЯТЬ!!!) и вы называете это заменой сишки??
Лучше уже на шарпе или свифте писать вместо этого недоразумения.
Там не 1-2%. Всё, что во время компиляции не вычислить, не бесплатно.
> Всё, что во время компиляции не вычислить, не бесплатно.Таки да. Простот сишники заб(и|ы)вают на проверки.
А если проверять всё как нужно, то внезапно в си добавляется дофига рантайм проверок, т.к. компайлтам проверки практически отсутствуют. В отличие от раста.Плюс на расте нужно уметь писать.
Вот прикольный тред users.rust-lang.org/t/rust-vs-c-vs-go-runtime-speed-comparison/104107/38
У чела раст оказался в 10+ раз медленнее. Но он не сказал "раст фигня!", а пошел разбираться что не так. И оказалось, что при идиоматическом написании кода можно получить код, который выполняет даже бытрее чем си. Хотя си, наверняка там тоже еще можно было поковырять.
Это хороший инструмент отлавливать ошибки.Знаешь, что есть проблемное место. Собираешь - тестируешь. Ловишь - исправляешь.
Возвращаешь назад обычную Си. Просто еще один способ отловить ошибку.
Кстати - да )
>Это хороший инструмент отлавливать ошибки.Вообще, не очень хороший для сколь-либо крупного проекта.
>Знаешь, что есть проблемное место.
Программа на Си - это часто везде одни сплошные проблемы, что и показывает многолетняя практика.
>Просто еще один способ отловить ошибку.
Ошибки гораздо эффективней ловить на этапе компиляции.
>Вообще, не очень хороший для сколь-либо крупного проекта.Что не так? Фактически инструмент гарантирует безопасность по памяти и убивает любые попытки доступа к "не своей" памяти. Если приложение стабильно, его можно перекомпилировать на "небезопасном" компиляторе и получить свою производительность назад.
>Программа на Си - это часто везде одни сплошные проблемы, что и показывает многолетняя практика.
Необоснованный наброс, учитывая что пол мира написано и работает на C.
>Ошибки гораздо эффективней ловить на этапе компиляции.
Глупости. Большинство реально серьёзных ошибок вообще не связаны с памятью. Память - то скорее про безопасность. Rust гарантирует (по идеологии по крайней мере) полный запрет доступа к "чужой" памяти в safe коде. Только реальность такова, что безопасные данные - это зачастую рутина, а непредсказуемость невозможно предугадать на этапе компиляции. Проще говоря: почти весь реально полезный код невозможно спрогнозировать.
Итог: Rust только защищает доступ. Не защищает от утечек памяти, не защищает от "паники". Семантические ошибки вообще никакой язык не проконтролирует.
Сишный инструмент даёт возможность запретить несанкционированный доступ к памяти и взамен получить информацию о том, в каких местах программы была попытка такого доступа из-за ошибки программиста. В случае отсутствия таких ошибок код можно перекомпилировать любым мейнстримным компилятором.
> Если приложение стабильно, его можно перекомпилировать на "небезопасном" компиляторе и получить свою производительность назад.А как вы докажите эквивалентность результатов от двух разных компиляторов.
В одном могут быть одни UB или Implementation Defined, а в другом - другие.
Потому что в, так называемом стандарте, не сказано точно, там сказано "ну хз, любитесь как хотите".> Необоснованный наброс, учитывая что пол мира написано и работает на C.
И ошибки выгребаются настолько, что некоторые правительства аж забеспокоились.
> Итог: Rust только защищает доступ. Не защищает от утечек памяти, не защищает от "паники".
Паника это не ошибка. Это последствия критической ошибки, которую невозможно обработать.
> Семантические ошибки вообще никакой язык не проконтролирует.
Да и нет.
В С/C++ ты запросто приравняешь ENUM_1 к ENUM_2 так это все инты.
В других языках - у тебя это не выйдет, по типам не сойдется.> В случае отсутствия таких ошибок код можно перекомпилировать любым мейнстримным компилятором.
Который может работать по другому.
Удачного дебага, бгг))
> А визгу то стояло на опеннете что сишка небезопасная, а всего то
> надо было сделать безопасную сишку и никакой раст больше никогда никому
> не необходим.О, опять перепись не умеющих читать опеннетных Экспердов^W Военов Супротив Раста ...
> Защита от проблем с памятью обеспечивается благодаря применению 128-разрядных указателей MonoCaps с метаданными для проверки типов и отслеживания границ буферов, а также задействованию сборщика мусора FUGC
> При каждом обращении к памяти по указателю осуществляется проверка границ и типа (например, в память с типом "ptr" не могут быть записаны данные с типом "int" и наоборот).
> собираемые в Fil-C программы медленнее примерно в 1.5-5 раз, по сравнению со сборкой обычными компиляторами
>
Это поделие надо сравнивать с Go или Java, но никак не с Rust.
Ахаха, какое молниеносное переобувание. От "сишка быстрее раста на 5 процентов" до "замедление в 5 раз это норм" и "GC рулит".
В то время, когда типизированный код, не важно, на rust, ocaml или haskell приниципиально защищён от некоторых ошибок, например null pointer, сишники изобретают какую-нибудь java, который будет падать с NPE. Словно мы живём в 1990-ых, а не 2020-ых.А ATS сишникам даже и не снится.
Типы стали как в бейсике (с аппаратно-зависимыми границами) плюс сборщик мусора. Вообщем как у многих ЯП. Остался только синтаксис.
Конечно не мешало бы более подробно расписать чем сабж лучше zig, но в первом приближении ничем.
zig если и иожно сравнивать - то с СИ.
До плюсов ему еще расти и расти.
(Если он вообще дорастет до чего-то внятного).А сабж, как заявляется, поддерживает С++ - вот уже причем "чем лучше".
Как в анекдоте
"- Ну чем он лучше?
-- Чем Zig!"
А чем вообще зиг лучше чем си в плане безопасности?Как сделать use-after-free на "безопасном" zig'e демонстрировали не раз и не два
opennet.ru/openforum/vsluhforumID3/132732.html#71
opennet.ru/openforum/vsluhforumID3/134833.html#48У зига есть свой unsafe для рантайма @setRuntimeSafety(false), что те же зиганутые и сишники указывали недостатком раста.
В общем когда это васяноподелие дорастет хотя бы до версии 1.0 - тогда и поговорим.
Так если на сабжевом языке начать снимать штаны через голову тоже можно что-нибудь словить. Так что в этом плане паритет.
> Так если на сабжевом языке начать снимать штаны через голову тоже можно что-нибудь словить.Та ну. Это просто максимально упрощенный пример.
В сишке тоже такие примеры выглядят смешно "Да кто так вообще может писать??".
И при этом use-after-free попадает в тройку самых популярных причин дыреней.> Так что в этом плане паритет.
Теорема Эскобара в действии))
Ну и зачем оно тогда нужен. Особенно с такими ограничениями как жырнючие указатели и ломание ABI.
Тем что не нужно переписывать код и сишки? И там что заявлена поддержка механизмов "безопасного" программирования?
Каким местом ты вообще сюда zig приплёл?
> Тем что не нужно переписывать код и сишки?Что значит не нужно?
Прямо в новости написано:Другим ограничением Fil-C является принципиальный отказ от сохранения совместимости на уровне ABI для кода на C/C++, что не позволяет связывать собираемый в Fil-C код с библиотеками и объектными файлами, собранными другими компиляторами.Это значит, что для взаимодействия с другими либами тебе придется переписывать все или почти все.
А учитывая просадки в производительности - то нафига оно вообще надо?
смена ABI была про перекомпиляцию, а не про переписывание.
> Это значит, что для взаимодействия с другими либами тебе придется переписывать все
> или почти все.
> А учитывая просадки в производительности - то нафига оно вообще надо?Не переписывать а перекоммилировать. Но в силу развития айти и интеллекта некоторые не понимают разницу между API, ABI и прочими глупостями. Наплодили, понимаешь, умных слов!
> Не переписывать а перекоммилировать.Удачи тебе перекомпилять древних хлам без переписывания)
Особенно если оно приклолочено гвоздями к хакам конкретного компилятора.
> Удачи тебе перекомпилять древних хлам без переписывания)А в чем проблема, собссно? Я скажу -std=чего там (C89 какой?). Компилеры его как умели так и умеют. Лемпелзив 1990, или какого там года - взял и просто скомпилился. Более древние сорцы чем это? K&R C чтоли? Если что на нем написано - может, бобик, таки, сдох и с него надо слезать? Но такой сорц найти реально разве что в музее, в реальном софте окружающем меня я вообще этот синтаксис ни разу не встречал.
> Особенно если оно приклолочено гвоздями к хакам конкретного компилятора.
Не сказать что какая-то массовая проблема в случае сишки. Это ж не питон где каждую версию новые приколы.
Как минимум тем, что пробелы никакие неадекваты не навязывают.
Тем, что неадекваты не выпиливают с языка многострочные комменты
Зачем нужен зиг, если он не вбирает в себя развитие типизации, аналогичное ocaml/haskell/rust/ats?
Это Valgrind на стероидах?
Нет, это не внешняя тулза для поиска "сишных дыреней" при выполнении.
А встроенная система для поиска "сишных дыреней" при выполнении.То есть скорее на минималках, чтобы его можно было в рантайме с меньшими издержками применять. И нельзя было просто выключить извне.
Valgrind медленнее в 30 раз.
> - All allocations are *garbage collected* usingНу, блин, да... яву можно и из сишки сделать. Я так то и -fsanituze=address,undefined могу вхреначить с тем же успехом.
А поможет?
Тут на форуме кидали ссылку на "очередную сишную дырень" в проекте обмазанному санитайзерами.
Искать лениво, но там оно не помогло.
Потому что не было покрыто тестами, очевидно.
И фаззинг не выполняется, или неправильно прикручен.Если бы релиз распространялся бы с санитайзерами, то твоя "дырень" бы просто не выстрелила, так как программа бы скоропостижно скончалась. И работала бы в 10 раз медленнее.
> А поможет?
> Тут на форуме кидали ссылку на "очередную сишную дырень" в проекте обмазанному санитайзерами.Ну если вы готовы скорость в N раз продолбать - то таки asan неплохо факапы работы с памятью просекает. Но это нифига не бесплатно, как и у того сэра.
> Искать лениво, но там оно не помогло.
А на моей памяти - ряд проектов таки под sanitizer'ами и выловили ряд багов и вулнов. Просто не все готовы платить такую цену чтобы постоянно в режиме условной "явы" работать, с инструментацией кода и кучей проверок.
> А на моей памяти - ряд проектов таки под sanitizer'ами и выловили ряд багов и вулнов.Например тот же CLANG, судя по их аудиту
opennet.ru/opennews/art.shtml?num=60707> Просто не все готовы платить такую цену чтобы постоянно в режиме условной "явы" работать, с инструментацией кода и кучей проверок.
А ядро, на котором крутится и финасовая инфраструктура, и миллионы серваков, и даже пользоватльские девайсы, это достаточно критично чтобы уплати цену или еще нет?
Не поможет.
Вот хрестоматийный пример из такой "ненужной" SSL либы:Целая куча дыреней в OpenSSL/LibreSSL - https://www.opennet.dev/opennews/art.shtml?num=58622
- чтение из области вне границ буфера
- Use-after-free
- двойное освобождение памяти
- некорректное разыменование указателя
- разыменование указателя NULL (x2)
ну и еще одна логическая проблема, которая решается нормальными типамиПри этом ворнинги включены, оба проекта обмазаны санитайзерами по самое немогу - и memory, и thread, и еще куча других
https://github.com/openssl/openssl/actions/runs/4124496105
Там даже фаззинг какой-то есть.Так что санитайзеры и анализаторы это как "мертвому припарки".
Да может что-то найдется из элементарного, но скорее для самоуспокоения "я сделал все что мог"))
Уязвимость вызвана неправильной интерпретацией типов (Type Confusion) при обработке адреса-В большинстве ситуаций для успешного осуществления атаки злоумышленник должен контролировать используемый список отозванных сертификатов (CRL)
-Для успешного проведения атаки требуется отправка очень большого объёма пробных сообщений для расшифровки.
-Атака может привести к аварийному завершению приложения или утечке содержимого памяти процесса, выполняемого на стороне клиента
-уязвимость ограничена возможностью инициирования аварийного завершения процесса.
- ...
и так далее. Если кратко то все заканчиватся тем что при попытке выхода за границы - программа крашится ибо собрана с защитой.Тут скорей хакер и солонка...
Люди умудряются написать недетектируемые дыры.
Если в проекте используются анализаторы и прочие детекторы, очевидно, что в релиз попадут только те дыры, которые этими детекторами не находятся.
> Не поможет.
> Вот хрестоматийный пример из такой "ненужной" SSL либы:
> Целая куча дыреней в OpenSSL/LibreSSL - https://www.opennet.dev/opennews/art.shtml?num=58622Так ты ее с asan/ubsan собери - и при попытке выйти за буфер процесс будет просто прибит нафиг, на манер паники в хрусте. А то что скорость просела и RAM больше жрет - так, блин, даже хруст например integer математику только в дебагбилдах санитизирует, по тем же причинам! А в рантайме таки упс :)
Хаха, сколько лет дµряшечники рассказывали "да не нужны никакие дополнительные проверки, нормальный программист не совершает таких глупых ошибок!".А тут бац - парад мутантов, то TrapCʼы, то Circleʼы и вот новый, с применением 16-байтовых указателей и отказом от сохранения совместимости на уровне ABI для кода на C/C++ и сборщиком мусора/.
Наверное что-то случилось))
> Наверное что-то случилось))трон зашатался, вот и зашевелились
Хотел бы я посмотреть, как вы от C ABI откажетесь, программируя задачи реального мира на любом языке, тронные шатуны.
Может со временем и откажемся. PDP-11 тоже казася вечным.
А может нет.Главное отказаться от самой сишки.
Текущие тенденции, начиная от гугла с его "2 из 3х" и даже заявления представителей правительственных учереждений, делают мысль "дыряшка это зло" не такой фантастической.Если приучить людей что СИ/С++ это просто инструменты дырявых бракоделов, то процесс отказа от кривого наследия дидов пойдет веселее.
Главное громко верещать что все перепишут на свой язык. И обвинять других что они не переписывают. Детский подход как всегда.
> Главное громко верещать что все перепишут на свой язык. И обвинять других что они не переписывают. Детский подход как всегда.Главное громко верещать "вы не заставите всех выучить раст" как диды из ядра.
И ставить палки в колеса.
Отказываться выполнять чужую работу - это палки в колеса?
>Отказываться выполнять чужую работуПисать ядро без дыреней - это чужая работа?
> С незначительными модификациями поддерживается сборка OpenSSHИнтересно, это как когда-то в дебиане, где вырезали нужное?
>> С незначительными модификациями поддерживается сборка OpenSSH
> Интересно, это как когда-то в дебиане, где вырезали нужное?Жирный набросю. В дебиане ничего нужного не вырезали.
Это просто вы почему-то считаете ненужное нужным.
>> С незначительными модификациями поддерживается сборка OpenSSH
> Интересно, это как когда-то в дебиане, где вырезали нужное?Не вырезали, а оптимизировали!
https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2008-0166
А он то этот компелятор новый совместим полностью со старым кодом? Или это новое слово в науке, типа Раста.
Ты вообще статью читал? Ну вот честно?"Другим ограничением Fil-C является принципиальный отказ от сохранения совместимости на уровне ABI для кода на C/C++, что не позволяет связывать собираемый в Fil-C код с библиотеками и объектными файлами, собранными другими компиляторами."
Ответ - нет, придется пересобирать-перекомпилять.
> Ответ - нет, придется пересобирать-перекомпилять.Ого, чтобы программа была собрана новым компилятором, оказывается её нужно пересобрать новым компилятором!
Лол, история Раста это прямо как в цитате
"Сначала они тебя не замечают, потом смеются над тобой, затем борются с тобой, а потом" ... начинают лепить корявые велосипеды из костылейВидно последние заявления АНБ и прочих про "дырявые языки" слишком много пятых точек подожгло.
Не столько языки дырявые, сколько руки погромистов. Тот же Си просто даёт полную свободу. Найдите те дыры, которые именно компилятор создаёт.
У тебя логика сломалась. Если программист всегда виноват, то компилятор в принципе дыр создать не может, это всегда будет вина программиста. Какой пример ты тогда ожидаешь?А вот если все перевернуть, чтобы всегда был виноват компилятор, тогда все становится на свои места и сразу понятно какие дыры производят компиляторы.
Да кто борется с Растом? Пускай себе развивается. Никто ему это не запрещает. Просто растаманы думают, что все должны обратиться в их веру. А на самом деле, никто никому ничего не должен.
Еще раз повторяю. Это просто противоречит причинам, по которым создавался Си. Посмотрите сурцы Win 3.1 SDK. Там все на голом асме. Вот чтобы не писать на нем, но иметь те же преимущества по размеру и производительности - изобрели Си. Если Си завернуть в виртуальную машину или что то типа того - от него не будет никакого толку. Просто нынешнее поколение проггеров это не понимает. Они уже привыкли писать ОС на питоне. После этого уже ничего не страшно.
Да, ты полностью прав.
СИ - это переносимый ассемблер *
И его делали, чтобы даже самые тупые прогаммеры (не осилившие фортран) могли наовнячить по быстрому какой-то код. Типа ПХП из 70х.Про корректность или безопасность вообще никто не думал.
Как и про "архитектуру языка". Об этом начали думать примерно когда сочиняли АДУ.* но придется обмазаться ifdef'ами. и подобрать нужную версию компилятора.
И надеяться, что создатели компилятора обработали UB и твой код не сделает тебе больно.
И молиться, что при переходе на след версию языка поведение не поменяется.
А так, в общем вполне переносимый))
Какая безопасность когда у тебя в 70-х сотня ЭВМ на всё США. Если в него залезет хакер и выйдет за пределы буфера, он ничего там не найдет. Кроме безысходности. Больше того сейчас критическая инфраструктура не использует раст, а просто использует закрытый контур. Точно так же как в 70-е. И в 1 году после р.х. Кому нужны твои котики на пхп сайтике? Даже от майнера там толку нуль.
> Какая безопасность когда у тебя в 70-х сотня ЭВМ на всё США.Именно! Но сейчас уже не 70е. А сейчас у тебя в компе/смартфоне куча важной инфы, от банковских/бизнес данных до твоего хоумвидео. И использовать закрытый контур для этого - так себе решение.
А сишники продолжают омнокодить как 70х.> Больше того сейчас критическая инфраструктура не использует раст
И слава богу. Не дорос он еще до нее. Хотя первые примеры уже появляются - Вольво, Рено.
Но еще более слава богу - в критической инфраструктуре дыряшка использует тоже очень редко - там рулит Ада или вообще аппаратные решения. А если и используется, то это всякие мисры, которые при таком кол-ве ограничений с си имеют общего только синтаксис.
И кстати, что подозрительно - Ada Spark стали серебрянным спонсором Rust Foundation.
> аппаратные решениято есть контроллеры с прошивкой на этом вашем богомерзком Си?
Нет. Спец микросхемы.
> Нет. Спец микросхемы.Угу, щас! Разработать чип стоит несколько мегабаксов. Жаба зачастую побеждает - да и логику потом нехило апдейтить уметь, что с ASIC несколько не того.
Ну вот и не отливает никто ECU как именно ASIC, и фирмвара там и на си, и обновляемая. А хрусту пока вон там доверили "ECU". Ага, если детали посмотреть - питанием некритичной вспомогаловки из процика рулить ажно. Капец какая важная и реалтаймная задача, зато трезвона - как будто в космос слетали и вернулись 1 куском. А если копнуть, окажется что практик для "safety" хруста в смысле "отказов" и "потери управления процессом" - по сути еще и нет, и все только начинается. Автомотившики пытаются понять - можно ли это прикрутить к их нуждам. Конкретными спеками и гайдлайнами в потребном для индустриалов виде они, ессно, еще не разродились. А активный хаос в тулчейне активно этому мешает.
>И слава богу. Не дорос он еще до нее.Вроде, только организационно. Технически уже вполне годный язык, в том числе для критической инфраструктуры.
> Вроде, только организационно. Технически уже вполне годный язык, в том числе для критической инфраструктуры.Да, организационно.
Но зная как всякие организации любят бюрократию, это тоже важный момент.
Вон сишники как гордятся своим ISO стандартом, просто неистово)
Хотя стандарт на половину состоит из "а ХЗ как тут сделать - пусть компилятор разбирается. Даже если это 2 числа сложить".
> Вон сишники как гордятся своим ISO стандартом, просто неистово)
> Хотя стандарт на половину состоит из "а ХЗ как тут сделать -
> пусть компилятор разбирается. Даже если это 2 числа сложить".Хреновый стандарт все же лучше чем никакого стандарта вообще - когда какая-то горстка хипстеров в ночнушке очередной раз корежит синтаксис яп по желанию левой пятки, у брутальных индустриалов возникает понимание что да, это в safety critical пока рано. Слишком дерганое пока.
> Хреновый стандартЭто просто хреновый стандарт.
> какая-то горстка хипстеров в ночнушке
ууу... дед разбушевался))
просто посмотри кто в rust foundation> очередной раз корежит синтаксис яп по желанию левой пятки,
вижу что корежит не синтаксис, а таких луддитов как ты
> у брутальных индустриалов возникает понимание что да, это в safety critical пока рано. Слишком дерганое пока.
Угу, наверное индустриалы любят приколапчивать гвоздями версии компиляторов и молиться чтобы CVE было поменьше.
ps наверное вольво и рено недостаточно индустриальные, ну подумаешь автомобили делают
>> Хреновый стандарт
> Это просто хреновый стандарт.Но когда нет никакого стандарта - жто еще хреновее. Сравнивать просто не с чем. И корежинг синтаксиса в хрусте вываливают буквально "с лопаты". Видно же что архитектом там даже не пахнет, валится хаотичный крап и костыли. Просто надергали отовсюду понемногу - без какой лиоь систематизации. Отличный способ сделать большую помойку. Описание синтаксиса хруста в 2 словах.
> просто посмотри кто в rust foundation
Какая разница? Если нечто выглядит как горстка хипстеров и выкатывает релиз как горстка хипстеров я называю это горсткой хипстеров.
И успех всяких серв-консерв и прочих фуксий - поражает всяческое воображение. Вместе с редсдох осями и чем там еще. Максимум что эти безблагодатные могут - даунплеить других и примазываться к чужим заслугам.
> вижу что корежит не синтаксис, а таких луддитов как ты
Т.е. если я не хочу вертухаться за очередной кривой крокозяброй в синтаксисе вываленой с лопаты - сразу луддит? :)
> Угу, наверное индустриалы любят приколапчивать гвоздями версии компиляторов и молиться
> чтобы CVE было поменьше.У них safety во многих случаях означает - сильно другое. Если у тебя что-то взорвалось, сошло с рельс, сгорело, угробило юзера и проч - с тебя спрсят сильно жестче чем за CVE, и вон тот хаос у хруста ему очков форы в этой отрасли совсем не добавляет.
> ps наверное вольво и рено недостаточно индустриальные, ну подумаешь автомобили делают
Это там где запилили аж целый AUX микроконтроллер, питанием вспомогательной фигни управлять, А воплей - как будто на луну слетали? Да, я могу и почитать детали новости и заценить.
Видите ли, хруст вообще неизвестно как юзать в safety critical - а девепоп в стиле "скачайте ночнушку" гарантирует что это так и останется. Ибо одна только валидация тулчейна что он не глючит и не гонит кривой код - сильно отдельная история если вопрос в том что отказ может кого-то поубивать, что-то спалить, или что там еще.
В именно safety critical - под тулчейном хруста как он девелопается сейчас - подпишется только суицидник, которому очень захотелось поиграть в оранжевой робе в баскетбол. С таким девелопом это единственное что ему светит если он подпишется под такой штукой.
>>> Хреновый стандарт
>> Это просто хреновый стандарт.
> Но когда нет никакого стандарта - жто еще хреновее.Неа. Хреновый стандарт это просто обман и завышенные ожидания.
"У нас тут мега язык с офигенным стандартом!!"А потом ты их спрашиваешь, в ты читал раздел 4 того самого стандарта?
Ну там где про всякие ненужные Conformance?
А именно, самый интересный пункт 5, который говорит
A strictly conforming program shall use only those features of the language and library
specified in this International Standard.2) It shall not produce output dependent on any
unspecified, undefined, or implementation-defined behavior, and shall not exceed any
minimum implementation limit.
И что любая програма с UB это какой-то калл и вообще не понятно, можно ли ее называть программой?
От тогда они сразу язык прикусывают.> Сравнивать просто не с чем.
Так и тебе сравнить не с чем. В самом стандарте написано "как сложить 2 числа? а буй его знает, смотрите в доке компилятора".
> Видно же что архитектом там даже не пахнет, валится хаотичный крап и костыли.
> Отличный способ сделать большую помойку. Описание синтаксиса хруста в 2 словах.Лол, ладно слышать такое от адепта АДЫ или фортрана.
Нот от любителей дыряшки))> Какая разница? Если нечто выглядит как горстка хипстеров и выкатывает релиз как горстка хипстеров я называю это горсткой хипстеров.
Твое мнение очень важно для нас (с)
> И успех всяких серв-консерв и прочих фуксий - поражает всяческое воображение. Вместе с редсдох осями и чем там еще. Максимум что эти безблагодатные могут - даунплеить других и примазываться к чужим заслугам.
Амазон, андроид, клоудфаря. Нири, космик и арти. Драйверы asahi и nova/.
Да, не у всех получается, вон недавно обсуждали миниутилиту, которую чел не осилил, но нашлись люди которые его исправили.> Т.е. если я не хочу вертухаться за очередной кривой крокозяброй в синтаксисе вываленой с лопаты - сразу луддит? :)
Нет, ты просто неосилятор.
Просто твой мозг не может осилить еще пару черточе или вопросиков.
В С++ тебе тоже не стоит идти, тк там тоже любят всякие &*.> У них safety во многих случаях означает - сильно другое. Если у тебя что-то взорвалось, сошло с рельс, сгорело, угробило юзера и проч - с тебя спрсят сильно жестче чем за CVE,
А если у тебя пропало со счета 100500 денег?
Или тебе вырубили эл-во по всей стране?
Или взломали систему здравоохранения и больницы не работают?> и вон тот хаос у хруста ему очков форы в этой отрасли совсем не добавляет.
Хаос он где? У тебя в головушке?
Это не мешает вольво и рено использовать раст в автомотив.> Это там где запилили аж целый AUX микроконтроллер, питанием вспомогательной фигни управлять,
> А воплей - как будто на луну слетали? Да, я могу и почитать детали новости и заценить.Да, почитай.
Я не уверен что ты поймешь, но попытаться стоит.> Ибо одна только валидация тулчейна что он не глючит и не гонит кривой код - сильно отдельная история если вопрос в том что отказ может кого-то поубивать, что-то спалить, или что там еще.
Ну пока кучу народу угробила Тойопта с кодом на СИшке.
> В именно safety critical - под тулчейном хруста как он девелопается сейчас - подпишется только суицидник, которому очень захотелось поиграть в оранжевой робе в баскетбол. С таким девелопом это единственное что ему светит если он подпишется под такой штукой.
Звучит не убедительно)
Особенно с учетом твоих пососных знаний по теме.
> Неа. Хреновый стандарт это просто обман и завышенные ожидания.Операция сравнения подразумевает два операнда. Можно быть хорошим и хреновым только по сравнению с чем-то. Если второго операнда совсем нет - ну, упс. Нельзя сранвить что-то и "ничего". И тут хрустики пока - вообще null pointer dereference.
> И что любая програма с UB это какой-то калл и вообще не
> понятно, можно ли ее называть программой?
> От тогда они сразу язык прикусывают.Пафоса много, толку - чуть. На хруст нет стандартов. Есть - голимые ночнушки с лопаты. И это уже довольно много кого достало. В Linux представители корпов уже прямым текстом объяснили что думают о таких практиках релизов.
Хотите услышать то же самое от автомотивщиков каких? И прочих фондов? Если это не придет в более адекватную форму - ну, они просто грохнут финансирование. Ибо как вы себе представляете safety critical применения когда какой-то трэш с лопаты в ночнушках хаотично вываливают?
> Так и тебе сравнить не с чем.
Объективная реальность в том что операция сравнения требует 2 операнда. Это не завсит от того кто проводит сравнение. Если у хруста нет стандарта, операция невалидна что так что сяк.
> Лол, ладно слышать такое от адепта АДЫ или фортрана.
> Нот от любителей дыряшки))А я так то умею в реалтайм и относительно критичные штуки (e.g. "софтварный" DCDC, где факап управления ведет при случае к выгоранию электроники или нагрузки). На си можно писать весьма прилично. Но, конечно, совсем не так как те раздолбаи привыкли.
> Твое мнение очень важно для нас (с)
Это симметрично.
> Амазон, андроид, клоудфаря.
Знатная спайварь и галеры. Я должен сказать "вау"? Не, спасибо, моя жизнь без них лучше :)
> Нири, космик и арти.
Кто все эти люди?
> Драйверы asahi и nova/.
Которые пока в состоянии pie in the sky? На правах выкидышей и в ядре, и в видении мира эплом?
> Да, не у всех получается, вон недавно обсуждали миниутилиту, которую чел не
> осилил, но нашлись люди которые его исправили.Я и заметил - серву пилили цать лет. Мозилле надоело, уволили тиму нафиг. Оно так и телепается где-то там. Недопиленое. Более 10 лет спустя. И это было круто и успешно, типа?
> Нет, ты просто неосилятор.
> Просто твой мозг не может осилить еще пару черточе или вопросиков.Я считаю что хочу видеть улучшение а не ухучшение. И какой-нибудь C++ уже сделал синтакс тем еще брейнфаком. Да, я считаю что Rust зря следовал этому антипаттерну и еще более зря - не нанял себе архитектов для систематизации своего барахла, вместо этого вываливая хаотичные костыли в очередной ночнушке.
> В С++ тебе тоже не стоит идти, тк там тоже любят всякие &*.
Я C++ слегка умею ибо это superset C как таковой. Но сказать что мне нравится его синтаксис когда там местами брейнфакоподобные конструкции попадаются - это покривить душой.
В общем то вопрос в воздухе - когда кто-то сделает нормальный C-like яп без GC годный для системщины, без тех наслоений брейнфаков. На это есть некий спрос. Потому и сабж.
> А если у тебя пропало со счета 100500 денег?
Технически невозможно. А, да, кстати биткоин если что на C++ :)
> Или тебе вырубили эл-во по всей стране?
Никто не юзает хруст в safety critical системах такого плана. Потому что с его релизами ночнушек свет сам будет вырубаться нахрен. И сертифицировать этот хаос на safety critical это сильно отдельные мучения.
> Или взломали систему здравоохранения и больницы не работают?
Судя по списку CVE - хруст вовсе не гарантирует отсутствия таких приколов.
> Хаос он где? У тебя в головушке?
В релизах "скачайте ночнушку" и рандомных набросах в синтаксис без намека на архитектуру. Хипстиков явно не учили что сначала - думают, потом - кодят. А не просто говорят вау и фигачат от забора до обеда, выкатив отчет манагеру.
> Это не мешает вольво и рено использовать раст в автомотив.
Я в отличие от вас вхож в область и могу почитать новость, где сказано что это как раз НЕ критичная к безопасности подсистема. Какая-то aux вспомогаловка незначительная.
> Да, почитай. Я не уверен что ты поймешь, но попытаться стоит.
Я почитал. Это - мелкий вспомогательный МК не критичный к безопасности. Потому что сертицифировать что-то на хрусте под требования безопасности с вон теми релизными практиками - да удачи. Вы явно не подозреваете сколько времени и ресурсов может потребовать даже просто валидация тулчейна на тему что оно хотя-бы не генерит явно кривой код на уже существующей фирмвари.
А я немного догадываюсь как оно. Почему-то. Ибо немного практикую направление в отличие от вас. И софтварный DCDC так то более критичен к потере управления чем просто aux вспомогаловка, там при факапе может выгореть что-то, а не просто вырубиться питание в aux подсистеме, что назойливо - но ни к каким последствиям не ведет.
> Ну пока кучу народу угробила Тойопта с кодом на СИшке.
Так для основного ECU на хрусте вообще ни у кого кода нет пока, внезапно. Опять сравниваем с отсутствующим операндом. И кстати хруст на том железе профачился бы точно так же. Ибо читайте гарантии и как это с MMU дружит. Это МК - у МК нет MMU. Как максимум есть упрощенный MPU но судя по тому что там было - те "системщики" явно не в курсе что так можно было и тем более как это сетапить.
Когда вы проинформируете себя о таких аспектах - мы сможем поговорить как равные. А покуда у вас хайп в голове и минмум знаний.
> Звучит не убедительно)
Так вон там новость была что автомотивщики только еще создали рабочую группу и пиляют "safe" диалект хруста под automotive.
И конечно это не будет тем хрустом к которому ты привык. А что прикольнее, с LLVM это еще и запросто окажется - проприетарщиной махровой. Так что всяких хайпонашек с улицы вообще прокатят и скажут что фирмвари писать - для взрослых дядь, с чемоданом денег. А ты можешь на задворках пытаться из г-на и палок подобие этого собрать - но гарантий ессно никто не даст, особенно с теми практиками релизов.
> Пафоса много, толку - чуть. На хруст нет стандартов. Есть - голимые ночнушки с лопаты.У тебя я вижу какая-та фиксация на лопатах и ночянушках.
Может тебе лучше к доктору?
Никто не заставляет тебя пользоваться найтли версией.> И это уже довольно много кого достало. В Linux представители корпов уже прямым текстом объяснили что думают о таких практиках релизов.
Да, видел. Линукс жаловался на дидов, которые не хотят учить раст.
> Хотите услышать то же самое от автомотивщиков каких? И прочих фондов??
> Ибо как вы себе представляете safety critical применения когда какой-то трэш с лопаты в ночнушках хаотично вываливают?О, так ты еще и инсайдер в автомотив. Какие только люди не встречаются на пеньке!
Ну и опять бред про ночнушки и лопаты...> На си можно писать весьма прилично. Но, конечно, совсем не так как те раздолбаи привыкли.
Какие раздолбаи? Инжинегры тойопты? Писаки в ядре?
Разработчики крипто либ?>> Амазон, андроид, клоудфаря.
> Знатная спайварь и галеры. Я должен сказать "вау"? Не, спасибо, моя жизнь без них лучше :)Телефон у тебя айфоня или аврора?
Клоудфарю ты уже заблочил или кривишься, но на сайты с проверками ходишь?
Я уже насмотрелся на таких нонконформистов, которые на словах "лев толстой".>> Нири, космик и арти.
> Кто все эти люди?Погугли, почитай. Может за умного сойдешь.
ТОР я так понимаю тебе тоже не нужен?>> Драйверы asahi и nova/.
> Которые пока в состоянии pie in the sky? На правах выкидышей и в ядре, и в видении мира эплом?Который прошел сертификацию (мы же тут любим стандартизацию?) и заслужили благодарочку от Торвальдска лично.
> Я и заметил - серву пилили цать лет. Мозилле надоело, уволили тиму нафиг.
А я слышал что это все злые руководители мозиллы увольняли прогаммеров чтобы поднять себе зарплаты.
Всей правды мы конечно не узнаем.> Я C++ слегка умею ибо это superset C как таковой.
Был много лет назад. Сейчас это уже отдельный язык.
> Но сказать что мне нравится его синтаксис когда там местами брейнфакоподобные конструкции попадаются - это покривить душой.
Тем не менее на нем написано очень много софта. Возможно по пользователям даже больше чем на СИ.
Например винда/офис, фотошопы, хром, лиса.. Это реально миллиарды юзеров.
Я уже молчу про то что LLVM и даже GCC написаны на плюсах.О чем это говорит? Что синтаксис это вторично - вопрос привычки и синдрома утенка.
> В общем то вопрос в воздухе - когда кто-то сделает нормальный C-like яп без GC годный для системщины, без тех наслоений брейнфаков. На это есть некий спрос. Потому и сабж.
Вот когда представят - тогда и поговорим.
Последняя попытка в виде Zig пока очень сырая и допускает например такие вещи как user after free.> Технически невозможно. А, да, кстати биткоин если что на C++ :)
Т.е не на СИ? Не удивлен.
> Никто не юзает хруст в safety critical системах такого плана. Потому что с его релизами ночнушек свет сам будет вырубаться нахрен. И сертифицировать этот хаос на safety critical это сильно отдельные мучения.
И опят пукпук про ночнушки. У тебя там все ок?
> Я в отличие от вас вхож в область и могу почитать новость, где сказано что это как раз НЕ критичная к безопасности подсистема.
Типичное "вы находитесь здесь")
Помню как аноны просто с пеной у рта доказывали "да не возьмут раст в ядро"> А я немного догадываюсь как оно.
Да, куда же мне до вас)
>> Ну пока кучу народу угробила Тойопта с кодом на СИшке.
> Так для основного ECU на хрусте вообще ни у кого кода нет пока, внезапно. Опять сравниваем с отсутствующим операндом.Я не с растом сравниваю. Я сравниваю if (СИ == 💩)
Пусть хоть на АДА пишут.>> Звучит не убедительно)
> Так вон там новость была что автомотивщики только еще создали рабочую группу и пиляют "safe" диалект хруста под automotive.Когда допилят - от тогда и посмотрим.
> А что прикольнее, с LLVM это еще и запросто окажется - проприетарщиной махровой.
Хм.. не вижу ничего плохого чтобы писать закрытую фирмварь за много денег.
Не думаю что б̶ы̶д̶л̶у̶ плебсу надо давать возможно лезть в фирмварь автомобилей или другой важной техники.
Хотя теоретически это можно решить законодательно - попал в аварию на патченой машине - лишаешься страховки.
> Я считаю что хочу видеть улучшение а не ухудшение. И какой-нибудь C++ уже сделал синтаксис тем еще брейнфаком. Да, я считаю что Rust зря следовал этому антипаттерну и еще более зря - не нанял себе архитектов для систематизации своего барахла, вместо этого вываливая хаотичные костыли в очередной ночнушке. Я C++ слегка умею ибо это superset C как таковой. Но сказать что мне нравится его синтаксис когда там местами брейнфакоподобные конструкции попадаются - это покривить душой. В общем то вопрос в воздухе - когда кто-то сделает нормальный C-like яп без GC годный для системщины, без тех наслоений брейнфаков. На это есть некий спрос. Потому и сабж.Здесь я полностью согласен. От очень многих вещей в C++ я тоже не в восторге и поэтому многое пришлось упрощать, именно чтоб избавиться от брейнфакоподобных конструкций. Забавно, что растовики почему-то решили, что это очень круто подражать недостаткам плюсов.
>> какая-то горстка хипстеров в ночнушке
> ууу... дед разбушевался))
> просто посмотри кто в rust foundationВ комитете по стандартизации C (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3373.pdf) участвуют представители таких фирм, как Intel, ARM, Apple, Red Hat, IBM, Meta/Facebook и Hewlett Packard. Присутствует представитель от одного из 5 платиновых спонсора Rust Foundation.
В комитете по стандартизации С++ (https://isocpp.org/wiki/faq/wg21), участвуют представители таких фирм, как NVIDIA, Google, Intel, Oracle, Microsoft. Есть как минимум 2 платиновых спонсора Rust Foundation.
> придется обмазаться ifdef'ами. и подобрать нужную версию компилятора.Это не совсем так. У меня 100% исходников компилируются GCC под ОС Linux, Windows (MinGW), BSD, macOS и Haiku.
> Это не совсем так. У меня 100% исходников компилируются GCC под ОС Linux, Windows (MinGW), BSD, macOS и Haiku.Хм.. предположу что это не helloworld.
А как решаются системо-зависимые штуки?
Ну хотя бы пути к файлам, которые для Linux, Windows и macOS слегка разные?
https://en.cppreference.com/w/cpp/filesystem
А, т.е у тебя эти все ifdef просто завернуты в другую либу?
Ну тогда програмы на электроне это круто, а JS - тоже полностью переносимый язык)
> А, т.е у тебя эти все ifdef просто завернуты в другую либу?
> Ну тогда програмы на электроне это круто, а JS - тоже полностью переносимый язык)Попробуй сказать что JS непереносим. Посмеёмся. Он для этого и создавался. Вот только он интерпретируемый.
У компилируемых языков есть один способ переносимости - в общем случае для каждой архитектуры своя реализация. У rust с этим проблемы. Потому что надо много кода дублировать. Меньше чем у любого другого языка проблем у C и C++, ибо они изначально заточены на переносимость - получение своей реализации программы для каждой целевой платформы из одного кода (на это работает система типов и условной компиляции).
>У rust с этим проблемы.Нет никаких проблем, на самом деле, потому что за переносимость LLVM по большей части отвечает.
>Потому что надо много кода дублировать.
Где и зачем?
Это приложение научного назначения, а абсолютная кроссплатформенность - это, скорее, доказательство возможности этого. Проект не слишком прост алгоритмически. В частности, один из последних разработанных методов - многослойная нейронная сеть, обучаемая методом обратного распространения ошибки. А перед ним была линейная алгебра, включая матричные разложения.
По поводу различных ОС потребовались некоторые исследования на всех платформах. При этом macOS и Haiku установлены в VirtualBox под Linux, остальные три - на реальном оборудовании (даже специально нашел три б/у корпуса типа FlexATX, чтобы место сэкономить, и купил KVM). Вся разработка - под Linux, для остальных ОС - только сборка. Конечно, отличаются пути, пользовательские профили, папки конфигурации и т.д. Также есть отличия в синтаксисе пакетных файлов, которые применяются для инсталляции приложений и запуске бэкэндов. Надо сказать, что для Linux, UNIX и Windows данные файлы - те же самые.
Большим плюсом оказался следующий факт. Сейчас бэкэнды сделаны на C++. Но в принципе, Хотя такая задача не ставилась, отдельные модули могут быть составлены на любом языке программирования.
> Большим плюсом оказался следующий факт. Сейчас бэкэнды сделаны на C++. Но в принципе, Хотя такая задача не ставилась, отдельные модули могут быть составлены на любом языке программирования.Ну погоди. Тогда это не уникальная особенность СИ или плюсов.
Сделать некое ядро, к которому будет обращаться другой код это довольно распространенная практика.
И это может быть хоть С/С++, хоть swift (на нем вон кроссплатформенный браузер пишут), хоть какой-то V.Но все равно на каком-то уровне будет те самые ifdefʼы.
Если тебе провезет - то тебе их писать не придется, тк их написал кто-то другой, например в СТД.Но если говорить про си и плюсы - то у них приложение может выдавать разный результат, даже при смене версии компилятора.
Т.е условно на одной машине будет 1, а на другой -1.
Спасибо дидам из коммитета)
вот прям интересно стало - можете привести пример кода, соответсвующего какому-либо стандарту С, без UB, и чтоб от компилятора зависел результат функции?
> вот прям интересно стало - можете привести пример кода, соответсвующего какому-либо стандарту С, без UB, и чтоб от компилятора зависел результат функции?Э... очень сомневаюсь.
Давай ты сначала приведешь пример "кода на СИ без UB".
Потому что даже сложение двух чисел может быть UB))ps напоминает бородатый анекдот:
пришел Программер к Учителю и спросил "Учитель, а вы видели когда-то программу без бага?"
Тот ударил его палкой и сказал "Глупец, лучше представь себе баг без программы!"
дык, если в программе есть ub, то компилятор вправе выдавать любой результат. Тут зависимость от компилятора очевидна.но ок, давайте свой пример, пусть там будет ub. Поглядим как люди себе в ногу стреляют.
Видел пример хелловорлда который выводит название ЯП - или C или C++. Кажется, у Алёны С++ в блоге.
> Видел пример хелловорлда который выводит название ЯП - или C или C++.
> Кажется, у Алёны С++ в блоге.Алену не нашел, но понравился вариант не привязанный к стандарту с90:
#include <stdio.h>
int main(int argc, char **argv){
char arr[100];
int s = sizeof(0, arr);
printf("%d\n", s);
return 0;
}С выдает 8, С++ выдает 100.
Но это разные языки по сути, а не разные компиляторы С.
> Но если говорить про си и плюсы - то у них приложение
> может выдавать разный результат, даже при смене версии компилятора.
> Т.е условно на одной машине будет 1, а на другой -1.
> Спасибо дидам из коммитета)Вообще-то иногда и версию менять не надо — достаточно просто собрать с другими опциями оптимизации...
> ПХП из 70х.Шта?
Phyton уступает C по скорости в 60 тысяч раз. Он никаким образом ему не конкурент.
Ну про 6*10^4 раз это вы, конечно, сиильно загнули.
Производительность даже кор 2 дуо избыточна для тех задач (сеть, I/o) где используется пайтон
то-то у меня кура на райзене полчаса стартует, нужно было брать кор два дуо
Создатели io_uring: "Там хотя-бы 10 тысяч активных соединений наберётся? У нас кор 2 дуо и гигабитка 10 миллионов обрабатывают."
Напомнить, как Windows 3.11 зависала и крашилась?
Напомни, а то у меня вполне нормально работала.
> Напомни, а то у меня вполне нормально работала.1) Любой процесс Win16 забывший толкнуть очередь сообщений окон гарантировал незабываемый экспериенс. Да, и конечно по первости я понятия не имел что так надо было. Это даже Win95 довольно неиллюзорно клинило так то - такая вот "многозадачность", когда попробуй вообще теперь этот процесс без ребута всей ОС прибить вообще?!
2) Программы могли довольно легко повредить память ОС или сделать что-то фатальное с железом, так что потуги пуска досовых (да и не только) программ часто заканчивались ребутом всего этого целиком. И Win95 страдал тем же самым по тем же причинам.
Си не удовлетворяет потребности в безопасности. А об оптимизации, к сожалению, уже мало заботятся и полагаются на производительность аппаратуры.
Получается, что Руст не нужен, но спрашивается, а зачем на него вообще тратят время и средства?
Много чего ненужного существует. Я вот считаю продукцию эппла сферическим ненужно в вакууме,но ведь есть хомячьё, которое её скупает и стоит в очередях перед выходом нового ипхона.
> Получается, что Руст не нужен,Неа, как раз с учетом того, что нынешняя поделка "медленнее примерно в 1.5-5 раз" да еще и GC сверху - раст очень нужен)
> но спрашивается, а зачем на него вообще тратят время и средства?
Твои что ли?
В опенсорсе парад велосипедов это норма.
100500 ДЕ, десятки дистрибутивов, сотни однообразных утилит разной степени кривости...
>> Получается, что Руст не нужен,
> Неа, как раз с учетом того, что нынешняя поделка "медленнее примерно в
> 1.5-5 раз" да еще и GC сверху - раст очень нужен)
>> но спрашивается, а зачем на него вообще тратят время и средства?
> Твои что ли?
> В опенсорсе парад велосипедов это норма.
> 100500 ДЕ, десятки дистрибутивов, сотни однообразных утилит разной степени кривости...я думаю, что не стоит очаровываться на долгий период Рустом, поигрались и ладно
А зачем им очаровываться вообще?Он свою задачу выполняет? Выполняет.
Безопаснее чем сишка? Безопаснее.
Что тебе еще нужно?Очаровательный ли он? Совсем нет. Есть что улучшать.
Если через 10 лет выпустят убийцу раста, который будет давать еще больше гарантий - ну так это будет круто.> поигрались и
используем в проде. И не только мы.
> Что тебе еще нужно?Нужно:
1. В системах с общей памятью для всех процессов я бы хотел гарантию невозможности получить доступ к памяти соседнего процесса при использования только безопасного режима. Гарантии. Ее, к сожалению нет.
Или
2. Возможность нормальной условной компиляции, что бы не надо было дублировать практически всю функциональность для разных реализаций. То, что просто необходимо для системного языка. Сейчас у rust слезы а не условная компиляция.
> 1. хотел гарантию невозможности получить доступ к памяти соседнего процессаИнтересное желание. Такое где-то реализовано?
> 2. Возможность нормальной условной компиляции
А можно пример языка, где, по вашему мнению, сделано так как нужно?
Или оно просто везде плохо, но от этого не легче?
>1. В системах с общей памятью для всех процессов я бы хотел гарантию невозможности получить доступ к памяти соседнего процесса при использования только безопасного режима.Это, вообще, как? Вот есть общая память, вот есть процессы, которые её сообща используют (из условия задачи). Но вам нужно, чтобы один процесс не залез в память другого процесса. Так память общая или уже не совсем?
У Раст, если что, есть такие типы, как RC, RefCell.
Очень просто. На уровне ядра сделать функцию для доступа к памяти с аргументом is_safe_call_from_rust_i_swear_to_god и все запросы к памяти из данного языка проводить через неё.
Если true, то позволять доступ к памяти, если нет, то kernel panic.
Это без оптимизаций. Они лишь реализовали необходимый функционал..
Удивительно, что про ненужность раста пишет Илья - Веб-программист, который программирует на Python и JavaScript (рак современного интернета).
И который рассказывает про Flask/Angular1/Vue2.
А я и на Си программирую и на Руст, но от Руст начинает подташнивать. Карго у них хорош, вот его в Си не хватает
> А я и на Си программирую и на РустВерим, верим.
Но лучше уж на JS.
так да вы и Руст верите, но он идёт лесом. бывает
> вот его в Си не хватаетConan
его лоббируют майки
> его лоббируют майкиЕго лоббирует гугл.
Не просто так они весь дыряшечный код заменяют на раст или на крайняк на с++.
Хотя если посмотреть на поддерживающих Rust Foundation, то там и AWS, и Meta, и Huawei... и это только платиновые)))
https://foundation.rust-lang.org/about/
Гугл, майкрософт, амазон, мета.
Раньше еще нагляднее было из каких организаций, но достаточно погуглить резюме этих членов.
Самое эпичное из того что видел "я не кодю на расте и вообще не кодер, но работала с парламентами и правительствами и такими организациями как гугл и мета" (немного вырвал из контекста, но общий смысл думаю понятен).
> https://foundation.rust-lang.org/about/
> Гугл, майкрософт, амазон, мета.
> Раньше еще нагляднее было из каких организаций, но достаточно погуглить резюме этих членов.Т.е это компании которые делают программы и сервисы которыми пользуются миллионы людей (или даже миллиарды)? Например - винда и хром.
> Самое эпичное из того что видел "я не кодю на расте и вообще не кодер, но работала с парламентами и правительствами и такими организациями как гугл и мета" (немного вырвал из контекста, но общий смысл думаю понятен).
И? Неужели мнение какого-то васяна из интернета так сильно влияет на твое мнение?
Ты смотри "по делам".
Вон клоудфаря пропускает через раст кучу трафика и ничего, не жалуются.
Нет, всё ещё нужен. Ты просто не разбираешься. Эта штука для того, чтобы проверять косяки прямо во время выполнения, разменивая производительность на, своего рода, безопасность. А Rust, чтобы исключить сам класс ошибок работы с памятью во время выполнения и ничего не проверять.
Огласите пожалуйста весь список ошибок которые раст гарантированно исключает.
Нет указателей на удаленные данные, поскольку область видимости значения и ссылки на него сверяются.
Нет состояния гонки, поскольку значение по ссылке с записью можно передать только один раз (чтобы снова передать, нужно вернуть).
Нет сборщика мусора, поскольку значения удаляются сразу при выходе из области видимости.
Я добавлю к тому, что выше написано.Строгая типизация означает невозможность кривого приведения типов.
Паттерн-матчинг проверяет все возможные варианты.
Индексы в масивах всегда неотрицательные числа.
Выход за пределы массива проверяется.
Нет UB.
но эти исключения поделились на unsafe, вы о чём
Такие заявления, после того, как ты выше ты говоришь о том, что программируешь на расте?Что ты там программируешь? Хеллоувролд из rust book написал?
Получается, что ты написал, не подумав. А зачем тогда на тебя родители тратили время и средства?
>Получается, что Руст не нуженА вы готовы к тому, что для выполнения тех же задач потребуется в разы больше железа? И для запуска условной xp потребуется последний райзен?
Названия компилятора и сборщика мусора почему-то напомнили, что Линус Торвальдс собственную ОС назвал - Freax...Тут яростно сравнивают проект с Растом, хотя разница вроде бы очевидна.
Раст утверждает: "весь сишный код нужно выкинуть и переписать".
Проект предлагает: "зачем переписывать? Решение компьютерных проблем вполне можно доверить самому компьютеру".С точки зрения ПО, которому не критична производительность (а это 90% всего софта) - это заведомо более дешевое и перспективное решение, чем "выкинуть и написать правильно".
> С точки зрения ПО, которому не критична производительность (а это 90% всего софта)А потом удивляются почему хром тормозит на свежем i9 и RTX какой-то там.
(напомню, что исторически браузер мало чем отличался от блокнота по потреблению ресурсов, когда программисты были программистами и озадачивались оптимизацией)
> исторически браузер мало чем отличался от блокнота по потреблению ресурсовА содержимое браузера было "слегка форматированный ХТМЛ".
Многие поделки из той эпохи, типа линкса или дилло, даже не поддерживают CSS в полном объеме.Так что твое заявление на уровне "вот раньше телегу можно было починить используя коровью лепеху и палки, не то что сейчас".
Напомню, что современный браузер - это фактически виртуальная машина и среда для исполнения ПО.
Разумеется, к прикладному софту, не требующему оптимизации, браузеры не относятся.
Но относятся к постоянно и динамически изменяющемуся софту, обеспечивающему обратную совместимость. Что неизбежно сопровождается неуклонным ухудшением оптимизации.
Вспоминаю вэб конца 2000х и начала 2010х, тогда был расцвет нетбуков на немощных атомах, и тот вэб был идеален и в плане дизайна вэб страниц и в плане информационного наполнения. И всё летало, не лагало, сейчас же браузер наверное даже более требователен к ресурсам, чем игры AAA.
> Вспоминаю вэб конца 2000х и начала 2010х, тогда был расцвет нетбуковПрошлое идеализируется, есть такой психологический стереотип.
Никакого "расцвета нетбуков" не было - был маркетинговый хайп "вам достаточно ноутбука, на котором мы жестко сэкономили", он лопнул, как и любая ложь.
И сайты тогдашние на них отнюдь не летали. У меня на айпаде с полугигом памяти, например, тормозил и падал... башорг. Да-да, нарочито примитивный сайт... с подключенной баннерной сетью, которая выжирала память, как не в себя.
там реклама на флеше была же
> С точки зрения ПО, которому не критична производительность (а это 90% всего софта) - это заведомо более дешевое и перспективное решение, чем "выкинуть и написать правильно".пока бинарник на расте будет грузиться в раму, сишная прога уже отработает
Вы хотели, сказать "вывалится с сегфолотом"? 😂
> Раст утверждает: "весь сишный код нужно выкинуть и переписать".Это ты утверждаешь.Раст ничего не утверждает, он даже не ИИ. Ну может еще утверждают фанатики или мегаоптимисты, оторванные от реальности. А прагматики, "проводившие исследования в поле", утверждают, что переписывать весь _старый_ сишный код не надо, надо _новый_ код перестать на нем писать и вести разработку новья хотя бы и на расте (для нативной системщины или разного компилируемого).
> Раст утверждает: "весь сишный код нужно выкинуть и переписать".Эээ, если с тобой уже начинают ЯП разговаривать, то наверное стоит отдохнуть.
Ну или к доктору сходить.> Проект предлагает: "зачем переписывать? Решение компьютерных проблем вполне можно доверить самому компьютеру".
Ценой от 1.5 до 5 раз по производительности.
Отличное решение! Просто генитальное!
Ты случайное не в Интеле/Амд работаешь?> С точки зрения ПО, которому не критична производительность (а это 90% всего софта) - это заведомо более дешевое и перспективное решение, чем "выкинуть и написать правильно".
Подумаешь ворд будет тормозить в 3 раза.
Я уже молчу про такую особенность
отказ от сохранения совместимости на уровне ABI для кода на C/C++, что не позволяет связывать собираемый в Fil-C код с бинарными библиотеками и объектными файлами, собранными другими компиляторами
которая не только не позволит использовать системные либы, но и сделает вендорлок на одном компиляторе
> С точки зрения ПО, которому не критична производительность (а это 90% всего софта) - это заведомо более дешевое и перспективное решение, чем "выкинуть и написать правильно".С т.зр. ПО которому критична производительность переписать на расте тоже не вариант.
Раст не нужен и никогда не был нужен. Это заранее устаревший язык раздутый маркетологами.
Поддерживаемый США в вопросах по кибербезопасности.
> С т.зр. ПО которому критична производительность переписать на расте тоже не вариант.А ПО которое должно быть хотя бы более-менее надежным?
Ну типа чтобы не давать рут после нажатия backspace 28 раз?
> Раст не нужен и никогда не был нужен. Это заранее устаревший язык раздутый маркетологами.Твое мнение очень важно для нас (с)
Можешь писать письмо Торвальдсу "Товарищь Линус, вы совершаете невероятную ошибку!"
Безопасные сишечки еще не готовы, а опасный gcc 14 уже жалуется на указатели.
На что именно жалуется?
Оно мило, может иметь некоторое ограниченное применение, но всё-таки это прикрученный контроль в рантайме, отсюда и оверхед, в том числе и по памяти. А современный подход -- максимум контроля в compile-time, а в рантайме -- только то, что никак при компиляции не сделать. В чистом C сделать контроль многих вещей при компиляции в общем случае почти нереально. В C++ -- тоже только при соблюдении определённого стиля программирования (ибо C++ без ограничений допускает всё, что допускает C, и имеет потому все грабли C).
> В чистом C сделать контроль многих вещей при компиляции в общем случае почти нереально.Я думаю реально, просто никто ещё не занялся. Всё что надо, перейти от локального анализа сорцов компилятором к глобальному. Где-то можно обойтись локальным, но для этого надо научиться генерировать к каждой функции описание лайфтаймов указателей в аргументах и возвращаемых значениях.
Программисты, всё же, в большинстве ситуаций, могут доказывать, что их код работает. Они делают это неформально, и как правило они не 100% уверены в своих доказательствах, но даже в этом случае они близки к полноценному доказательству, им совсем чутка не хватает мозгов или времени. Проблема в том, что программист в большинстве случаев усложняет программу ровно до того момента, когда он теряет способность строго доказывать утверждения про неё. После этого он начинает испытывать огромное нежелание делать ситуацию сложнее, но и упрощать ему не очень хочется, потому что придётся переписывать полпрограммы. Всё что надо -- это железный доказыватель, который будет чуть сильнее в доказательствах, чем программист. И это можно, современные математические тулзы это демонстрируют. И такие доказательства, потенциально, могут давать больше гарантий чем Rust, причём с меньшими ограничениями накладываемыми на программиста. Из возможных проблем тут, разве что выход сложности кода за пределы того, что программист может понять даже приблизительно. Железный доказыватель сможет доказать про код, что тот правильный, или указать на неправильность, но не понимая доказательства программист не сможет ничего исправить.
>но не понимая доказательства программист не сможет ничего исправитьСтрого говоря, для того, чтобы пользоваться доказаннной кем-то теоремой, не обязательно понимать её доказательство.
> Защита от проблем с памятью обеспечивается благодаря применению 128-разрядных указателей MonoCaps с метаданными для проверки типов и отслеживания границ буферовЩа придёт МЦСТ и скажет "а у нас так в железе давно работает".
Диалект языка Си - Cyclone, некто не слышал а? велосипеды умеем городить? А наработки дедов взять нельзя?
FUGC (Fil's Unbelievable Garbage Collector)
c ЧСВ у чувака всё в порядке, как в общем то и у линуса
Предложите ему переименовать в FUnGiCid.
Я нубик. Объясните в чем была проблема добавить в Си/++ "безопасные функции"работы с памятью, а не создавать новый язык?
дык безопасных функций в С и так полно.
во-первых, надо как-то заставить программистов ими пользоваться.
во-вторых, в них можно передать неправильные данные, и тогда все равно всё сломается.
в С принято верить программисту - если он написал что надо сломать стек, значит надо - вдруг это такая хитрая оптимизация?
Тео же заставил своих программистов пользоваться безопасными функциями.
Пресловутая "небезопасность" C и C++ в большей степени заключается в криворукости программистов. Просто С и С++ позволяет больше свободы для кода, которой очень любят пользоваться, не пользуясь при этом мозгами... "Безопасные" языки в этом плане более ограничены. При этом они сами, их ядро, рантайм или бутстрап написаны на том же C/C++ ...
>заключается в криворукости программистовВ неизлечимой, заложеннной природой криворукости, я бы сказал.
>При этом они сами, их ядро, рантайм или бутстрап написаны на том же C/C++ ...
Компилятор Rust написан на Rust. А до того, как это стало возможным, использовался OCaml.
В новый стандарт с++ безопасных функций добавили целую кучу.Проблемы:
- все сидят на старом стандарте с++ переход это боль
- даже если перейдут на новый стандарт нет ничего что принудило бы программиста пользовать только безопасные функции. В том же Раст тебя будет принудительно и безальтернативно чикать боров
> Я нубик. Объясните в чем была проблема добавить в Си/++ "безопасные функции"работы с памятью, а не создавать новый язык?1. Диды
Представь что ты 20 лет назад выучил С99, а теперь придется напрячь мозг и выучить что-то новое!
Это просто какое-то хамство заставлять уважаемого деда напрягаться!2. Совместимость
Вот сабж из статьи - не совместим с ABI.
Т.е тебе придется менять компилятор. А у тебя зарыто 100500 хаков для старого компилятора.
И те кто их писали уже давно померли или в деменции.В такой ситуации "взять новый безопасный С/C++" может быть равносильно "посмотреть на старый код и написать заново".
А тут уже можно и более современный язык выбрать.
Так ты сам раст не можешь выучить. Почему это за тебя должно делать кто-то другой?
Rust - пока гораздо более простой язык, чем C++. Его в первом приближении можно освоить за примерно 30-50 часов.
Так и почему ты не выучил раст до сих пор?
А почему ты задаёшь бессвязные вопросы?
Может и выучишь, но писать на нём от этого легче не будет. Для нормального пользования языками навроде раста и си нужно знать устройство машины под которую пишешь, иначе без разницы на чём писать - на пистоне или крестах, всё равно производительность будет никакая. Да и это просто больно, без этого всё правила вводимые растом будут казаться просто бессмысленными догматами, которые ничем не обоснованы.
В зеркало глячнь, может там бревно торчит. Ты сам до сих пор не выучил то что знают деды, а с них требуешь.
>Представь что ты 20 лет назад выучил С99, а теперь придется напрячь мозг и выучить что-то новое!Ну очевидно же, С23!
Ответ очень прост: Тем, кто осилил Си, это не нужно, ну а неосиляторы пилят языки для неосиляторов.
> Ответ очень прост: Тем, кто осилил Си, это не нужно,А можно пожалуйста хотя бы пару имен?
Потому что даже в ядре диды допускают ошибки.> ну а неосиляторы пилят языки для неосиляторов.
Отличная логика, прям как у типичного сишника)
>> Ответ очень прост: Тем, кто осилил Си, это не нужно,
> А можно пожалуйста хотя бы пару имен?
> Потому что даже в ядре диды допускают ошибки.Я больше скажу, даже в процессорах совершают ошибки! И в безопасных компиляторах тоже. Смешно читать про "безопасные" компиляторы для компов на неймановской архитектуре.
> Я больше скажу, даже в процессорах совершают ошибки! И в безопасных
> компиляторах тоже. Смешно читать про "безопасные" компиляторы для компов на неймановской архитектуре.Горит сарай, гори и хата?
Типа если у нас в процессоре может быть ошибка, то будем дружно выходить за пределы буфера и портить чужую память?
Пока рак не вылечим, то переломы пусть сами как-то зарастут?Отличный подход!
> Типа если у нас в процессоре может быть ошибка, то будем дружно
> выходить за пределы буфера и портить чужую память?
> Пока рак не вылечим, то переломы пусть сами как-то зарастут?
> Отличный подход!А это нигде и не предлагается. Никто не заставляет делать ошибки неосиляторов. Имелось ввиду, что безопасность безопасных компиляторов достаточно иллюзорна в реальности, всё тоже самое можно реализовать и без разработки очередного языка.
> А это нигде и не предлагается.Слава богу.
> Никто не заставляет делать ошибки неосиляторов.
А чего они их постоянно делают, то в ядре, то в криптолибах?
Покажи мне хотя бы одно осилятора?> Имелось ввиду, что безопасность безопасных компиляторов достаточно иллюзорна в реальности,
Ваше мнение очень ценно для нас, особенно без единого пруфа.
А вот у гугла почему-то кол-во ошибок уменьшилось.> всё тоже самое можно реализовать и без разработки очередного языка.
Да, мы как раз читаем чего стоит реализовать это в дырявых-dy-design языках.
Замедление в 1,5-5 раз, сборщик мусора...
Предыдущие попытки типа MiraclePtr тоже не взлетели.
>всё тоже самое можно реализовать и без разработки очередного языка.Идите и реализуйте это в браузерах, потом когда справитесь в ядре почините. Потом, за оставшийся софт, типа libarchive приступайте, и только потом, может быть, если у вас останется свободное время, говорите об этом. А то надоело, каждый мажорный релиз, и сообщение "устранён X критических багов, всязаных с некоректной работой с памятью".
> Ответ очень прост: Тем, кто осилил Си, это не нужно, ну а
> неосиляторы пилят языки для неосиляторов.
В том, что у этих двух языков нет выразительной возможности описывать требуемые вещи. Это всё равно, что дать вам простой карандаш и попросить нарисовать цветную картину. А если к этим языкам добавть "цвета", то это уже будет новый язык - cyclone/ats/rust. По научному это называется типобезопасность - выражение дополнительной информации через типы.
> не позволяет связывать собираемый в Fil-C код с бинарными библиотеками и объектными файлами, собранными другими компиляторами
> объясняется тем, что при связывании с незащищённым кодом теряется суть предлагаемой в Fil-C защиты и возникает иллюзия защищённого приложения - при наличии совместимости ABI, у разработчиков возникал бы соблазн собрать в Fil-C лишь отдельные файлы, не утруждая себя портированием всего проекта.Это подложное объяснение. Проблема не в том, что программисты такие, проблема в динамическом отслеживании памяти. Если вызванный memcpy не скомпилирован при помощи Fil-C, то Fil-C не может вообще ничего. Если бы memcpy был бы снабжён аннотацией, декларирующей какие адреса memcpy может трогать, то можно было бы memcpy написать на ассемблере и ABI ему приделать C'шный. Да, memcpy при этом имел бы возможность косячить, но если бы он не косячил, то Fil-C мог бы проверить аргументы и убедиться что вызывающий код не косячит. Без аннотаций же Fil-C может разве что верить в то, что программист вызывает memcpy правильно. Ну или проверять работу memcpy в рантайме, для чего memcpy тоже надо компилировать при помощи Fil-C.
То есть оно не заставляет грамотно писать программы, как Rust, и проверять код ДО сборки программы, а присобачивает доп инфу прямо в готовый код, влияя на производительность, размер и т.д.
Я так понимаю, что Rust привлекателен для тех, кто предпочитает не углубляться в управление памятью. Существует множество ресурсов, посвященных работе с памятью в C, включая темы переполнения буфера и неопределенного поведения. Тем не менее, некоторые программисты про это всё забывают, потому им легче перейти на Rust не напрягая свой мозг.
Если бы раст был привлекательным все бы на него перешли. Но такого и близко нет. То что в больших корпах фанатики пытаются что-то ковырять так это ничего не значит. В корпах что-то постоянно ковыряют, а потом выкидывают в мусорку и никогда больше не вспоминают. Менеджер отчитался и забыл и перешёл в следующую компанию.
> Если бы раст был привлекательным все бы на него перешли.
> Но такого и близко нет.Если бы автомобили были привлекательны, то на них бы все перешли, но такого и близко нет - на улицах сплошные лошади (Аноним из 185х годов).
> То что в больших корпах фанатики пытаются что-то ковырять так это ничего не значит.
Правильно! Надо ориентироваться только на васянов которые пилят свои поделки на том что знают и на легаси проектах которые сидят на стандартах 20 летней давности.
(С99 было заменено в ведре только в 2022 году.. на С11)> В корпах что-то постоянно ковыряют, а потом выкидывают в мусорку и никогда больше не вспоминают. Менеджер отчитался и забыл и перешёл в следующую компанию.
Было бы правда, если бы код выкинули.
Но нет - он уже работает у пользователей.
Только раст это паровой автомобиль. Который не прижился и научил нормальных людей что так делать не надо.
> Только раст это паровой автомобиль. Который не прижился и научил нормальных людей что так делать не надо.Вот тут полностью согласен. Задумка хорошая реализация на двойку с минусом. У меня были на него большие надежды, но, очевидно, сама система его разработки кривая.
Очевидно здесь, скорее другое. Вы не приводите сколь-либо значимой аргументации для подкрепления вашего мнения. Это свидетельствует или о том, что вы просто не совладали (то есть, Питон или Джава Скрипт - это ваш предел), или даже не начинали осваивать язык.
> Который не прижился и научил нормальных людей что так делать не надо.Ещё раз спрошу. А программисты из ведущих фирм планеты (Гугл, Амазон, Клаудфлэр, Дискорд, Дропбокс) об этом знают? Вот недавно новость, кажется, о Volvo мелькала.
> Я так понимаю, что Rust привлекателен для тех, кто предпочитает не углубляться в управление памятью.Возможно. А может они достаточно углубились и понимают, что лучше автоматизовать проверки.
> Существует множество ресурсов, посвященных работе с памятью в C, включая темы переполнения буфера и неопределенного поведения.
Но к сожалению даже программисты из ядра их не читают.
Поэтому ошибки по памяти в С/С++ коде одни и те же десятки лет.> Тем не менее, некоторые программисты про это всё забывают, потому им легче перейти на Rust не напрягая свой мозг.
Странная мысль.
Ты наверное противник скриптов и любишь ручками делать одно и то же десятки раз?
Настоящие программисты всегда старались сбросить рутину на железку - пусть она думает.
>Существует множество ресурсов, посвященных работе с памятью в C, включая темы переполнения буфера и неопределенного поведения. Тем не менее, некоторые программисты про это всё забываютИ что там эти множество ресурсов делают? У сишников было несколько десятилетий, чтобы взять любую систему доказательств, хоть coq, хоть нечто проще, как систему типов ocaml или haskell и внедрить в си. Но тем не менее, даже сейчас, когда уже есть rust, сишники так и не собираются даже начать это делать.
Зато вместо этого, сишники, с опозданием лет на 50 наконец-то изобрели basic.
вот это крутая штука и работает прямо сейчас. думаю ее нужно использовать для этапа тестирования и можно кучу всего найти с ней. релиз конечно собирать без нее.
Этой штукой невозможно будет полноценно тестировать сколь-либо сложный код. А для простого кода она не нужна.
Проект полностью доведён до готовности. Только нужно использовать кастомную libc. И ещё чтобы сбилдить основные проекты нужно их доработать напильником. А так да полностью готов. Только нужно использовать 128-битные указатели и добавить GC. И ещё ограничивает каламбур типов, которое не то чтобы редко используется для оптимизации.
Я вот одного не пойму. У многих "одобренных" языков типа Pascal, Swift, Rust (с unsafe) - те же самые проблемы. А наезжают почему-то только на C++. Умные указатели вполне позволяют работать с памятью безопасно. Просто думать надо головой, соблюдать дисциплину, кодировать качественно. А то сначала понабирают модных вкатунов, и потом визжат про "плохой" C++, и как надо всем побежать за "большевиками" срочно переписывать на расте.
>У многих "одобренных" языков типа Pascal, Swift, Rust (с unsafe) - те же самые проблемы.Первый язык из этого списка почти никому не нужен, второй - нужен только яблочникам, и то не всем, у третьего такой проблемы нет, как минимум без unsafe.
>Умные указатели вполне позволяют работать с памятью безопасноВы давно видели умные указатели в си?
>Просто думать надо головой, соблюдать дисциплину, кодировать качественноИ как вам умные указатели помогут против npe, а если точнее против ub, ибо разыменовывание nullptr - это ub? Много вам умные указатели помогут против утечек памяти в двусвязных списках? А в многопоточных программах?
>А то сначала понабирают модных вкатунов, и потом визжат про "плохой" C++В первую очередь как раз таки эти вкатуны, а то и даже не вкатуны, видившие C++ только на картинках и рассказывают о том, как умные указатели всё решат.
Выберите безопасное подмножество C++ и строго придерживайтесь, не выходя за рамки. Проблема UB сильно преувеличена и раздута любителями поспекулировать на пустом месте. Если вам очень хочется экспериментировать, а не заниматься полезным делом, то можно точно также влезть в дебри и сгенерировать непредусмотренную ситуацию и на других языках. Только - зачем?
> Выберите безопасное подмножество C++А такие вообще есть? Ну которые действительно безопасные?
> и строго придерживайтесь, не выходя за рамки.
И надейтесь что в след версии компилятора список UB не изменится)
> Проблема UB сильно преувеличена и раздута любителями поспекулировать на пустом месте.
Heartbleed это достаточное преувеличение?
OpenSSL написан на C, Assembly, Perl. А я здесь писал про C++.Чтобы безопасно программировать на Си - нужен как минимум актуальный работающий транспайлер (типа как CFront только с учётом накопившихся требований по безопасности за предыдущие десятилетия). Или же использовать исключительно хорошо отлаженные библиотеки. Лично мне в Си не хватает синтаксического сахара для продуктивной работы.
>Выберите безопасное подмножество C++ и строго придерживайтесь, не выходя за рамкиИ где он? Первый же nullptr - и сразу же появляется UB.
>Проблема UB сильно преувеличена и раздута любителями поспекулировать на пустом месте.Сколько мажорных релизов браузеров выходит без исправления очередной дырки?
>и сгенерировать непредусмотренную ситуацию и на других языкахДавайте, сгененрируйте прочу памяти через nullptr в ocaml, haskell, idris, и прочих языках.
Если источник данных неизвестен, то указатель должен быть проверен до разыменования.C и C++ действительно требуют соблюдения дисциплины в программировании, как и язык ассемблера. Нужна педантичность, осторожность, внимательность. Это не игрушечные языки, где можно нанять пачку индусов и легко срезать косты.
Тем не менее, C++ (в отличии от чистого Си), благодаря богатым синтаксическим возможностям, вполне реально приспособить для более безопасного и щадящего режима работы, когда ошибки по невнимательности фундаментально исключаются. Но такой надёжный и устойчивый подход к программированию приходит или с собственным опытом, или благодаря хорошим наставникам.
Да, на Плюсах можно выбрать стиль и ему следовать. Основная проблема в том, что это следование НЕ ОБЯЗАТЕЛЬНО. Легко представить себе ситуацию, когда вы отвлеклись, куда-то засмотрелись, вернулись к работе и пропустили что-то, даже не заметив этого. Компилятор эту вашу оплошность не заметит, потому что он ничего не знает, что вы придерживаетесь какого-то стиля. Хорошо, если ошибка вылезет где-то на тестах. Но часто не вылазит, что и демонстрирует многолетняя практика использования Плюсов разными людьми и последующее обнаружение багов спустя много лет.Ещё одна проблема - это убедить других следовать выбранному стилю. И не просто убедить, а ещё контролировать их как-то. Конечно же речь идёт о коде, где нужно более одного человека на разработку.
Итого. Чтобы начать безопасно программировать на Плюсах, надо совершить кучу подготовительных усилий. А потом ещё и кучу последующих. Учитывая, что Плюсы - язык не тривиальный, в итоге тратится невообразимая куча времени сначала на его обучение в принципе, потом на выработку определённого стиля, а потом ещё на соблюдение этого стиля. И всё ради чего (если речь идёт о новом проекте)?
Если вы строго придерживаетесь конкретного стиля кодинга в Плюсах, то сам этот стиль по определению не даст вам оступиться по неосторожности.Тем не менее, если вам нужен дополнительный "чекер стиля" для контроля нерадивых коллег по цеху, то здесь действительно пригодился бы отдельный инструмент. Уже предлагали несколько экспериментальных вариантов решения: cppfront, carbon, safecpp. Честно признаюсь, все они мне не нравятся из-за своей избыточности (overengineering).
Моё мнение такое - чтобы снизить порог входа в C++, уже давно напрашивается необходимость создания альтернативной стандартной библиотеки. Как это сделать? Смотрим в сторону Qt, идеи для функционала берём из PHP, Python, Tcl. Удобную для понимания и использования для типовых бизнес задач, а не для хакерствующих любителей чёрной магии из тёмных закоулков стандарта. Удобная альтернативная библиотека C++ для бизнеса. Без синтактических извращений, без чёрной магии шаблонов, без паттернов усложнения ради понтов, которые ухудшают возможность понимание кода из-за многословности и неуместного нагромождения символов. Задача - снизить когнитивную нагрузку, чтобы по итогу было значительно меньше логических ошибок.
> И всё ради чего (если речь идёт о новом проекте)?
Понятно для чего - высокая скорость выполнения кода, компактность, низкое потребление оперативной памяти, кроссплатформенность, доступ к огромному количеству готовых библиотек, готовых решений, простой деплоймент.
>Если вы строго придерживаетесь конкретного стиля кодинга в Плюсах, то сам этот стиль по определению не даст вам оступиться по неосторожности.Не знал, что стиль расстановки скобочек влияет на безопасность. Так какой стиль лучше - K&R или Allman?
>Уже предлагали несколько экспериментальных вариантов решения: cppfront, carbon, safecppТут нужно что-то вроде системы типов ocaml/haskell, а то и более продвинутую, и внедрять это нужно прямо в компилятор, и не завтра, а лет сорок назад.
>Моё мнение такое - чтобы снизить порог входа в C++, уже давно напрашивается необходимость создания альтернативной стандартной библиотеки.Стандартной библиотекой такого не решиш, нужно браться за типизацию, которая в плюсах до сих пор уступает ровесникам из восьмидесятых.
>низкое потребление оперативной памятиРазве что по сравнению с js-ом или аналогом
>доступ к огромному количеству готовых библиотек, готовых решенийГотовых библиотек с дырками. Недавно была новость, как в хромом парсер json на раст переписали, ибо плюсовики даже парсер json написать не могут. Это ли не позор? Причём можно понять, когда парсер меняют с условного питона на си, ради скорости, но им было проще взять чужой парсер, чем привести свой к спецификации и отсутствию порчи памяти
>простой деплойментСтитически собранный go или ocaml уже давным давно изобретены.
>Тут нужно что-то вроде системы типов ocaml/haskell, а то и более продвинутую, и внедрять это нужно прямо в компилятор, и не завтра, а лет сорок назад.Ваша критика игнорирует эволюционный характер развития С++, необходимость адаптации и одновременно поддерживания обратной совместимости.
>Стандартной библиотекой такого не решиш, нужно браться за типизацию, которая в плюсах до сих пор уступает ровесникам из восьмидесятых.
Обращение внимания исключительно на типизацию не учтёт всех особенностей, которым соответствует C++ в его текущем виде. C++ развивается, и его возможности продолжают расширяться, в том числе и за счёт улучшений в типизации.
>Готовых библиотек с дырками. Недавно была новость, как в хромом парсер json на раст переписали, ибо плюсовики даже парсер json написать не могут. Это ли не позор? Причём можно понять, когда парсер меняют с условного питона на си, ради скорости, но им было проще взять чужой парсер, чем привести свой к спецификации и отсутствию порчи памяти
Да, как и в любом языке, качество библиотек может варьироваться. Однако утверждение, что плюсовики не могут написать качественный парсер, основано на частном случае и не отражает общей картины. В мире разработки всегда будут существовать инциденты, и каждое сообщество учится на своих ошибках.
>Ститически собранный go или ocaml уже давным давно изобретены.
C++ предоставляет гибкость в деплое, что позволяет избежать необходимости использования контейнеров, таких как Docker. Хотя другие языки также предлагают статическую сборку, это не отменяет преимуществ, которые предоставляет C++ в плане управления зависимостями и эффективности деплоя.
> Ваша критика игнорирует эволюционный характер развития С++, необходимость адаптации и одновременно поддерживания обратной совместимости.Если уже лезть в дебри истории, то плюсы это надстройка, сделанная не спецом (из его же интервью) над отвратительно спроеэктированным языком СИ (который делали стандартом на базар-вокзале из корпов, каждый их которых хотел чтобы именно его код стал стандартным)
Поэтому требование тянуть обратную совместимость в какой-то момент тормозит прогресс.
И сабж кстати ее таки ломает.> C++ в его текущем виде. C++ развивается, и его возможности продолжают
> расширяться, в том числе и за счёт улучшений в типизации.Но изменения делаются в час по чайной ложке.
По сути список фич уже занят до 26 или даже 30 года.
Медленные изменения могут восприниматься как недостаток, но они также обеспечивают стабильность и надежность, что особенно важно для крупных и долгосрочных проектов. В C++ обратная совместимость сохраняется на максимально возможном уровне.
>Ваша критика игнорирует эволюционный характер развития С++В том то и дело, что эволюционны. Вместо того, чтобы подумать, что же нужно конечному пользователю, в плюсах накладывают один слой костылей поверх второго, и конца этому не видно.
>необходимость адаптации и одновременно поддерживания обратной совместимости.До тех пор, пока от обратной совместимости не откажутся, плюсовые погромисты по прежнему будут совершать ошибки, как будь-то на дворе по прежнему восьмидесятые. Банальный nullptr остаётся UB десятилете за десятилетием, и конца края этому не видно.
>Однако утверждение, что плюсовики не могут написать качественный парсер, основано на частном случае и не отражает общей картиныА что оно отражает? Найти формат примитивнее json - это нужно ещё постараться. В книге real world ocaml парсер json-а используется как небольшой учебный пример. Это hello world, пусть и продвинутый.
>C++ предоставляет гибкость в деплое, что позволяет избежать необходимости использования контейнеров, таких как DockerИ у кого плюсы выиргрывают, у питона что ли? Тот же голанг с рождения умеет в статическую линковку, у плюсов перед ним преимуществ в этой области нет. С окамлом аналогично
>Хотя другие языки также предлагают статическую сборку, это не отменяет преимуществ, которые предоставляет C++ в плане управления зависимостями и эффективности деплоя.Нейросеть писала? Вам только что сказали - у плюсов преимуществ нет, а вы опять по второму кругу. Вот к вам вопрос: у rust есть cargo, а что у плюсов? У ocaml есть opam и dune, а у плюсов? А у плюсов нет ничего, ведь на дворе до сих пор восьмидесятые.
А вы лучше всех знаете что нужно конечному пользователю? )))Так мы уже здесь предлагали создать авточекер - если некоторым сложно не выходить за рамки. Есть ещё же и флаги компилятора соответствующие конкретному стандарту. Можно на этом уровне ограничивать (по желанию, разумеется).
Только вы потом окажетесь заложником ваших менеджеров пакетов, мудрёных систем сборки и ада с несовместимостями версий. К тому же обратите внимание например на ноду и npm с их постоянными троянами в пакетах. Это ли преимущество? А на плюсах всё легко фиксируется. Кому очень надо - есть ещё и Conan.
>А вы лучше всех знаете что нужно конечному пользователю? )))Да. Починить скорость компиляции и добавить нормальную типизацию. Но это так, для начала.
>Так мы уже здесь предлагали создать авточекер - если некоторым сложно не выходить за рамки.Вот в том то и дело, что вы только предлагаете, без какого-то результата. И нужна не отдельная утилита, а обязательный пункт в каждом компиляторе
>Можно на этом уровне ограничивать (по желанию, разумеется).Разумеется можно, каждый новый мажорный релиз браузера, и новые уязвимости, связанные с управлением памятью. Вот ни разу не помню, чтобы за последнее время был релиз только с новыми фичами/стандартами
>Только вы потом окажетесь заложником ваших менеджеров пакетовТак не надо говорить, что плюсы кого-то превосходят в деплое или управлением зависимостью. Просто признайте, что плюсы так и остались в восьмидесятых.
>Да. Починить скорость компиляции и добавить нормальную типизацию. Но это так, для начала.Кстати, хорошо что напомнили, как там у раста со скоростью компиляции? ))) Это ещё один пункт почему мне в сторону раста даже смотреть не хочется. Если и буду слезать с плюсов - то пока только джава просматривается как вменяемый вариант. И то не везде и не всегда. По сути, в некоторых ситуациях альтернативы плюсам пока нет, к сожалению. На западе рассматривают Ada. Но у неё тоже вагон недостатков. И что там на Аде написали за 30 лет?
>Вот в том то и дело, что вы только предлагаете, без какого-то результата. И нужна не отдельная утилита, а обязательный пункт в каждом компиляторе
Сделают, если будет на это спрос. И скорее всего он таки будет.
>Разумеется можно, каждый новый мажорный релиз браузера, и новые уязвимости, связанные с управлением памятью. Вот ни разу не помню, чтобы за последнее время был релиз только с новыми фичами/стандартами
Им там до 2026 года вроде дали время всех построить ))) И кто виноват в том, что в гугле колхозят?
>Так не надо говорить, что плюсы кого-то превосходят в деплое или управлением зависимостью. Просто признайте, что плюсы так и остались в восьмидесятых.
Не знаю, мне всё нравится. Можно кодить и по старому, и по новому. Как угодно. В этом и сила плюсов. Полная свобода. Хотите себя ограничить в свободе - ваше право, в Го вон даже зондов телеметрических понапихали))) Ну согласитесь, наш спор ни о чём. Я не отношусь к пламенным революционерам, а просто спокойно изучаю рынок, и текущая ситуация мне подсказывает что плюсы ещё ООЧЕНЬ рано списывать в утиль.
>Кстати, хорошо что напомнили, как там у раста со скоростью компиляции?И что там со скоростью? Я ради интереса решил собрать gluon lang, вполне быстро собрался
>Сделают, если будет на это спрос. И скорее всего он таки будет.Если будет спрос... В восьмидесятые, когда появился ML, уже была теория, воплощённая в этом языке, как обойти определённые грабли. В том то и дело, что плюсовикам нравится портить память, именно что нравится, и отказываться они от этого не хотят. От этого и идут разговоры про обратную совместимость, ибо без обратной совместимости портить память так безнаказано уже не получится.
>Им там до 2026 года вроде дали время всех построитьИ какое чудо свершится в 2026 - выкинут последнюю строчку кода на плюсах?
>и текущая ситуация мне подсказывает что плюсы ещё ООЧЕНЬ рано списывать в утильКонсерваторов везде хватает. В Англии до сих пор не изобрели смесители. А Амиши, до сих пор в веке восемнадцатом(если не раньше) живут.
Да, и ещё. Если вы здесь пишите не с целью поиска истины, а чисто как внештатный пиарщик растофилов, и думаете меня таким образом совратить в раст, то зря стараетесь))). Потому что я уже очень давно в этой теме (с бородатых времён), когда инженеры ещё были творцами, а не гребцами на галерах. У меня есть много интересных заготовок на C++, которыми я не спешу делиться ради личного конкурентного преимущества, по заветам Дональда Кнута.По поводу новомодной движухи, авторы SQLite кстати хорошо ответили. Можете себе повесить в рамочку:
It is possible that SQLite might one day be recoded in Rust. Recoding SQLite in Go is unlikely since Go hates assert(). But Rust is a possibility. Some preconditions that must occur before SQLite is recoded in Rust include:
- Rust needs to mature a little more, stop changing so fast, and move further toward being old and boring.
- Rust needs to demonstrate that it can be used to create general-purpose libraries that are callable from all other programming languages.
- Rust needs to demonstrate that it can produce object code that works on obscure embedded devices, including devices that lack an operating system.
- Rust needs to pick up the necessary tooling that enables one to do 100% branch coverage testing of the compiled binaries.
- Rust needs a mechanism to recover gracefully from OOM errors.
- Rust needs to demonstrate that it can do the kinds of work that C does in SQLite without a significant speed penalty.If you are a "rustacean" and feel that Rust already meets the preconditions listed above, and that SQLite should be recoded in Rust, then you are welcomed and encouraged to contact the SQLite developers privately and argue your case.
>Потому что я уже очень давно в этой теме (с бородатых времён), когда инженеры ещё были творцами, а не гребцами на галерахЛегко жить в этоху великих открытий на диком западе, достаточно просто что-то сделать, и навсегда войдёшь в историю, как первый, сделавший это. И как бы криво и нелепо это бы ни было, всё равно первый.
>- Rust needs to mature a little more, stop changing so fast, and move further toward being old and boring.Какая отличная, бессмысленная демагогия. Что значит "old and boring", к какой объективно измеряемой характеристикой это выразить? Если захотеть, то go уже лет десять назад "old and boring", а раст ещё лет сто "new and unfamiliar"
>- Rust needs to demonstrate that it can be used to create general-purpose libraries that are callable from all other programming languages.Это есть не только в расте, это есть даже в дипломных работах студентов, если они этим озаботились
>- Rust needs to demonstrate that it can produce object code that works on obscure embedded devices, including devices that lack an operating system.RedoxOS ему мало?
>- Rust needs a mechanism to recover gracefully from OOM errors.Впервые вижу хорошую, годную критику раста. Однако, как человек, который немного интересовался системым программированием, могу сказать, что автор лицемерит. Вместо того, чтобы сказать "мне лень писать в режиме nostd и самостоятельно писать всю стандартную библиотеку, как это принято на си, когда даже аллокаторы и ввод-вывод реализуются с нуля, я скажу, что раст этого не может".
>Если вы здесь пишите не с целью поиска истины, а чисто как внештатный пиарщик растофилов, и думаете меня таким образом совратить в раст, то зря стараетесьМеня давно волновал вопрос: создать компилятор и правила для более защищённого варианта чем си под силу даже просто начитанному студенту, так почему же это происходит с таким скрипом, даже когда вариант уже есть? И вот, автор sqlite на него ответил. Спасибо, это действительно достойно висеть в рамочке, как памятник лени и переводу стрелок.
>Легко жить в этоху великих открытий на диком западе, достаточно просто что-то сделать, и навсегда войдёшь в историю, как первый, сделавший это. И как бы криво и нелепо это бы ни было, всё равно первый.IMHO, раньше в программировании было больше свободы выражения идей и энтузиазма, академическое сообщество активно развивалось, а инженеры-программисты стремились к инновациям и новым открытиям. Сейчас же лучшие специалисты из академической среды часто перекупаются крупными корпорациями, что приводит к застою и снижению творческого подхода.
>Какая отличная, бессмысленная демагогия. Что значит "old and boring", к какой объективно измеряемой характеристикой это выразить? Если захотеть, то go уже лет десять назад "old and boring", а раст ещё лет сто "new and unfamiliar"
Аргумент о том, что C/С++ "old and boring" по сути связан с его стабильностью и проверенностью временем. Быстрое изменение языка, как в случае с Rust, может быть проблемой для больших и долгосрочных проектов, где стабильность важнее новизны.
>Это есть не только в расте, это есть даже в дипломных работах студентов, если они этим озаботились
Они скорее всего имели в виду бинарный интерфейс приложений (С ABI).
>RedoxOS ему мало?
Пока мало... )))
>Впервые вижу хорошую, годную критику раста. Однако, как человек, который немного интересовался системым программированием, могу сказать, что автор лицемерит. Вместо того, чтобы сказать "мне лень писать в режиме nostd и самостоятельно писать всю стандартную библиотеку, как это принято на си, когда даже аллокаторы и ввод-вывод реализуются с нуля, я скажу, что раст этого не может".
Тем не менее, здесь у Rust есть куда расти...
>Меня давно волновал вопрос: создать компилятор и правила для более защищённого варианта чем си под силу даже просто начитанному студенту, так почему же это происходит с таким скрипом, даже когда вариант уже есть? И вот, автор sqlite на него ответил. Спасибо, это действительно достойно висеть в рамочке, как памятник лени и переводу стрелок.
Мой выбор в пользу С++ обусловлен реальными преимуществами и опытом, накопленным за многие годы.
А переписывание всего и вся - это долгий путь. Вы даже не представляете насколько долгий. Может лет через 30-50 что-то подобное расту и взлетит. Кто его знает... Но пока будущее раста туманно.
> IMHO, раньше в программировании было больше свободы выражения идей и энтузиазма, академическое сообщество активно развивалось, а инженеры-программисты стремились к инновациям и новым открытиям.Что было довольно просто, тк во-1х кода почти не было, и открытого тоже.
А во-2х - это все оплачивали университеты или корпорации, например belllab.
Это был реально золотой век опенсорса - появление свободных лицензий типа BSD.А потом случилась катастрофа - борода придумал GPL и смог запудрить комми лозунгами голуву куче народу.
В итоге понятие свободы подменили, а по манифесту программеры должны побираться на пожертвования.> Сейчас же лучшие специалисты из академической среды часто перекупаются крупными корпорациями, что приводит к застою и снижению творческого подхода.
И не специалистов скупают, а просто специалисты хотят кушать и желательно не сухари.
Начинает работать рынок - можно купить спеца и протолкнуть свой код, например, в ядро.> Быстрое изменение языка, как в случае с Rust, может быть проблемой для больших и долгосрочных проектов, где стабильность важнее новизны.
Стабильность ошибок?
Вот пример уязвимости в том самом SQLite opennet.ru/opennews/art.shtml?num=49784
"для совершения удалённой атаки на приложения для выполнения кода злоумышленника"А вызвано это все
"уязвимость вызвана устранённым в выпуске 3.25.3 целочисленным переполнением в реализации движка полнотекстового поиска FTS3, которое могло привести к переполнению буфера "> А переписывание всего и вся - это долгий путь. Вы даже не представляете насколько долгий.
Даже есть переписать половину или треть и остальное завернуть в обертки с проверками - то кол-во ошибок уменьшится.
> Может лет через 30-50 что-то подобное расту и взлетит. Кто его знает... Но пока будущее раста туманно.
Он уже в проде корпов и пока(!!) их все устраивает.
А потом бывший школьник или начинающий студент смотрит "какие языки нужны чтобы работать в гугл/амазон/майкрософт" и популярность языка растет.
Что касается опенсорса, то мне тоже лицензии BSD/MIT симпатичнее. Согласен и с тем, что хорошие специалисты должны иметь возможность работать в достойных условиях. Но в то же время, важно создавать условия и на государственном уровне, при которых инновации могут процветать и вне крупных корпораций.>Стабильность ошибок?
Они здесь имели в виду то, что стандарта нет, гарантий обратной совместимости, много постоянно переделывается итд. На таком языке сложно что-то базировать на долгосрочную перспективу.
То что проблемы есть, я не отрицаю. Возможно, придумают что-то на аппаратном уровне, или пойдут по пути оптимизации инструментов подобных Fil-C.
>Даже есть переписать половину или треть и остальное завернуть в обертки с проверками - то кол-во ошибок уменьшится.
Народ почему-то жалуется, что трудно привыкнуть к постоянному рефакторингу и к сражениям с borrow checker, и что на больших проектах применимость раста пока под вопросом.
Да, возможно Rust покажет обнадёживающие результаты, кое-где наберёт популярность. Но для полной интеграции и зрелости потребуется много времени.
>Они здесь имели в виду то, что стандарта нет, гарантий обратной совместимости, много постоянно переделывается итд. На таком языке сложно что-то базировать на долгосрочную перспективу.Если плюсовикам так не нравится отстутствие стандарта в rust, то где их собственные усилия, для того, чтобы залатать хоть одну из дыр си/плюсов? Сделать новый язык/взять ats/cyclone элементарно, но плюсовики продолжают клепать новые стандарты, типа c++26, вместо того, чтобы делать что-то полезное.
Отсутствие стандарта - это красный флаг не только для плюсовиков.Ваша критика беспочвенна. Я уже говорил про safecpp, carbon (google). Смартпоинтеры - никто не отменял. Если кодировать грамотно, соблюдая правила безопасности - претензий не будет. А плохому танцору вечно что-то мешает.
>Я уже говорил про safecpp, carbon (google)Carbon это вообще отдельный язык
>Смартпоинтеры - никто не отменялРасскажите это производителям браузеров.
Carbon is fundamentally a successor language approach, rather than an attempt to incrementally evolve C++. It is designed around interoperability with C++ as well as large-scale adoption and migration for existing C++ codebases and developers. A successor language for C++ requires:Performance matching C++, an essential property for our developers.
Seamless, bidirectional interoperability with C++, such that a library anywhere in an existing C++ stack can adopt Carbon without porting the rest.
A gentle learning curve with reasonable familiarity for C++ developers.
Comparable expressivity and support for existing software's design and architecture.
Scalable migration, with some level of source-to-source translation for idiomatic C++ code.With this approach, we can build on top of C++'s existing ecosystem, and bring along existing investments, codebases, and developer populations. There are a few languages that have followed this model for other ecosystems, and Carbon aims to fill an analogous role for C++:
JavaScript → TypeScript
Java → Kotlin
C++ → CarbonКарбон интересен. Хотя у гугла семь пятниц на неделе. А здесь нужно приложить громадное количество усилий, чтоб взлетело. Котлин так себе поделка оказалась.
Safecpp - инициатива серьёзнее, как мне кажется.
Крабон конечно классный, но они саими птщут в readme такое
"Carbon Language:
An experimental successor to C++"
и ниже
"Existing modern languages already provide an excellent developer experience: Go, Swift, Kotlin, Rust, and many more. Developers that can use one of these existing languages should."Раз уже создатели языка советуют, то наверное они про что-то знают.
>JavaScript → TypeScript
>Java → Kotlin
>C++ → CarbonОчередное эволюционное наслоение костылей, вместо революционно полного переписывания, но уже правильным образом.
>Карбон интересенЧем? Тем, что до сих пор целпляется за наследие не самых лучших представителей из восьмидесятых?
>Safecpp - инициатива серьёзнее, как мне кажется.Из неопределённго будующего
>IMHO, раньше в программировании было больше свободы выражения идей и энтузиазма, академическое сообщество активно развивалось, а инженеры-программисты стремились к инновациям и новым открытиямНе было такого. Любые изменения пробивались с боем, сквозь консерватизм и тотальное нежелание переучиваться. Это разве что в самом начале при становлении индустрии можно было что-то написать и захватить область, но только появлялось более-менее работающее решение, и всё, оно мгновенно окаменевало, и сдвинуть его становилось почти невозможно.
>Аргумент о том, что C/С++ "old and boring" по сути связан с его стабильностью и проверенностью временемНу да, UB в c++ и через 20 лет ub, стабильнее некуда.
> Быстрое изменение языка, как в случае с Rust, может быть проблемой для больших и долгосрочных проектов, где стабильность важнее новизны.И в чём это быстрое изменение заключается, с учётом наличия editions?
>Они скорее всего имели в виду бинарный интерфейс приложений (С ABI).Они даже не потрудились внятно сформулировать, что им нужно. FFI в rust есть, и он прекрасно линкуется с сишными либами
>Пока мало... )))А в чём это не мало заключается? Опять же, где конкретика, а не демогия?
>Тем не менее, здесь у Rust есть куда расти...Зато вот си и плюсам расти уже некуда
>А переписывание всего и вся - это долгий путь. Вы даже не представляете насколько долгий.Путь в тысячу ли начинается с первого шага. И для того, чтобы этот путь пройти, нужно перестать ждать с моря погоды, а встать и пойти. Теория, а так же практические наработки, как сделать си/плюсы безопаснее есть уже давно. Первая стабильная версия rust - 2012, ATS - 2006, Cyclone - тоже 2006. Уже в 2006 были не просто идеи, а несколько разных реализаций компиляторов, способных предотвратить те или иные ошибки. За восемнадцать лет с релиза Cyclone и ATS уже можно было бы полностью завершить портирование того же sqlite с си на любой из них, а то может даже и си на Cyclone, а потом и на ATS успеть.
Вот по вашим постам видно, что вы молод и горяч)))Хотя ларчик очень просто открывается.
Бизнесу не интересно переписывать рабочие решения по сто раз в угоду новым веяниям текущей моды.
Взлетит что-то надёжное, стабилизируется на несколько лет хотя бы, а лучше на несколько десятков лет (а не как питон, сделали - поломали и так по кругу), тогда заценят и возможно внедрят кое-где. И завоёвывать рынок придётся потом и кровью.
Думаете почему у линукса до сих пор на десктопе считанные проценты, хотя казалось бы что может помешать? А просто бизнесу нужна именно та непонимаемая вами стабильность. Пока Windows держит нетронутым Win32 API а его не выпилят никогда, бизнес будет предпочитать проверенное временем, стабильное и надёжное решение (в понимании бизнеса). Чтоб не было бесконечной свистопляски.
Дошло?
Вот почему и Торвальдс постоянно верещит чуть ли не на каждом собрании своим олухам - НЕ ЛОМАЙТЕ ЮЗЕРСПЕЙС!!!
И я здесь говорю не про какие-то скрипты, поделки-утилитки или технологии-однодневки, а про фундаментальные решения, на которых базируется инфраструктура. Запрос по безопасности - есть, значит будет движение в эту сторону. Однако, пока нет гарантий что выстрелит именно раст в конечном итоге. Многие заметили что там пока есть проблемы для обеспечения продуктивной работы разработчиков (много затрат по времени), раздутые бинарники, уродливый синтаксис, и ещё масса граблей и подводных камней. Хотите играться - играйтесь на здоровье. Индусы из гугла и майков вам в помощь, ах да и ещё клоунские каминг-ауты из пентагона и АНБ.Решение несомненно будет, какое именно - покажет время.
>Бизнесу не интересно переписывать рабочие решения по сто раз в угоду новым веяниям текущей моды.Бизнесу вообще ничего не интересно кроме денег, да и деньги то не всегда интересны. Как пример - защита персональных данных.
>Взлетит что-то надёжное, стабилизируется на несколько лет хотя бы, а лучше на несколько десятков летС такими формулировками, раньше 2030-ых бизнес и не посмотрит на технологию. Только вот не сходится это как-то, тот же голанг вполне активно применяется, как и питон, пхп, с их вечно ломаемой совместимостью, и другие вещи. Или как System67 новое DE на rust делает.
>Думаете почему у линукса до сих пор на десктопе считанные проценты, хотя казалось бы что может помешать?Действительно, что может помешать, кроме отстуствия финансирования, коррупции, и пропихивания винды из каждой щели? Когда в требованиях к дипломам прописывается такая ерунда, как необходимость не в чём нибудь, а именно в Times New Roman, стоит сменить шрифт на другой, и всё, это уже не диплом, а тыква, хотя ни один символ не поменялся.
>Пока Windows держит нетронутым Win32 API а его не выпилят никогда, бизнес будет предпочитать проверенное временем, стабильное и надёжное решениеЭто так привлекательно звучит только для тех, кто винду лет десять не видел, а потом читаешь, истории людей, как они пытаются старый софт на винде запустить, и понимаешь, что это не более чем маркетинг. То мфу требует xp, ибо драйверы не совместимы, то какая-то игра запускается максимум на семёрке. А потом вспоминаешь сам, как запустил иксовый софт внутри Xwayland, и понимаешь, что стабильность можно сделать и своими руками, при наличии достаточных знаний.
>С такими формулировками, раньше 2030-ых бизнес и не посмотрит на технологию. Только вот не сходится это как-то, тот же голанг вполне активно применяется, как и питон, пхп, с их вечно ломаемой совместимостью, и другие вещи. Или как System67 новое DE на rust делает.Это не моя формулировка. А по поводу того, что некоторые на однодневках едут, это называется "лох не мамонт". Некоторые даже языки типа из лоу-кода внедряют))) Но те кто в теме понимают о чём я здесь писал.
>Действительно, что может помешать, кроме отстуствия финансирования, коррупции, и пропихивания винды из каждой щели? Когда в требованиях к дипломам прописывается такая ерунда, как необходимость не в чём нибудь, а именно в Times New Roman, стоит сменить шрифт на другой, и всё, это уже не диплом, а тыква, хотя ни один символ не поменялся.
Я больше скажу, даже госконторы требуют винду, чтоб пользоваться ихними услугами. И далеко не каждый принтер вы на линуксе заведёте, ибо драйверы тупо не пишут.
А почему? А потому. Надо перенимать знания маркетологов и менеджерские повадки, чтоб потом не становиться рабом этих менеджеров. Эти ребята революций не делают и в инфантильных фантазиях не витают.
>Это так привлекательно звучит только для тех, кто винду лет десять не видел, а потом читаешь, истории людей, как они пытаются старый софт на винде запустить, и понимаешь, что это не более чем маркетинг.
Я вам говорю как оно есть фактически. Хотите вы это принимать или нет, инертность бизнеса очень высокая, и поэтому майкрософт охотно идёт навстречу.
>Если источник данных неизвестенЧто значит неизвестен? Ваша формулировка абсурдна, ибо завтра кто-то придёт, добавит одну сторку, и программа сложится в левом месте, о котором человек, добавивший строку, вообще не в курсе, а всё по тому, что матёрый плюсовик подумал - вот в этом месте точно не упадёт.
>то указатель должен быть проверен до разыменования.Интересно и как? Как в плюсах проверять указатель, кроме как засунуть язык в виртуальную машину типа Fil-C? Как вы собираетесь проверять висячие указатели?
>Нужна педантичность, осторожность, внимательность.Есть дивиз функциональных языков: скомпилировалось, значит работает. И плюсовики, за лет сорок, к нему так и не приблизились. В условном haskell или ocaml этот принцип чувствуется особенно хорошо.
>Это не игрушечные языки, где можно нанять пачку индусов и легко срезать косты.Нет таких языков, где можно нанять случайного индуса, и не устроить катострофу.
>благодаря богатым синтаксическим возможностям, вполне реально приспособить для более безопасного и щадящего режима работы, когда ошибки по невнимательности фундаментально исключаютсяВ плюсах есть возможности для замысловатого отстерла ноги. Тех же алгебраических типов, которые бы отсекли значительное количество ошибок в плюсах нет. Да даже сырые указатели до сих пор не запретили, сделав хотя бы слабое подобие Cyclone.
>Но такой надёжный и устойчивый подход к программированию приходит или с собственным опытом, или благодаря хорошим наставникам.Или достаточно взять язык с нормальной семантикой, и тогда компилятор сам будет объяснять, как делать можно, и как - нельзя.
"Скомпилировалось, значит работает" может быть применим к функциональным языкам, но C++ предоставляет более глубокий контроль над ресурсами, что важно для системного программирования.Вас никто не заставляет пользоваться тем, чего до сих пор "не запретили". Ну вы же наверное не жалуетесь на то, что в расте unsafe не запрещают)))
Компилятор может помочь с проверкой, но ответственность за качественное программирование всегда лежит на разработчике.
>"Скомпилировалось, значит работает" может быть применим к функциональным языкамНет, это может быть применено к любому языку с хорошо развитой системой типов. Хоть к ооп. Есть язык, crystal, как гораздо более типизированный ruby, так там это правило тоже работает.
>но C++ предоставляет более глубокий контроль над ресурсами, что важно для системного программирования.И какми образом это отменяет возможности типизировать плюсы? Или все ваши познания о типизации ограничиваются этими самими плюсами? Через типизацию можно выразить много чего, вплоть до безопасной работы многопоточных программ.
>Вас никто не заставляет пользоваться тем, чего до сих пор "не запретили".И что мне останется делать? Факториалы писать? Любая сложная логика на плюсах неизбежно повлечёт за собой огромное количество небезопасного кода.
>Ну вы же наверное не жалуетесь на то, что в расте unsafe не запрещают)))Вы серьёзно не понимаете разницу между тем, когда небольшой процент приложения unsafe, и тем, когда абсолютно весь код unsafe или только притворяетесь?
>Компилятор может помочь с проверкойТолько вот помощь компиляторов на порядки различается. Тот же компилятор плюсов радносно превратит nullptr в UB, а раста - сообщит об ошибке и остановит компиляцию.
Я понимаю вашу боль. Освободить иногда память вручную - для вас это очень сильное колдунство. Тогда пешыте на безопастных языках. Именно для таких как вы они и создаются. Благодарю за внимание.
>Освободить иногда память вручную - для вас это очень сильное колдунствоЗато деды, для которых это не колдунство, регулярно дарят баги и уязвимости. Одно только ядро чего стоит
> Зато деды, для которых это не колдунство, регулярно дарят баги и уязвимости.
> Одно только ядро чего стоитНу так если свое ядро на хайпе нафигачить - получаются редсдохи и фуксии всякие. И работает еще хуже в результате...
>и как надо всем побежать за "большевиками" срочно переписывать на расте.За меньшевиками.
чтобы С был безопасным нужно программистов переводить на него с ассемблера, после пары лет сидения на ассемблере.
>чтобы С был безопасным нужно программистов переводить на него с ассемблера, после пары лет сидения на ассемблереУтопия.
Ну да, макроассемблер это конечно безопасый язык. Ха-Ха. Си это один шаг от макроассемблера и работает по принципу - "вы этого хотели? получите". Техника работы в макроассемблере очень хорошо вписывается в Си и те кто работал на макроассемблере всегда будут в восторге от Си.
> Си это один шаг от макроассемблера и работает по принципу - "вы этого хотели? получите"Особенно с ub, когда оригинальный код по неведомому принципу молча трансформируется во что получится. Без ошибок или хотя-бы предуждений
> Техника работы в макроассемблере очень хорошо вписывается в Си и те кто работал на макроассемблере всегда будут в восторге от Си.Те, кто не ел ничего слаще лимона, всегда будут в восторге от морковки
>> Особенно с ub, когда оригинальный код по неведомому принципу молча трансформируется во что
>> получится. Без ошибок или хотя-бы предужденийНу что за бред вы тут понаписали. Ксли компилятор переводит орининальный код в неизвестно что то это 1. проблема конкретного компилятора, 2. от исходного языка это не зависит, будь то Си или Паскаль или любой другой "безопасный" язык.
> Ксли компилятор переводит орининальный код в неизвестно что то это
> 1. проблема конкретного компилятора,А еще конкретного программиста, и конкретных пользоватлей.
Ну и гвоздь в крышку гроба всяким кукурекам про "наш код переносимый".
Особенно весело когда в древних приложениях зафиксирована версия компилятора, тк хаки на других уже не работают> 2. от исходного языка это не зависит, будь то Си или Паскаль или любой другой "безопасный" язык.
Еще как завист.
Если в том недоразумении, которое именуют стандартом, написано "А фиг его знает как сложить два числа! Пусть это будет UB и писаки компиляторов разберутся, кто во что горазд" - то еще как зависит.
Ещё раз: Си это системный язык, и должен оставаться таким, в одном шаге от макроасемблера. Писателей на питоне просьба не беспокоится. С Си может работать только человек точно знающий что он делает. Если бы Линус небыл таким мы бы никогда не увидели линукса.
> Ещё раз: Си это системный язык, и должен оставаться таким, в одном шаге от макроасемблера.Еще раз для глупеньких - СИ хуже чем макроасемблер.
Я считаю что ассемблер это круто, но дыряшка это шаг, причем назад.> Писателей на питоне просьба не беспокоится.
Размер твоего ЧСВ и снобизм, думаю, даже больше чем твоя глупость.
> С Си может работать только человек точно знающий что он делает.
Но таких нету ¯\_(ツ)_/¯
Десятки лет одни и те же ошибки - святая троица "double free - out ouf bounds - use after free", ну и всякие тупейший "приравнял в ENUM_1 значение ENUM_2, ну а х-ли, оно все равно все инты".> Если бы Линус небыл таким мы бы никогда не увидели линукса.
Это тот самый Линус, который признается что даже менеджмент памяти за 30 лет не осилили или другой какой-то?
"You'd think that all the basics would have been fixed long ago, but they're not. We're still dealing with basic issues such as memory management."
>Ну что за бред вы тут понаписали.Как хорошо, когда сишники/плюсовики начинают писать конкретику и выдают себя с головой.
>1. проблема конкретного компилятораСразу видно, что вы определение ub не читали. UB - это буквально что угодно, любое непредсказуемое действие. Специально привожу гиперболизированный пример:
SomeType * ptr = maybeNull();
anotherVar = ptr->someField;
if (!ptr) {
ptr = createObject();
}
Типичный хейтер раста ожидает, что если maybeNull вернёт null, то createObject обязательно вызовется. А вот компилятор может так не считать. Он видит, что строкой выше ptr разыменновывается, а разыменновывать null нельзя, как следствие ptr точно не null, следовательно if можно вырезать. И вырезает этот код молча, без каких либо предупреждений. И сколько аналогичных "улучшений" вносит компилятор в код - неизвестно.
>2. от исходного языка это не зависит, будь то Си или Паскаль или любой другой "безопасный" язык.Зависит. C# в отличии от си гарантированно чесно упадёт, код на си может и не упасть, если повезёт. Например, если код будет
anotherVar = ptr[someBigOffset];
то указатель просто перепрыгнет несколько первых защищённых страниц, и прочитает мусор. Аналогичный код на Ocaml/Rust просто не соберётся, так как оба этих языка не дадут обратится к maybeNull, и потребуют от программиста написать проверку. Ассемблер молча соберёт код "как есть", и вызов createObject в бинарнике будет. То, что код упадёт раньше, чем его достигнет - ассемблер не волнует.
Погоди, они еще не сталкивались с великолепными UB типа
#include <cstdlib>typedef int (*Function)();
static Function Do;
static int EraseAll() {
return system("rm -rf /");
}void NeverCalled() {
Do = EraseAll;
}int main() {
return Do();
}Ведь UBшка может сделать ВСЕ ЧТО УГОДНО в том числе удалить весь диск.
>[оверквотинг удален]
> }
> void NeverCalled() {
> Do = EraseAll;
> }
> int main() {
> return Do();
> }
>
Так а зачем вызывать мусор? Там же ничего не инициализировано. Оно просто упадёт и ничего не будет в 99.999% случаев. Хоспаде, и в этом вся ваша критика? Вы ещё скажите, что таблицу умножения нельзя применять без безопасТного калькулятора.
Так коню понятно что здесь падает: anotherVar = 0->someField;Большинство UB самоочевидны. Но сколько у критиков пафосу зато... я фигею.
>Так коню понятно что здесь падаетМожет упасть, а может и не упасть. А может диск отформатировать. Вы же в курсе, что такое UB?
>>код на си может и не упасть, если повезёт. Например, если код будет
>>anotherVar = ptr[someBigOffset];
>>то указатель просто перепрыгнет несколько первых защищённых страниц, и прочитает мусор
>Большинство UB самоочевидныИ как вы заметите эти 5 строчек, в проекте на миллионов десять строк? Или вы думаете, что вам их будут подписывать "упадёт здесь"?
>Но сколько у критиков пафосу зато...Компилятор это найдёт? Нет. Так что вся критика обоснована.
> И как вы заметите эти 5 строчек, в проекте на миллионов десять
> строк? Или вы думаете, что вам их будут подписывать "упадёт здесь"?Очень просто. Там где потенциально возможен ноль, я всегда проверю на ноль. Я совершенно не представляю как можно допустить вызов метода не зная точно что там есть объект. Это простейшая база. Как букварь.
>Компилятор это найдёт? Нет. Так что вся критика обоснована.Так в том то и дело что даже если такой дикий кейс приключится (что я на своей практике не припомню) - оно просто упадёт. Ничего искать даже не надо. Дебагер сам покажет.
В данному случае обращение к полю структуры. Но не суть.Если хотите лайфхак, вот один из макросов который сходу вас избавит от множества распространённых проблем с памятью:
#define safe_free(x) if (x) {free((void*)x); x=0;}
> Если хотите лайфхак, вот один из макросов который сходу вас избавит от
> множества распространённых проблем с памятью:....и добавит несколько новых, ибо указатели бывают и на указатели (и массивы указателей), а вон со совсем не гарантирует что указатель не юзался где-то еще.
Более того - представляете, указателей на некий объект может быть более 1. И то что вы занулили вот этот и деаллоцировали объект - вовсе не обязывает воооон те указатели занулиться.
Прикиньте, указатели можно присваивать друг другу например! И вооон то, присвоенное, могло где-то юзаться.
В этом смысле штуки типа борова - пытаются трекать lifetime переменной/объекта несколько более радикально.
И чё это вы мне щас прям америку открыли? Я имел в виду что во многих частных случаях это получается всё равно удобнее чем просто free().
>от множества распространённых проблем с памятью:Типичный подход от сишника: найти заплатку, которая уродливо выглядит и решает полтора варианта проблемы, и предъявлять её как фундаментальное решение всех проблем. Вот вам небольшой пример:
foo->field = bar;
baz->field = foo->field;
safe_free(foo->field);
allocSomeData();
safe_free(baz->field);
И для избежания такой ситуации, вам уже потребуется хранить указатель на указатель, чтобы при safe_free(foo->field) обнулялся ещё и baz->field. Возможно, за пару десятилетий таких исканий вы и изобретёте джаву или голанг.
Ну да, оно не всегда применимо. Для того и Си++ со смартпоинтерами изобрели.
>Для того и Си++ со смартпоинтерами изобрели.Ещё одно решение, покрывающее лишь часть задач, и преподносящееся как решение всех остальных проблем.
>Там где потенциально возможен ноль, я всегда проверю на ноль.В таком случае, вы совершаете ритуал ради ритуала, забивая код ненужными проверками, так как вы не знаете точно, бывает там null или нет.
>Я совершенно не представляю как можно допустить вызов метода не зная точно что там есть объектВ нормальных языках эта информация отображается в типе. А ещё, это секрет, никому не говорите, но и информацию о размере массивов тоже можно отразить в типе. Называется, зависимые типы. Посмотреть можно в Idris, ATS. И проверятся это будет во время компиляции. Представьте себе, проверка на выход за границы во время компиляции. И с пользовательским вводом это тоже работает.
>Так в том то и дело что даже если такой дикий кейс приключитсяА чем вы занимаетесь? Hello world пишите? При работе со сложными типами данных, например, синтаксическими деревьями, нужно постоянно быть готовым к сюрпризам.
>оно просто упадёт. Ничего искать даже не надо. Дебагер сам покажет.Вы не настоящий сишник/плюсовик. UB - это НЕОПРЕДЕЛЁННОЕ поведение. И если ваша программа упала, то вам уже повезло. Но расчитывать на то, что она будет падать всегда - нельзя, поскольку поведение - НЕОПРЕДЕЛЁННОЕ. Буквально на другой версии компилятора падать оно может прекратить.
Но если вы не понимаете, как падения на nullptr можно избежать, то подумайте о висячем указателе. В данном случае, вам даже отладчик не поможет.
>В таком случае, вы совершаете ритуал ради ритуала, забивая код ненужными проверками, так как вы не знаете точно, бывает там null или нет.Так и есть. Некоторая избыточность проверок присутствует. Но все равно это получается быстрее по итогу чем с языками с GC.
>В нормальных языках эта информация отображается в типе. А ещё, это секрет, никому не говорите, но и информацию о размере массивов тоже можно отразить в типе. Называется, зависимые типы. Посмотреть можно в Idris, ATS. И проверятся это будет во время компиляции. Представьте себе, проверка на выход за границы во время компиляции. И с пользовательским вводом это тоже работает.Ну а в Си++ проверки в рантайме. И что с того? Прям критически сильный оверхед выйдет?
>UB - это НЕОПРЕДЕЛЁННОЕ поведение. И если ваша программа упала, то вам уже повезло. Но расчитывать на то, что она будет падать всегда - нельзя, поскольку поведение - НЕОПРЕДЕЛЁННОЕ. Буквально на другой версии компилятора падать оно может прекратить.
Так и есть. Но если творить описываемую вами дичь, то намного чаще просто упадёт.
Вы уже достаточно меня здесь напугали, индоктринировали, поэтому отныне слово "раст" (и его производные) я никогда не буду упоминать всуе, и когда где-то его услышу, обязательно перекрещусь и три раза сплюну через левое плечо.)))
>Так и есть. Некоторая избыточность проверок присутствует.Тогда это - самое настоящие лицемерие, когда раст критикуется за большее число проверок в рантайме, а в си/плюсах на это закрывать глаза
>Но если творить описываемую вами дичь, то намного чаще просто упадёт.По вашему, отображение того, может ли указатель быть null - дичь?
>Ничего искать даже не надо. Дебагер сам покажет.Особенно на релизном билде без отладочных сиволов. Это же не раст с его большими бинарниками
>Особенно на релизном билде без отладочных сиволов. Это же не раст с его большими бинарникамиА в чём проблема сделать Debug билд? Прямо в исходники меня иногда тыкает. Без отладчика можно долго блуждать. Но такое бывает редко. Я раз по 5 всегда всё перепроверяю. Кодить получается медленно, но зато надёжно. Применений куча - для высоконагруженных систем, для десктопа, для WASM, для геймдева, для девайсов.
Чуваки, я вообще-то здесь как бы и не критикую раст (а только передавал то что о нём слышал от народа), и рассматриваю его как один из вариантов, который теоретически может выстрелить лет через 20-30. Но пока проект явно сыроват. И как я уже писал, что на данный момент мне проще будет в джаву в случае глобального шухера.
>А в чём проблема сделать Debug билд?В том, что в отладочном билде может и не падать. Вы же помните про ub?
>Я раз по 5 всегда всё перепроверяюТак можно разве что курсовые писать, в более сложных случаях, например, в ядре это и приводит к постоянным ошибкам и уязвимостям
>Кодить получается медленно, но зато надёжноВ том, что это медленно, я не сомневаюсь, а вот к надёжности вопросы есть
> В том, что это медленно, я не сомневаюсь, а вот к надёжности вопросы естьКонечно есть, именно поэтому в плане надёжности проще на Си++, а не на чистом Си.
Чем эти баталии с растом закончаться в конечном итоге, и как там NSA, CISA и FBI будут искать "решения" для "критически важного программного обеспечения" - очень интересно. Похоже веселье только начинается.
>Очень просто. Там где потенциально возможен ноль, я всегда проверю на ноль.Было бы сказано. Ничего кроме "мне кажется, здесь точно нет null", вы предложить не сможите, как следствие и проверок не будет никаких. Сишники всегда забывают про проверки
> Было бы сказано. Ничего кроме "мне кажется, здесь точно нет null", вы предложить не сможите, как следствие и проверок не будет никаких. Сишники всегда забывают про проверкиНеее, г0внякать на C/C++ не получится. У меня всё строго - избыточные комментарии, документация, графические схемы взаимосвязей (диаграммы подобные UML), постоянные проверки по нескольку раз, тесты. По итогу больше времени экономится когда нету технического долга и когда сразу всё проектируешь грамотно. Возвращаешься к коду через годы - и сразу понимаешь как всё работает.
>У меня всё строго - избыточные комментарии, документация, графические схемы взаимосвязей (диаграммы подобные UML), постоянные проверки по нескольку раз, тесты.И как это всё будет работать, когда вам нужно внести изменение в схему данных, например, сделать какое-то поле nullable? Вы по всему проекту будет вручную ходить и проверять, куда оно пишется? И сколько времени это у вас займёт?
> И как это всё будет работать, когда вам нужно внести изменение в схему данных, например, сделать какое-то поле nullable?Напишу комментарий "мамой клянусь"))
> Вы по всему проекту будет вручную ходить и проверять, куда оно пишется?
Да. Ну может не все, а те про которые вспомню
> И сколько времени это у вас займёт?
Оплата почасовая ;)
>> И сколько времени это у вас займёт?
>Оплата почасовая ;)Так с этого и надо было начинать. Пока я рассуждаю о том, как можно в одиночку написать и поддерживать относительно большой проект, вы просто вытягиваете из заказчика деньги
> Так с этого и надо было начинать. Пока я рассуждаю о том,
> как можно в одиночку написать и поддерживать относительно большой проект, вы
> просто вытягиваете из заказчика деньгиЭто какой-то левый аноним "пошутил", отвечая вместо меня.
А раст мне пока не интересен.
P.S. Кстати, наведите порядок в вашем растовском коммьюнити, а то ведёте себя как сборище фриков. Вы где-нибудь видели чтобы например гоферы бегали за плюсовиками и кричали юби-юби-юби, дыряшка-дыряшка-дыряшка? Им это не надо. Потому что у них есть минимальное самоуважение, достаточно солидные инструменты для работы. А про токсичность растовского сообщества уже говорят повсеместно.
> P.S. Кстати, наведите порядок в вашем растовском коммьюнити, а то ведёте себя как сборище фриков. Вы где-нибудь видели чтобы например гоферы бегали за плюсовиками и кричали юби-юби-юби, дыряшка-дыряшка-дыряшка?Ты реально думаешь, что хотя бы половина тех кто так пишет вообще открывали растбук?
Я думаю это просто троли которые устраивают "срач-ради-срача".
Как анон который написал от твоего имени. Это, кстати, мог быть я, но это не точно.> Потому что у них есть минимальное самоуважение, достаточно солидные инструменты для работы. А
> про токсичность растовского сообщества уже говорят повсеместно.Эээ? Я подобное встречал только на ру-форуах (тут, на лоре и еще в паре мест).
На других площадках народ по спокойнее.
>Ты реально думаешь, что хотя бы половина тех кто так пишет вообще открывали растбук?В том то и дело, что тут и половина кодить не умеет.
>На других площадках народ по спокойнее.На других площадках, особенно иностранных, народ отменяет астрофизиков за рубашку.
>Это какой-то левый аноним "пошутил", отвечая вместо меня.А у вас какой ответ? Или решили переобутся, увидев, что разговор зашёл в тупик?
>P.S. Кстати, наведите порядок в вашем растовском коммьюнити, а то ведёте себя как сборище фриков.Я вообще за Ocaml, а в темах про раст тролю сишников. Ибо в си до сих пор нет наработок в плане типов даже из восьмидесятых, не говоря про более поздние годы, а в расте есть.
> И как это всё будет работать, когда вам нужно внести изменение в схему данных, например, сделать какое-то поле nullable? Вы по всему проекту будет вручную ходить и проверять, куда оно пишется? И сколько времени это у вас займёт?Ну точно не больше чем на расте, где на каждый чих нужен рефакторинг и пересмотр архитектуры. Может вам и нравится героически сражаться с боровом и вечно всё переписывать. А мне нужно решать конкретные практические задачи. Как там с библиотеками у раста для практических задач? Только в зачаточном состоянии? Вот поэтому джава в ближайшее время - значительно укрепит позиции. А чтоб слезть с плюсов - это надо чтоб редокс ваш хвалёный вытеснил линукс. Вот тогда поговорим. А пока это всё теоретические споры в курилке. Да, я признаю что во многом вы правы, но вам предстоит впереди нелёгкий путь.
> Ну точно не больше чем на расте, где на каждый чих нужен рефакторинг и пересмотр архитектуры.
> Может вам и нравится героически сражаться с боровом и вечно всё переписывать.Я про такие проблемы слышал только от игрописак - где чел решил полность поменять жанр и внезапно пришлось рефакторить.
Например автор ТОР/Арти доволен переходом на раст.> Как там с библиотеками у раста для практических задач? Только в зачаточном состоянии?
Библиотек много. Наверное не так много как на других языках, но если тебе нужно что-то особенное - то подключай любую сишную.
> Вот поэтому джава в ближайшее время - значительно укрепит позиции.
Хаха, классная шутка.
Я скорее поверю что выстрелит какой-то свифт (куда яблоко нальет денег).> А чтоб слезть с плюсов - это надо чтоб редокс ваш хвалёный вытеснил линукс.
Э.. Линукс вообще-то на СИ, а не на плюсах.
А плюсы уже заменяются растом в андоиде, например. Новый код стараются писать именно на нем.> А пока это всё теоретические споры в курилке.
Понятно что мы мало на что можем повлеять (ну ктоме того чтобы писать проекты), но если смотреть на динамику - то язык сделал большой прогресс за последние годы.
Я, с нетерпением, жду когда начнется его стандартизация.> Да, я признаю что во многом вы правы, но вам предстоит впереди нелёгкий путь.
Угу. Зато будет не скучно)
> Я про такие проблемы слышал только от игрописак - где чел решил
> полность поменять жанр и внезапно пришлось рефакторить.
> Например автор ТОР/Арти доволен переходом на раст.Хде этот артишок обитает? А, пока где-то там? Вот когда оно релизнется - и побудет продуктом - будет смысл говорить чем там доволен автор. И заодно посмотреть насколько именно его задора хватит если тулчейн будут и дальше так корежить.
А если вдруг не хватит - посмотреть сколько будет желающих подхватить знамя. С сишным проектом это не проблема. А вот с хрустом.. почему-то навалом проектов, которые после потери интереса автором - загнулись нафиг.
> Я скорее поверю что выстрелит какой-то свифт (куда яблоко нальет денег).
Смотря куда выстрелит. В ногу своим носителям которым придется признать что у них сотни ненужного и нишевого знания? :)
> А плюсы уже заменяются растом в андоиде, например. Новый код стараются писать
> именно на нем.Его пишет по сути 1 гугл. Может хоть на брейнфаке писать. И пишет. Вон билдсистема у андроида - уникальное барахло с жабой и гадюкой, которой никто кроме ведра не юзает.
> писать проекты), но если смотреть на динамику - то язык сделал
> большой прогресс за последние годы.А как релизился в стиле хаотичной помойки без намека на архитектуру так и релизится. Или что получается если отдать архитектуру и управление релизами безмозглым корпоративным винтикам.
> Библиотек много. Наверное не так много как на других языках, но если тебе нужно что-то особенное - то подключай любую сишную.Я вот чего ожидаю от раста: The version of Rust has been frozen at X (from this point forward all new features will be added in a backwards-compatible manner).
Тогда на этом можно базировать что-то серьёзное. Как на Си, как на Си++, как на Java.
> Хаха, классная шутка. Я скорее поверю что выстрелит какой-то свифт (куда яблоко нальет денег).
Джава заменила Кобол для бизнеса. А свифт - игрушка для айфонов.
> Э.. Линукс вообще-то на СИ, а не на плюсах. А плюсы уже заменяются растом в андоиде, например. Новый код стараются писать именно на нем.
Я в курсе. Посмотрим чем это закончится.
> Понятно что мы мало на что можем повлеять (ну ктоме того чтобы писать проекты), но если смотреть на динамику - то язык сделал большой прогресс за последние годы. Я, с нетерпением, жду когда начнется его стандартизация.
Да, будем наблюдать.
> Угу. Зато будет не скучно)
Это точно)
> Я вот чего ожидаю от раста: The version of Rust has been frozen at X (from this point forward all new features will be added in a backwards-compatible manner).У них есть Editions.
When there are backwards-incompatible changes, they are pushed into the next edition.
https://doc.rust-lang.org/edition-guide/editions/
Т.е ты просто фиксирушь в проекте Rust2018 и у тебя ничего не ломается.Или я не правильно понял твой "запрос" для языка?
>Ну точно не больше чем на расте, где на каждый чих нужен рефакторинг и пересмотр архитектуры.И чем это хуже си/плюсов? Так там мало того, что нужно рефакторить, так ещё и самостоятельно искать места, где нужно рефакторить.
>Может вам и нравится героически сражаться с боровом и вечно всё переписыватьАлтернатива борову - это GC. Ручное управление памятью в стиле си/плюсов - это постоянные проблемы. Когда в условной игре один и тот же уровень постоянно крашится, с типично сишными сообщениями об ошибке, к этому самому си остаются очень крепкие и искренние чувства.
>Как там с библиотеками у раста для практических задач?Вполне себе хорошо, количество библиотек растёт, функционал их тоже. Вот, недавно целое DE под linux на расте делать начали.
>Вот поэтому джава в ближайшее время - значительно укрепит позиции.А джава каким боком?
>чтоб слезть с плюсов - это надо чтоб редокс ваш хвалёный вытеснил линукс.Пока рак не вылечат, зубы лечить не нужно.
> Си это один шаг от макроассемблера и работает по принципу - "вы этого хотели? получите".Нет.
В ассемблере если ты сказа add eax,2 то он это сделает.
А в дыряшке ввели понятие UB, и при сложении двух числе у тебя может быть "все что угодно" по решению компилятора.> Техника работы в макроассемблере очень хорошо вписывается в Си и те кто работал на макроассемблере всегда будут в восторге от Си.
Примерно как и лепка кирпичей из глины вручную)
Я долго думал и не мог понять, что мне так напоминают все эти разговоры про "страшные" UB, и вспомнил - истерику европарламентариев про куки. Точно! Куки - очень страшная угроза и поэтому все европейские сайты просто обязательно должны вывешивать плашки и ломать юзер экспириенс во имя вселенской безопасТности.По сути ведь могли бы и вообще не писать про никакие UB, сделали это чисто для удобства. Но это стали использовать все кому не лень и на каждом углу наводить панику на неокрепшие умы. Пропаганда растофилов она такая... не заржавеет...
И как это защитит, например, от двойного освобождения памяти?
двойное освобождение? а что это такое? Нужно всего лишь быть внимательным и не витать в облаках стуча по клавиатуре. И да, не садится за клавиатуру пока не выложено всё что нужно сделать на бумаге. Это и есть навыки программирования на ассемблере.
>двойное освобождение? а что это такое? Нужно всего лишь быть внимательным и не витать в облаках стуча по клавиатуре.А Линус, и прочие деды из ядра об этом знают?
>И да, не садится за клавиатуру пока не выложено всё что нужно сделать на бумагеФичи от бумажной работы не появятся. А сидеть в досе вам в 2024 году точно не понравится
>Это и есть навыки программирования на ассемблере.Те, кто профессионально знаком с ассембелром, на ассемблере практически не пишут, на нём пишут разве что любители, как хобби. Вот такой вот парадокс.
Ну понятно. садится за клавиатуру не имея чёткого видения что требуется сделать - для этого и нужен "безопасный" язык, а ещё лучше ChatGPT, чтобы он все свм делал.
>садится за клавиатуру не имея чёткого видения что требуется сделатьДавайте, реализуйте на бумаге условню btrfs, и сразу на ассемблере, чтоб и сжатие, и cow, и снапшоты и ещё не забудьте фичу nilfs - с возможностью доступа к старым версиям файла. Так вот, реализуйте её, отладьте на бумаге, найдите в ней все баги, а когда реализуете, то так и быть, можно будет и переписать с листочка. И чтоб ни одного бага не было.
>а ещё лучше ChatGPT, чтобы он все свм делал.Вам в отладке кода на бумаге chatgpt не поможет.
Вот-вот. всё намешал в кучу, и COW, и сжатие и всё всё всё, и желательно всё это имплементировать в одной функции и одним студентом за одну лабу. Ха-Ха.
>всё намешал в кучу, и COW, и сжатие и всё всё всёЧему вы удивляетесь? Современные программы бывают сложными, это вам не в досе над десятью ассемблерными коммандами пол дня медитировать
>и желательно всё это имплементировать в одной функции и одним студентом за одну лабуДа хоть в двух. Вы со своим подходом это не осилите. Сколотить скамейку можно и без сопромата, а вот возвести необоскрёб - нет.
> Чему вы удивляетесь? Современные программы бывают сложными, это вам не в досе над десятью ассемблерными коммандами пол дня медитироватьПричём здесь ассемблер и дос? Топик о Си и я имел ввиду квалификацию человека работающего на Си. А ваш подход что можно сидеть за клавиатурой без чёткого представления что нужно сделать это уровень "Hello world" и никакой "безопасный" язык вам не поможет продвинутся дальше этого, даже не говоря о том что "...Современные программы бывают сложными...".
>Причём здесь ассемблер и дос?При том, что на ассемблере вы ничего принципиально больше доса не напишите. Та же самая колибри, мало того, что не портируемая, так они сдались, и пользовательский софт у них частично не на ассемблере. Это не говоря про то, что для практических вещей колибри не подходит
>А ваш подход что можно сидеть за клавиатурой без чёткого представления что нужно сделатьЧёткого представления ни у кого нет, поскольку как бы ни было ТЗ согласовано, после релиза потребуются доработки. И нет никакого смысла ради добавления одной кнопки исписывать бумажную тетрадь
>>Причём здесь ассемблер и дос?
> При том, что на ассемблере вы ничего принципиально больше доса не напишите.я бы попросил не судить о других по себе. В доСищное время макроассемблер был единственным системным языком. Да и после тоже, особенно в системах реального времени.
> Та же самая колибри, мало того, что не портируемая, так они
> сдались, и пользовательский софт у них частично не на ассемблере. Это
> не говоря про то, что для практических вещей колибри не подходит
>>А ваш подход что можно сидеть за клавиатурой без чёткого представления что нужно сделать
> Чёткого представления ни у кого нет, поскольку как бы ни было ТЗ
> согласовано, после релиза потребуются доработки. И нет никакого смысла ради добавления
> одной кнопки исписывать бумажную тетрадьучись отвечать только за себя.
> И да, не садится за клавиатуру пока не выложено всё что нужно сделать на бумаге.Вспомнился тред с двача про препода, компилирующего код с листочка в голове, а потом ходящего под себя на экзамене из-за RCE
Ого! А кто такой этот авт...> Автор Fil-C, Филипп Пизло, занимает в компании Epic Games пост директора, отвечающего за проекты, связанные с языками программирования.
Ого! Директор, который реально ещё что-то знает и делает! Берём.
Все наезды на Сишников надо перенаправить на угребанский stdio и прочий CRT, где БОЛЬШУЮ ЧАСТЬ ФУНКЦИЙ просто нельзя использовать!!!
Изобретателям всяких strcpy() должно быть стыдно!
По сути замечание верное, но не до конца. Это разрабатывалось ещё во времена PDP–11, когда использование символа конца строки вместо явного указания размера — это отличный хак, позволяющий в разы увеличить производительность в условиях ограниченных объёмов оперативной памяти.Другое дело, что с годами этот подход себя исчерпал, на большинстве архитектур памяти стало достаточно, к тому же встал в полный рост аспект сетевой безопасности.
Стыдно должно быть не изобретателям, стыдно должно быть тем, у кого в 2000–х не хватило ни смелости, ни кругозора чтобы вырвать с корнем и выкинуть zero–terminated строки из стандарта. Хотя проблематичность их использования была очевидна уже тогда. Кучу всего добавили, от долгожданного bool до бесполезных variadic макросов, а фундаментальные вещи порешать — увы. Так по сей день и таскают сишники свои самописные строковые библиотечки из проекта в проект.
Я бы не сказал что корень всех проблем в ZTS - я (тоже) написал себе несколько утилит (функций) для работами со строками на Си и никаких проблем с overflow не имею...В лихие 90-2000ые - да, я даже не знаю, кто бы мог подтолкнуть к таким шагам. Даже всеСИльный M$ накостылял своих strcpy_s намного позже...
> Я бы не сказал что корень всех проблем в ZTSZTS скорее упомянут как наиболее выдающийся пример. Вся стандартная библиотека несёт отпечаток тех времён, технологий и компромиссных решений, которые были актуальны на момент создания языка, но к C99 уже окончательно устарели. Передача указателей без валидации и явно заданного размера, функции с внутренним состоянием, да много чего…
> В лихие 90-2000ые - да, я даже не знаю, кто бы мог подтолкнуть к таким шагам.
В 2000–е. Внезапно, осознание что компьютеры стремительно подключаются в единую сеть, а срыв стека — это не только fun, но ещё и profit. Эпидемии сетевых червей. Массовые взломы уязвимых сетевых сервисов. Золотое время атак переполнением буфера.
> Даже всеСИльный M$ накостылял своих strcpy_s намного позже...
2003 — WG14/N997. Proposal for Technical Report on C Standard Library Security
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n997.pdfА BSD–шники подняли вопрос ещё раньше:
1999 — Todd C. Miller, Theo de Raadt. strlcpy and strlcat — Consistent, Safe, String Copy and Concatenation
https://www.usenix.org/event/usenix99/full_papers/millert/mi...
>Стыдно должно быть не изобретателям, стыдно должно быть тем, у кого в 2000–х не хватило ни смелости, ни кругозора чтобы вырвать с корнем и выкинуть zero–terminated строки из стандартаТогда бы си и плюсы лишились бы своей священной коровы - ОБРАТНОЙ СОВМЕСТИМОСТИ. Это ж сколько кода пришлось бы переписать. Была бы история как с python2 и python3, где у разработчиков так и не хватило смелости выкинуть python и переписать код на другом языке. Хотя некоторые до сих пор на c89 пишут.
Это не язык. Это баблиотека. Никто не заставляет ей прользоваться.
> Это не язык. Это баблиотека. Никто не заставляет ей прользоваться.Очевидно. Я где-нибудь говорил обратное?
Такими темпами, у вас даже стандартной библиотеки нет, не говоря уже про всё остальное, чем так любят гордится сишники