Компании Intel и AMD совместно развивают расширенный набор инструкций ChkTag (x86 Memory Tagging), который будет стандартизирован для унифицированной реализации в x86-процессорах различных производителей. По своим возможностям ChkTag напоминает расширение MTE (MemTag), уже поставляемое в процессорах ARM, и также позволяет блокировать эксплуатацию уязвимостей, вызванных обращением к уже освобождённым блокам памяти, переполнением буфера или обращением к памяти до инициализации...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=64091
> позволяет блокировать эксплуатацию уязвимостей, вызванных
> обращением к уже освобождённым блокам памяти, переполнением
> буфера или обращением к памяти до инициализации.М... т.е. c сишными дырами решили бороться прям на уровне железа?
Неужели все НАСТОЛЬКО плохо?
>Неужели все НАСТОЛЬКО плохо?Да, сишники реально не обучаемые, а переписывать весь софт никаких сил не хватит.
но для использования этих инструкций надо будет переписывать код.. хтя в некоторых случаях умный компилятор может сам нагенерить нужный код наверное..
Эм, нет. Если они будут аналогичны ARM MTE, то для динамической памяти достаточно будет поддержки со стороны аллокатора (см. hardened_malloc и GrapheneOS). Для защиты стека нужно будет собирать со определёнными флагами компилятора.
> Да, сишники реально не обучаемые, а переписывать весь софт никаких сил не хватит.Т.е. все гранты Rust можно уже сворачивать. PROFIT!
Самый разумный подход. А то у ассемблера нет чекера боровов.
> Самый разумный подход.Ага, очень разумно тратить на каждые 16 байт еще полбайта. Вместо того, чтобы перенести проверки на этап компиляции, мы увеличим расход оперативы.
Не, ну понятно что новые сервера и оператива сами себя не продадут.
Там же написано, верхние 4 бита адреса, которые из 64 бит один фиг ни одно приложение и пк не адресует. Хорошо если 50 бит сейчас самые крутые процы могут использовать для адресации.
3% дополнительного потребления ОЗУ, чтобы избавиться от большого класса уязвимостей, найдётся у всех. Памяти даже на ноутбука современных, стыдно сказать, 32ГБ. При том, что приложения слабо отличаются по функционалу от тех, что работали на моём 486DX4-100 с 4МБ оперативы.
Ну и к тому же эти инструкции наверняка будут добавляться компиляторами только при взведении соответствующего флажка. Самоуверенные разработчики могут не пользоваться. Или не включать флажок для релизных сборок.
>> Самый разумный подход.
> Ага, очень разумно тратить на каждые 16 байт еще полбайта.Так эти байты - прямо в указателе вкодированы, в верхушке адреса. Это не есть новая аллокация. Сюрприз!
> Самый разумный подход. А то у ассемблера нет чекера боровов.Самый глупый подход - переносить в рантайм те проверки, которые можно делать на этапе компиляции.
Ну проверь в ассемблерном коде на этапе компиляции, удачи.
> Ну проверь в ассемблерном коде на этапе компиляции, удачи.Зачем? Может нужно просто генерить валидный ассемблерный код, а не всякий булщит?
А "генератор" можно и протестить хорошо, и даже формально доказать при наличии нужного кол-ва денег и времени. В отличие от миллионов строк сишного овнокода.
Может сами ассемблерные команды должны быть безопасны на уровне железа? Тебе никто не гарантирует что боров всё проверит и никто не гарантирует защиту что компилятор специально недосмотрит там где эти нужно Анб.
> Ну проверь в ассемблерном коде на этапе компиляции, удачи.Ты не поверишь, но борроу чекер так и делает :) Только не "в" ассемблерном коде (это, извини, бред какой-то), а перед его генерацией.
> Ты не поверишь, но борроу чекер так и делает :) Только не
> "в" ассемблерном коде (это, извини, бред какой-то), а перед его генерацией.Однако вон там есть немало unsafe кода, а вызовы asm вставок, вещей на C и проч unsafe - by design и следующие полвека это все явно будет с нами. Так что спасителя человечества из борова не получилось. Так, шашлычок на пикнике корпов.
> Однако вон там есть немало unsafe кода, а вызовы asm вставок, вещей на C и проч unsafe - by designНу так именно для этого "unsafe by design" и создают костыли типа сабжа.
> вещей на C [...] следующие полвека это все явно будет с нами
> Так что спасителя человечества из борова не получилосьХочешь сказать, что ложечка Сишки портит бочку Раста? Я думал, ты против Раста воюешь, а тут такой поворот...
> Ну так именно для этого "unsafe by design" и создают костыли типа сабжа.И отлично: не придется писать на птичьих языках не от мира сего, бороться с боровами и чрезмерной типизацией и убивать массу времени при компиле на пруфинг. В железе вон то - фактически бесплатное: компараторы на несколько битов - в делеще по сути ничего не стоят, работают в реалтайме, и свойства чипа не ухучшают.
> Хочешь сказать, что ложечка Сишки портит бочку Раста? Я думал, ты против
> Раста воюешь, а тут такой поворот...Хочу сказать что софта на сишке дохрена - и в ближайших полвека он явно никуда не денется. Потому что вопить на форуме одно, а писать софт - несколько другое.
А успех всяких фуксий и редоксов, затонарасте и прочих го - ну и кому оно такое?
> Хочу сказать что софта на сишке дохрена - и в ближайших полвека он явно никуда не денется.Ахаха, полвека) Какие милые фантазии сишника.
Сишке как инструменту осталось не больше двух лет, дальше только как музейный экспонат.
Запомните этот твит.
На расте кстати постоянные проверки на этапе рантайма. Все обращения по индексу, RefCell, необходимость использовать Arc/Rc потому как за сырой поинтер тебе посоны предъявят - в результате код получается в целом более медленный чем корректный код на C/C++. Но зато safe.
> М... т.е. c сишными дырами решили бороться прям на уровне железа?
> Неужели все НАСТОЛЬКО плохо?Ну да, настолько. Только вот сишечку сдесь обижать не принято, поэтому местные ее защитники сейчас, как всегда, наставят тебе минусов, но по существу ничего возразить не смогут.
> Ну да, настолько. Только вот сишечку сдесь обижать не принято, поэтому местные
> ее защитники сейчас, как всегда, наставят тебе минусов, но по существу
> ничего возразить не смогут.Без этой сишечки - у вас компьютер работать элементарно не будет. Совсем. Никак. На всех уровнях, от фирмвари накопителя и начальной загрузки и прочих ядер до кучи либ, апликух, серверного софта и проч.
> Без этой сишечки - у вас компьютер работать элементарно не будет.Ну, и? Это как-то опровергает утверждение, что с Сишкой все "НАСТОЛЬКО плохо"? Или вы в порыве праведного гнева (Сишечку обижают!) забыли тему обсуждения?
> Ну, и? Это как-то опровергает утверждение, что с Сишкой все "НАСТОЛЬКО плохо"?
> Или вы в порыве праведного гнева (Сишечку обижают!) забыли тему обсуждения?Я лишь констатирую что критиканы забыли - сделать что-нибудь лучше. Поэтому есть то что есть. И либо кушайте что дали либо идите нафиг и делайте сами, лучше.
> Я лишь констатирую что критиканы забыли - сделать что-нибудь лучше.Во-первых, ты изначально не говорил ничего о "сделать лучше" - ты зачем-то начал петь о "без сишечки ничего не будет работать", которое к теме никакого отношения не имеет.
Во-вторых, лучше уже сделано: и языки нормальные изобретены, и новый софт лет 25 как минимум на сишке не пишется.
>Во-первых, ты изначально не говорил ничего о "сделать лучше" - ты зачем-то начал петь о "без сишечки ничего не будет работать"Аргументы закончились, а признавать поражение не хочется.
> Ну да, настолько. Только вот сишечку сдесь обижать не принято,Потому что у культурных людей не принято гадить где сидишь. И без этой самой сишки работать у вас не будет - вот просто совсем нифига.
> Потому что у культурных людей не принято гадить где сидишь.Всяк кулик своё болото хвалит?
Речь не про "гадить". Ручное управление памятью приводит к целому классу ошибок, которых можно было бы избежать.
Так что да, нужно что-то менять, иначе так бы и бегали с палками.
> Всяк кулик своё болото хвалит?Вам как кулику гадящему сверху на головы проходящих мимо виднее. И не стоит обижаться на заряд дроби при случае, имхо.
> Речь не про "гадить". Ручное управление памятью приводит к целому классу ошибок,
> которых можно было бы избежать.А еще оно приводит к предсказуемым и эффективным системам. И иногда такой уровень контроля - нужен.
> Так что да, нужно что-то менять, иначе так бы и бегали с палками.
Ух да, надо срочно выкинуть немодный гаечный ключ и утащить у мужиков из сервиса эвона какую крутилку. С компрессором впридачу. Зато можно будет закрутить все винты болты и шурупы в хате за 3 секунды. И даже поменять кому-нибудь колесо на авто. Правда вот зачем мне это все - в моей хате?
>И иногда такой уровень контроля - нужен.Вот ни разу ни один сишник не объяснил мне, зачем ему нужен UB при разыменновывании нулевого указателя. И макросы без гигиены. И куча других сишных сишностей.
Видят, что все преходят на Эльбрус, вот и зашевелились. Это не сишная проблема, это проблема машинного кода.
> Видят, что все преходят на Эльбрус, вот и зашевелились.ЖЫрный ЖЫР.
Ты думаешь, они не в курсе, куда все клиенты уходят?
Куда угодно, но сотка не на Эльбрус.
Китайцы там что-то похожее пилили емнип, да и у арма не на пустом месте.
>да и у арма не на пустом месте.Сейчас бы vliw путать с risc
Идея тагированной памяти откуда-то взялась и кем-то была опробована.
Криворукость не зависит от языка программирования.
> Криворукость не зависит от языка программирования.Кривость и убогость инструмента приводит к ошибкам.
Внимание у мясных мешков ограничено и на кодовых базах чуть больше хеллоуволда легко что-то упустить, особенно если тебе нужно микроменеджить код на уровне ассемблера.
Что сишники регулярно доказывают "очередной сишной дырой" (с)
А кто unsafe блоки в Rust пишет?
Сишники. Unsafe обычно используют в обвязках к Си-либам.
Одно дело написать один unsafe блок ну пусть даже на 10 строчек, и другое дело - когда вся программа один большой unsafe.
>"Неужели все НАСТОЛЬКО плохо? "Да, на столько всё плохо!
С одной стороны нужное.
С другой ещё один повод заставить обновить железо, как было с TPM2.
С третьей всё равно всплывут новые дыры.Это реклама риск-5, наверное.
>повод заставить обновить железо, как было с TPM2Спецификация TPM 2.0 появилась в 2014 году:
https://en.wikipedia.org/wiki/Trusted_Platform_Module
Т.е. придумали примерно тоже самое, что в местном E2K было чуть не с самого начала - тэгированную память. Забавно, однако.
Даже если и так, зато хоть это в розничных комповых магазинах можно будет купить за приемлемую цену, в отличие от.
Местный E2K когда проявился?
А интеловские-амд когда?
Вот и ответ.Смотреть на лидеров и обходить их ошибки всегда легче.
Правда E2K получился каким-то фиговым, несмотря на это всё)
x86_64 и E2K появился примерно в одно и то же время, около 2000 года.
Если тебе интересно, итаниум появился как раз из эльбруса. Но компилятор не потянули вовремя сделать, это было основной причиной провала.
> итаниум появился как раз из эльбруса.не курите
Не то же самое. На E2K это было сделано, чтобы было, но настолько неэффективно, что практически никто этим не пользуется. Даже программные проверки куда более эффективны. С другой стороны, то, что делается для AMD64, лишь вероятностно предотвратит ошибку.
> придумали примерно тоже самое, что в IBM System/38 было чуть не с самого начала - тэгированную память.
> придумали примерно тоже самое, что в Intel 960 было чуть не с самого начала - тэгированную память.
> придумали примерно тоже самое, что в Burroughs каких-то было чуть не с самого начала - тэгированную память.и так далее
ну тут тоже не совсем наше, в основе была Burrough, хотя мы акцентировали идею тегов и хорошо её развили на практике. Реально удобно, гораздо проще искать источник сбоя. Вообще странно что мало кто её применял, там надо то всего пару битов добавить к проверочным ECC и немного аппаратной логики, очень небольшой процекнт прибавки площади кристалла а выгода очевидна.
Это просто какой-то позор, за более чем полвека сишники до сих пор не узнали ни о зависимых типах, ни об афинных, ни даже об алгебраических. И даже сейчас в этой теме найдутся сишники, которые вместо того, чтобы хотя бы сейчас прочитать об этом, будут рассказывать о том, что нужно быть просто внимательным. И сейчас поверх этой безграмотности сишников делают аппаратные костыли.
> ни о зависимых типах, ни об афинных, ни даже об алгебраическихПокажи мне как это на ассемблере x86 выглядит.
>Покажи мне как это на ассемблере x86 выглядит.О, вы отвечаете как эталонный сишник. Это проверки времени компиляции. Подобно тому, как синтаксически некорректная программа не соберётся, эти проверки отделяют заведомо некорректную программу от корректной. Вот ни разу не слышал, чтобы хотя-бы один сишник жаловался на то, что синтаксически неверная программа не собирается, им почему-то хватает мозгов понять, что как минимум синтаксически она должна быть верна. Но вот про семантику сишники почему-то не думают.
ЗЫ В качестве примера рекомендую посмотреть на ATS. Или на Idris, если не смущает сборщик мусора.
Си проектировался как портабельный кроссплатформерный ассемблер, таким он и остается. Все эти ваши афинные типы, ООП, классы и тд - это всё высокоуровневые абстракции, которые никакого отношения к сгенерированному ассемблерному коду не имеют отношения. Еще раз - Си это как бы такой ассемблер на стероидах, какие к черту афинные типы в асме?А вот синтаксически некорректная программа - это другое (С). Из нее невозможно собрать рабочий ассемблерный код.
> Си проектировался как портабельный кроссплатформерный ассемблер, таким он и остается
> Еще - Си это как бы такой ассемблер на стероидах, какие к черту афинные типы в асме?Пхахаха, вот это розовый мирок! Он был "портабельным ассемблером" во времена PDP-11. С тех пор этот копролить уже давно не ложится на архитектуру современных CPU настолько, что на уровне этих самых CPU приходится лепить костыли специально для Сишечки.
Чем это хуже оптимизаций процессора под плюсы и жаву? Сишечка хотя бы предсказуемая независимо от модели процессора.
> Чем это хуже оптимизаций процессора под плюсы и жаву?Потому что плюсы и жава нормальные языки.
> Сишечка хотя бы предсказуемая независимо от модели процессора.
Сишечка непредсказуема даже при смене компилятора.
А вы вообще про процессоры загнули.
Вообще, всех тех, кто что-то там восторженно вещает про шланг, читать не обязательно. Гцц генерирует вполне предсказуемый код, а оптимизации вполне воспроизводимы вручную при очень большом желании. Это шланг раздувает лапшой, под которую надо пайплайны процессора подгонять. Видимо, у майкрософтовского компилятора научился.
>Вообще, всех тех, кто что-то там восторженно вещает про шланг, читать не обязательно.А мне рассказывали, что у си есть стандарт и в отличии от раста целых два компилятора. Врали значит?
> Сишечка хотя бы предсказуемая независимо от модели процессора
>> предсказуемаяПха-ха-ха... Уморил... То-то в комбинациях реализаций компиляторов и архитектур кол-во UB неконтролируемо множится относительно кол-ва "законных" UB, описанных в стандарте. Это уже не говоря об описках со смыслом "на усмотрение реализации компилятора". Предсказуемая...
>Си проектировался как портабельный кроссплатформерный ассемблерСи не проектировался. Это типичный тяп-ляп и в продакшин. Максимум, о чём они озабоитлись - экономили байты всяких вещах типа размера строки.
>Все эти ваши афинные типы, ООП, классы и тд - это всё высокоуровневые абстракцииВы смешивете абстракции нулевой цены и абстракции требующие определённых затрат времени выполнения.
>Еще раз - Си это как бы такой ассемблер на стероидах, какие к черту афинные типы в асме?После того, как вы выучили си, вы перестали интересововаться CS? Про Cyclone слышали? Про типизированный ассемблер?
>это другоеЯ не помню ни одного раза, когда данная фраза была бы умесна.
>Из нее невозможно собрать рабочий ассемблерный код.То есть из кода с UB можно собрать рабочий код, а из синтаксически неверной программы - нет? Что за ерунда? Как минимум случайное количество nop-ов можно насыпать всегда.
Даже про объектный ассемблер слышал. Говорили, что был такой у Борланда, но сам не видел. А вот, чтобы был ассемблер с проверкой выхода за границы массива в компайл-тайме или владения адресами памяти, не слышал.
>А вот, чтобы был ассемблер с проверкой выхода за границы массива в компайл-таймеЗависимые типы
>владения адресами памятиАфинные типы
>А вот, чтобы был ассемблерФормально, для этого даже не обязательно новый ассемблер делать. Можно как в условном liquid haskell хранить данную информацию внутри комметариев.
>>А вот, чтобы был ассемблер с проверкой выхода за границы массива в компайл-тайме
> Зависимые типы
>>владения адресами памяти
> Афинные типы
>>А вот, чтобы был ассемблер
> Формально, для этого даже не обязательно новый ассемблер делать. Можно как в
> условном liquid haskell хранить данную информацию внутри комметариев.Вот когда вы на этом брейнфаке напишете хотя-бы себе операционку, которая будет обслуживать хотя-бы вас самих - тогда и будете мастерклассы другим давать на тему того как надо было. До тех пор - это все немного преждевременно.
И как видите может быть проще - немного подпилить железо. Потому что эстетствовать вы можете до упора. Но софт на си следующие полвека - никуда не денется. И такие как вы точно его заменить не смогут. Почему-то.
Более того. Многие операции с железом это by design - "unsafe". Автомат DMA вообще не знает - можно в некий адрес или нельзя. Ему дали адрес и количество, он фигачит от сих до сих. Что сие было - ему все равно. Или работа с memmapped регистрами. Для компилеря это "какие-то странные деяния" ибо сам софт этот регион не создавал - но суется туда. И что-то делает с ним. И это ведет к side effect. Но такие мелочи вообще в ваши парадигмы не входят. А вон то - может и со всем этим жить. В принципе даже автомат DMA можно подрихтовать при сильном желании учитывать такое.
>Вот когда вы на этом брейнфаке напишете хотя-бы себе операционку, которая будет обслуживать хотя-бы вас самих - тогда и будете мастерклассы другим давать на тему того как надо было. До тех пор - это все немного преждевременно.И какая такая магия от этого произойдёт, что невежественные сишники вдруг возьмут и прислушаются? Никакой?
> И какая такая магия от этого произойдёт, что невежественные сишники вдруг возьмут
> и прислушаются? Никакой?По крайней мере объем напыщенного неконструктивного хамства на этом глобусе немного поубавится. Что уже неплохо.
>По крайней мере объем напыщенного неконструктивного хамстваВот вам ОС на языке с ADT https://github.com/mirage/mirage, с вас магия уменьшения хамства.
> Покажи мне как это на ассемблере x86 выглядит.Получите-распишитесь godbolt.org/z/ae35Wo649
Кроме того, все нормальные языки программирования, и даже сишка, были созданы как раз для того, чтобы НЕ писать на ассемблере, а пользоваться абстракциями.
Ну и мерзость же, не удивительно, что ни одной программы на этом так и не написали за всю историю, где таких дураков найдёшь. Это 35 лет, между прочим. Ну, про pandoc не будем.
У вас никакой начитанности нет? Очевидно же, что хаскель будет давать не лучший ассемблерный код. Вот вам пример на Ocaml https://godbolt.org/z/7z4f79js1 а ещё лучше на rust https://godbolt.org/z/6KnMeGTeY
> Ну и мерзость жеРеакция типичного неосилятора))
> не удивительно, что ни одной программы на этом так и не написали за всю историю
И ванье типичного дырявого СИшника.
Про git-annex ты вообще слышал?
А Bluespec SystemVerilog это что?
Или seL4, которое изначально писалось на хаскеле, чтобы проводить верификацию?
И это без корпоративного закрытого кода, для бизнеса и всяких финансов.Я понимаю, это не настолько круто как писать дырявые утилитки на сях.
>> Ну и мерзость же
> Реакция типичного неосилятора))А вы что осилили то? Операционки на вашем брейнфаке у вас есть? Ваши нужды обслуживают? Или кто тут еще неосилятор то? Вот этот тип - гадящий на головы тем, чью операционку юзает? Что ж вы такие - юзаете софи и ос от сишников, да еще неосилятором после этого смеете обзываться, вместо того чтоб мастеркласс то всем дать? :)
О, очередной "спирва добейся!!!111"))
Наш брейнфак уже работает в андроиде на миллионах устройств и является языком ядра.> Вот этот тип - гадящий на головы тем, чью операционку юзает?
"Нельзя говорить что жигули это ведро с гайками, пока не построишь БМВ" ?
> Что ж вы такие - юзаете софи и ос от сишников, да еще неосилятором после этого смеете обзываться, вместо того чтоб мастеркласс то всем дать? :)
Так мы его активно заменяем.
Вон uutils уже в бубунте тестируется.
Если бы диды "я не буду учить новый язык!" не копротивлялись процесс шел бы гораздо быстрее.
Но рабобаем с тем что есть. А именно с самоуверенными необучаемыми бракоделами.
> О, очередной "спирва добейся!!!111"))Слов из песни не выкинешь.
> Наш брейнфак уже работает в андроиде на миллионах устройств и является языком ядра.
Насколько я помню потуги с Fucshia были не особо удачными. И в результате - удачи отказаться в том вашем ядре на миллионах устройств от сишки. Хочу на это посмотреть, чо.
> "Нельзя говорить что жигули это ведро с гайками, пока не построишь БМВ" ?
Вообще-то да. Если весь ваш мир состоит только из жигулей, они не хорошие и не плохие, сравнить просто не с чем. И покуда не с чем сравниваться - то и говорить нечего.
А хайп и пиар - это прекрасно. Но как видим спасение человечества от спасителей немного застопорилось и мегакорпы решили что проще и дешевле - в железо проверки впилить. Какой облом для крузады по спасению мира, теперь гранты и зарплаты перераспределят и баззворды с хайпом отвалятся. Во печалька то, да?
> Так мы его активно заменяем.
> Вон uutils уже в бубунте тестируется.По поводу чего в этой версии убунты не работает чуть менее чем нихрена :). Даже флатпак и снап отломали, лол.
> Если бы диды "я не буду учить новый язык!" не копротивлялись процесс
> шел бы гораздо быстрее.Иметь дело с носителями языка типа вас - это удовольствие здорово ниже среднего. И вашего кода это тоже касается - этот код вообще майнтенансу вдолгую не подлежит как правило.
>А вы что осилили то? Операционки на вашем брейнфаке у вас есть?
>Вообще-то да. Если весь ваш мир состоит только из жигулей, они не хорошие и не плохие, сравнить просто не с чем. И покуда не с чем сравниваться - то и говорить нечего.Если бы сишники не были столь невежественны, то они бы знали, что есть целая куча операционок на самых разных языках. Так что ваше заявление про мир исключительно из жигулей уже ложно. Ещё раз повторю свой вопрос, вот теперь вы знаете, что есть ОС на разных языка(за примерами можете сходить в гугл), дальше что? Вы прямо сейчас признаете поражение или по быстрому переобуетесь и начнёте менять условие, что вам нужна не просто операционная система, а фалгман, ещё и более популярный чем реализация на си?
> Если бы сишники не были столь невежественны, то они бы знали, что
> есть целая куча операционок на самых разных языках.Ну так я и спросил высокообразованного сэра блещущего культурой - из какой операционки он изволит изливать свои художества на опеннет? На чем это написано? По моему простой вопрос. Весьма логичный, если уж вопрос о осиляторстве.
Потому что сишники обслужили свой окорок. И не только свой - но и весь глобус. Перк засчитан. А тут им предъявляют за неосиляторство? Извините, кто? Осилившие в этом мире - например, что? Хотя-бы обслугу своего окорока, для начала, не, не того?
> Так что ваше заявление про мир исключительно из жигулей уже ложно.
Да как бы это вам сказать? О условных жигулях мечтало немало народа когда и такого не было. Можно конечно пешком ходить. Лучше ли это - вопрос интересный. Бэха лучше? Предположим. Вот только где ваша бэха от операционок? Покажите. Желательно - подкатив ко мне и вылезая из салона, чтоб я видеть мог что это еще и ездит - и даже возит вас.
Или вы думаете что я денег за это насыплю даже не удостоверившись что эта штука хотя-бы ездить умеет? Да, кстати, фирмвар у нее тоже таки - на сишке. Пусть и по правилам MISRA. А для Rust например - таких правил вообще как минимум пока просто еще нет. Может быть когда-нибудь и будут, когда будут ясны границы применимости и как делать предсказуемый и _надежный_ софт. Не, panic() на скорости 150 - это не "безопасно", это п...ц водителю. Даже если память и не побилась, водитель с такого бонуса побьется - чисто физически. И кстати в системе без MMU - а мк без MMU - гарантии Rust не работают. О чем они честно пишут по крайней мене.
А всякие маргинальщины типа ocaml и haskel? Ну, э, покажите на этом фирмварь ECU вообще. Я уж молчу про то чтобы кто-то подписался своей головой за сертификацию этих ментальных заподвыподвертов, с готовностью сесть в случае факапа.
> Ещё раз повторю свой вопрос, вот теперь вы знаете, что есть ОС на разных
> языка(за примерами можете сходить в гугл), дальше что?А дальше простой вопрос - обслужили ли все ваши фетищи хотя-бы вас? Чтоб сищникам за осиляторство тут предъявлять? Сишники осилили обслужить и свои нужды - написав себе ос и свичнувшись в них. И тулсы себе все сделали. И на сях много всего - все фирмвари по сути, без которых большая часть машин и инженерии просто не двинется с места уже. Едет поезд? Разгоняется трамвай? Крутится стиралка? Я легко узнаю что там есть код. Крутящий колеса, барабан или что там. Его - слышно. Он, ессно, на си.
Мы включаем комп. Десятки сервисных процов с фирмварой оживают. Основной системный фирмвар стартует ос. И все это тоже - си. Но вы можете показать как вы вот все это - на ваших суперязыках. Проблема в том что для того чтобы вы могли почирикать тут на форуме должно раскочегариться нехило всяких стеков - на си. Без этого вы вообще сюда звука издать не сможете. И в благодарность тем кто все это сделал вы ... нагадили им на голову?
> Вы прямо сейчас признаете поражение или по быстрому переобуетесь и начнёте
> менять условие, что вам нужна не просто операционная система, а фалгман, ещё и более
> популярный чем реализация на си?Мне нужно чтобы оно - смогло обслужить хотя-бы вас, обеспечив стек технологий достаточный для того чтобы вы могли пискнуть на форум без помощи клятой сишки. Иначе это гадеж на головы на которых вы стоите. Чисто технически. Если кто считает что может лучше - он показывает. Делом. Его BMW должен ездить и возить хотя-бы его тушку. Иначе это - гламурный но бесполезный кус металла и жигуль намного практичнее и лучше. Просто потому что на нем можно взять и приехать из города A в город B. В отличие от вашей бэхи без двигателя.
>Потому что сишники обслужили свой окорок. И не только свой - но и весь глобус. Перк засчитан.И дальше что? По вашему тот факт, что сишники когда-то написали свой код позволяет им теперь говнокодить вечно? Все теперь должны преклоняться пред их г-кодом и не сметь указывать на ошибки?
>Мне нужно чтобы оно - смогло обслужить хотя-бы вас, обеспечив стек технологий достаточный для того чтобы вы могли пискнуть на форум без помощи клятой сишки.А где граница между может и не может? http? tcp? Роутер? Конечный сервер? Ваш браузер? Прошивка трансформатора на электростанции? Кад, на котором этот трансформатор проектировался? Прошивка базовой станции, по которой вызывали такси для того чтобы приехать в роддом?
>Ну, э, покажите на этом фирмварь ECU вообще.О, это как раз то, о чём я вам и говорил. Вначале вы хотели просто операционку, теперь вам ещё и прошивка нужна. Стало быть с операционкой вопросов больше нет?
>И на сях много всего - все фирмвари по сути
>Основной системный фирмвар стартует ос. И все это тоже - сиИ вы ни разу не показали исходники. А то вдруг там паскаль в перемешку с ассемблером? А вдруг там голый ассемблер?
>Проблема в том что для того чтобы вы могли почирикать тут на форуме должно раскочегариться нехило всяких стеков - на си.Вам уже показывали как миниум один пример операционной системы не на си https://github.com/mirage/mirage. Вот вам tls тоже не на си https://github.com/mirleft/ocaml-tls
https://github.com/mirage/mirage. Остальное думаю вы и сами найдёте.Про операционки на других языках - crystal, rust я тоже молчу, сам найдёте.
Вот вам прошивка клавиатуры не на си https://habr.com/ru/articles/548854/ (кто там утверждал, что буквально каждая прошивка на си?)
>Его BMW должен ездить и возить хотя-бы его тушку. Иначе это - гламурный но бесполезный кус металла и жигуль намного практичнее и лучше.
Пока не вылечили рак - даже не смейте лечить бронхиты и пневмонии.
> Насколько я помню потуги с Fucshia были не особо удачными.А она то тут причем, тебе про андроид пишут. Опять сишник границей буфера в комментариях ошибся...
> А она то тут причем, тебе про андроид пишут. Опять сишник границей
> буфера в комментариях ошибся...Андроида без сишки просто вообше не существовало бы, как явления. Такая ерунда :)
А как на ассемблере x86 выглядит restrict или чем char* отличается от void*?
>> Покажи мне как это на ассемблере x86 выглядит.
> А как на ассемблере x86 выглядит restrict или чем char* отличается от void*?Вот это очень неудобный вопрос! Персонажа поди вообще ментально закоротило, ведь оказывается, что на ассемблере даже большинство типов из сишечки нашей родненькой никак не выглядят! 😭
Вот только софтом, который писали сишники пользуются, т.к. он быстрый и создаётся за разумное время. А академически правильный код зачастую годится только ЧСВ потешить.
>Вот только софтом, который писали сишники пользуются, т.к. он быстрый и создаётся за разумное время.Софт на си уже массово вытеснен софтом не на си. Хоть rust, хоть go, хоть js, лишь бы не на си.
Что-то я не вижу в репозитории OpenSuse особо софта на js или go. Раст это капля в море. На бэкенде - да популярны, но там задачи однотипные типа перекладывания жсонов в базу, а как только хоть чуть-чуть думать надо, геймдев хотя бы, не говоря уж о серьёзном софте типа кадов или условного фотошопа - так ой всё, все эти хипсторы куда-то испаряются.
>Что-то я не вижу в репозитории OpenSuse особо софта на js или go.Почему именно OpenSuse и что именно вы собираетесь увидеть?
>На бэкенде - да популярны, но там задачи однотипные типа перекладывания жсонов в базуНу давайте подумаем - forgejo - go; docker, incus, lxd - go; asciicinema - переписан на rust; waypipe - переписан на rust; cosmic de - rust; pantheon - vala; куча всяких мелких сетевых утилит - go; helix - rust; emacs - преимущественно elisp; timeshift - vala; qtile - внезапно python. Вам не кажется странным, что в современном мире как-то подозрительно много проектов разных направленностей почему-то не на си?
>а как только хоть чуть-чуть думать надо, геймдев хотя быВнезапно будет c# и java. Посмотрите на тот же Mindustry.
>или условного фотошопаЧто там в фотошопе творится, неизвестно, код закрыт. И потом, вы ещё vim вспомните. Естественно такие старые программы будут на си.
> forgejo - go;Бэкендовая обёртка над гитом. docker - тот ещё тормоз, банальное копирование нескольких файликов в образ занимает минуты. Уж лучше б на с++ был. Остальным не пользуюсь, не такое уж оно и нужное.
> подозрительно много проектов разных направленностей почему-то не на си?
В % если брать то мало, особенно если брать ПО для обычного юзера с GUI а не недоделанные консольные утилитки, которые за выходные накидать можно.
Это капля в море на фоне тысяч пакетов с C/C++.
> Внезапно будет c# и javaЯва в геймдеве редкость, может в инди где-то есть пара процентов, вряд ли больше. C# есть, но он во 1х очень похож на C++ а во 2х у Unity свой патченный рантайм, где наверняка всё что нуждается в скорости написано уже на плюсах, C# наружу для игровой логики торчит и возможно некритичных участков кода ядра. А так вообще топ это Unreal на C++ и собственные движки ААА проектов на нём же. На раст жаловались уже что боров чекер мешает в разработке игр.
>Бэкендовая обёртка над гитом.И что это меняет? Интересно, почему бекенд так не любят писать на си?
>docker - тот ещё тормоз, банальное копирование нескольких файликов в образ занимает минуты.Врать не хорошо.
>Уж лучше б на с++ был.Вот интересно, почему его никто не написан на си, ни вы, ни его авторы?
>В % если брать то малоА вы прям проценты посчитали, только вот расчёты прикрепить забыли.
>если брать ПО для обычного юзера с GUIАга, особенно в репозитории OpenSuse
>а не недоделанные консольные утилиткиЯ упомянул несколько десктопных программ. Вот вам ещё пример rustdesc, написан на rust - более чем графическая программа.
>которые за выходные накидать можно.Вы там знаете
>Это капля в море на фоне тысяч пакетов с C/C++.А почему не миллионы или лучше миллиарды?
>C# есть, но он во 1х очень похож на C++У вас совсем аргументы закончились? Это два совершенно разных языка.
>где наверняка всё что нуждается в скорости написано уже на плюсахТо есть тот факт, что игры пишут на c# вы уже даже не отрицаете. Прогресс однако.
>А так вообще топ это Unreal на C++То, что полторы игры пишется на крестах, ещё никому ничего не доказывает.
А ну чтобы не выдумвать ничего, вот статистика ЯП в репозитриях Дебиан. https://sources.debian.org/static/img/stats/sloc_bar_plot.png
Это конечно хорошо, только почему я должен рассматривать дебиан как эталон? Дебиановцы регулярно удаляют из репозитория программы, которые не смогли собрать. Как пример https://www.opennet.dev/opennews/art.shtml?num=61794
>В качестве причины удаления называется невозможность дальнейшего сопровождения пакета в ветке Debian Stable из-за несоответствия зависимостей к bcachefs-tools требованиям сборки для Debian Stable. Bcachefs-tools недавно был переписан на языке Rust и требует использования конкретных версий компонентов Rust, которые не соответствуют версиям, поставляемым в Debian, а ослабление зависимостей не гарантирует корректную работу bcachefs-tools.Если вы будете удалять каждую программу, написанную не на си, то у вас вообще 100% чистого си будет.
> Софт на си уже массово вытеснен софтом не на си. Хоть rust,
> хоть go, хоть js, лишь бы не на си.Что-то фуксия мир так и не захватила. И захват мира в очередной раз отложился. Черт, вы без си вообще компьютер не включите. И ни один чип в нем не заведется. Даже фирмвар SSD какого, или что там у вас. Но вы можете показать этим сишникам мастеркласс... или... кажется не можете? И вот кто тут неосиляторы тогда? :)
>И ни один чип в нем не заведется. Даже фирмвар SSD какого, или что там у вас.Для того, чтобы рассуждать о прошивке, надо как минимум видеть её исходник, а то она внезапно может на расте или паскале оказаться. И потом, даже если у вас прошивка ssd будет на си, условный докер всё равно будет не на си. Так что хватит сказки рассказывать.
>Черт, вы без си вообще компьютер не включите.Если вы невнимательно читали, то вопрос не в наличии хотя бы одной программы на си, а в их общем проценте. Если программа написана на условном js, то это js, а не си.
> Для того, чтобы рассуждать о прошивке, надо как минимум видеть её исходник,
> а то она внезапно может на расте или паскале оказаться.Это будет _очень_ внезапно ибо почти все фирмвари на этом глобусе пишутся - на си, иногда subset плюсов.
И это при желании можно проверить. В бинарях попадаются характерные куски, прозрачно намекающие на характер рантайма, и порой даже чем именно собрано. Но высокопарным экспертам о таких мелочах не рассказывали, а смотреть в бинарный код витающим в облаках афинных типов ниже из достоинства. Лучше вещать о бороздении просторов большого театра.
Ида нынче так вообще - научилась опознавать типовые функции рантаймов и основательно реконструировать сорец прям из бинаря. Вот прям так.
> И потом, даже если у вас прошивка ssd будет на си, условный
> докер всё равно будет не на си.Я не юзаю докер, вот ведь какой парадокс. Это опциональная вторичная вспомогаловка, и близко не являющаяся - незаменимой и mandatory для работы ключевых систем. А вот что б я делал без бутлоадера, ядра линуха, сервисных фирмварей МК и системной фирмвари - вопрос интересный. Этим оно малость отличается от докера по степени критичности.
> Так что хватит сказки рассказывать.
Сказки о чем? Что вы без сишки вообще нихрена не сможете? Так не можете ведь. И это просто констатация наблюдаемого факта. А вот докер и правда чем-то незаменимым или критичным не является. Так, вспомогаловка.
> Если вы невнимательно читали, то вопрос не в наличии хотя бы одной
> программы на си, а в их общем проценте. Если программа написана
> на условном js, то это js, а не си.Но без рантайма на си и си++ оно вообще нифига не сможет. Даже просто запуститься. Небольшой такой нюанс на тему свиней, дуба и желудей.
> Это будет _очень_ внезапно ибо почти все фирмвари на этом глобусе пишутся - на си, иногда subset плюсов.Ну сравнивать даже сабсет плюсов и СИшку это конечно сильно.
> А вот что б я делал без бутлоадера, ядра линуха, сервисных фирмварей МК и системной фирмвари - вопрос интересный.
Там это... в ядро линукс добавили драйвер на совершенно не нужном расте.
Который будет в сотнях миллионах смартфонов на андроиде.
opennet.ru/opennews/art.shtml?num=64092> Этим оно малость отличается от докера по степени критичности.
Тебе - да. Миллионам людей - нет.
> Сказки о чем? Что вы без сишки вообще нихрена не сможете?
> просто констатация наблюдаемого факта.Наблюдаемый единичный факт не является доказательством.
Стыдно не знать такие азы.> Небольшой такой нюанс на тему свиней, дуба и желудей.
Плохая аналогия подобна котенку с дверцей.
Ты сейчас напоминаешь пресонажей, которые говорят "раз цивилизация появилась из овна и палок (саманый кирпич), это её фундамент! нужно и сейчас строить так же как диды! reject progress, return to monke "
>ибо почти все фирмвари на этом глобусе пишутся - на си,О, уже прогресс, а раньше про говорил про то, что всё пишется на си. Скоро так и быть узнаешь и про другие языки
>И это при желании можно проверить.https://habr.com/ru/articles/548854/ Вам прямо сказано, что драйвер есть как на расте, так и на zig, а вы по прежнему исключительно про си говорите
>Я не юзаю докер, вот ведь какой парадокс.И? Ну осталось софта на си на несколько процентов, дальше что?
>Но без рантайма на си и си++ оно вообще нифига не сможет.То есть вы записываете программы на js в строки на си? Ну тогда я запишу их в строки на go и на rust, ибо интерпретатор есть как на одном, так и на другом.
Раз вы такие умные, сделайте нам, сишникам, компилятор, который будет гарантированно генерировать безопасный код.
И чтобы можно было им пользоваться в реальной жизни, для реальных задач.
Все поделки, которые мы видим от си-хейтеров - это какие-то максимально кривые яп и инструменты. Такое впечатление, что их создают только для того чтобы чесать свое ЧСВ.Так что да, это позор - за более чем полвека никто из умничающих экспертов так и не придумал как сделать си более безопасным, приходится обходить ошибки хардварными костылями.
>Раз вы такие умные, сделайте нам, сишникам, компилятор, который будет гарантированно генерировать безопасный код.Вам его дают уже на протяжении более чем двух десятилетий, а вы всё нос воротите. До rust-а был как минимум ATS и Cyclone, и что, сколько сишников ими пользовались?
>И чтобы можно было им пользоваться в реальной жизни, для реальных задач.Откройте любой тред про rust и почитайте как сишников от афинных типов корёжит, если они осилили синтаксис. Ибо не позволяет стрелять ноги, как сишники привыкли.
>за более чем полвека никто из умничающих экспертов так и не придумал как сделать си более безопаснымОчевидно же - никак. Максимум что у вас будет - Cyclone.
>До rust-а был как минимум ATS и Cyclone, и что, сколько сишников ими пользовались?Да даже возьмём c++ - сколько сишников после появления плюсов перестали изобретать хотя-бы строки? Ну не позор ли?
Мы не воротим нос. Мы тоже хотим писать безопасные программы.
Но писать их в более-менее привычном стиле, привычным синтаксисом.
Все что предлагают как замену си - это, извините, шлак, на котором НЕУДОБНО программировать.
Именно поэтому этим не пользуются, а не из-за какого-то мифического заговора сишников против прогресса.
Вы пишете о сишниках как об отставших в развитии существах, которых вы милостиво наставляете на истинный путь.
Так же, наверное, думают и создатели всех этих новых шизофреничных ЯП.
Ну и кагбе вот результат в новости - вместо умников со своим неуемным ЧСВ нам на помощь приходят создатели железа.
>Мы тоже хотим писать безопасные программы.Что-то незаметно. Я не говорю уже про переход на другой язык, где как минимум линтеры в хотя бы в подавляющем большинстве проектов?
>привычным синтаксисомПриводить синтаксис как аргумент - это сильно. Нет, если у вас два языка, различающиеся только синтаксисом, то тогда ещё можно выбирать, но когда у них разная семантика - нет.
>на котором НЕУДОБНО программировать.Ну так системное программирование, оно в принципе неудобное. Каждое выделение памяти надо проверить, помнить что находится в куче, а что в стеке.
>Но писать их в более-менее привычном стилеВозьмите ATS, возьмите Rust, и скажите, в чём конкретно неудобство. Только не надо говорить про синтаксис, поскольку переписать парсер - проще простого. Возьмите, язык, приделайте к нему нормальный с вашей точки зрения синтаксис и вперёд, авось ещё станете популярнее оригинала.
> Мы не воротим нос.Еще как воротите.
> Мы тоже хотим писать безопасные программы.
Очень заметно)
> Но писать их в более-менее привычном стиле, привычным синтаксисом.
Это ваши проблемы.
Когда начали в панике делать всякие поделки типа TRAP-C ? Буквально вчера.
Т.е десятилетиями было просто плевать на качество, на коректность кода, на типичные дыры.> Все что предлагают как замену си - это, извините, шлак, на котором НЕУДОБНО программировать.
Не, хуже дыряшки мало что может быть.
"Неудобно" это не аргумент, это вкусовщина помноженная на эффект утенка.> Именно поэтому этим не пользуются, а не из-за какого-то мифического заговора сишников против прогресса.
Неправда.
Дыды-бракоделы из ядра просто говорили "я не хочу учить новый язык". Т.е просто лень помноженная на потерю способности воспринимать что-то новое.> Вы пишете о сишниках как об отставших в развитии существах, которых вы милостиво наставляете на истинный путь.
Неа, я пишу о них, как о тех, кто знает, что инструмент поганый и результат получается плохой. Но уперто стоит на своем выдавая брак раз за разом.
> Так же, наверное, думают и создатели всех этих новых шизофреничных ЯП.
Бгг, эти шизофреничные ЯП заняли свои ниши, а некоторые них, даже выкидывают дыряшку за борт.
Жду новость про замену Binder в ядре, там точно много *оп сгорит.> Ну и кагбе вот результат в новости - вместо умников со своим неуемным ЧСВ нам на помощь приходят создатели железа.
Посмотрим как получится, сенйчас оно на этапе "давайте начинать стандартизацию")
Пока производители железа обделываются с завидным постоянством.
Если народу будет ок повышенный расход памяти, то может зайдет.
> Мы тоже хотим писать безопасные программы.Хотеть то вы хотите, а можете ли? Или "Я тоже так могу, просто не хочу"?))
> это, извините, шлак
Шлак это ваша сишка, потому что на ней практически невозможно писать недырявый код.
> Вы пишете о сишниках как об отставших в развитии существах,
> которых вы милостиво наставляете на истинный путь.Нет, мы пишем о закостенелых бракоделах, которые не хотят писать нормально.
> вместо умников со своим неуемным ЧСВ нам на помощь приходят создатели железа.
Ага, а вы продолжите писать овноков. Зашибись.
> Мы не воротим нос.и тут же в следующей строке
> писать их в более-менее привычном стиле, привычным синтаксисом.
> ... шлак, на котором НЕУДОБНО программировать.Как здесь иногда повторяют, у сишников "особое мышление".
> Ну и кагбе вот результат в новости - вместо умников со своим неуемным ЧСВ нам на помощь приходят создатели железа.
ChkTag из новости - это такой аппаратный pointer provenance, который сломает многие сишные программы, ибо все, кто кастует указатели через int, окажутся в пролёте.
> Мы тоже хотим писать безопасные программы.Но писать их в более-менее привычном стиле
Вы никак не хотите понять, что этот ваш "привычный стиль", привычные шаблоны и порождают те самые пресловутые 70% ошибок. Сишный стиль и надо менять, внедрять немного другую парадигму мышления.
"Мы не хотим ничего менять, но хотим, чтобы оно поменялось (стали получаться безопасные программы)". Это же то самое: "Безумие — это делать одно и то же снова и снова, ожидая иного результата".
>внедрять немного другую парадигму мышления.Какую парадигму мышления.
Что несет, господи.
Си это простой, лаконичный, императивный яп. И при этом довольно близкий к железу. Берем обычный императивный алгоритм, перекладываем на Си, все, больше ничего не нужно.Если нужно этот алгоритм переосмысливать, переписывать в функциональном стиле, оформлять его в каком-то безумном синтаксисе, постоянно бороться с шизочекером, который делали аутисты (это не только про rust если что, а и про Frama C, и про eBPF verifier), то естественно я скажу "знаете что, пишите на этом языке сами".
И как мы видим, не я один такой, а большинство программистов. Производители железа это понимают (см. новость). Нетакусики, которые изобретают новые тулы для программистов - не понимают.
> Берем обычный императивный алгоритм, перекладываем на Си, все, больше ничего не нужно.А потому по невнимательности сравниваете два енама - крокодилы и апельсины - и... они сравниваются! Вот такой замечательный йазычок.
> И как мы видим, не я один такой, а большинство программистов.
Большинство программистов в гробу видели писать на этом кале.
>сравниваете два енамаТак я эту ветку и начал с предложения: хотите что-то поменять - СДЕЛАЙТЕ лучше. Не нравится что в дидовском С можно сравнивать разные enum - сделайте свой, хороший С, в котором нельзя этого делать.
Это же вроде несложно?
Или сложнее, чем изображать из себя эксперта?>Большинство программистов в гробу видели писать
А, ну да, забыл, есть же еще программисты на HTML. Похоже, они как раз и набигают со своим экспертным мнением в новости опеннета.
> хотите что-то поменять - СДЕЛАЙТЕ лучшеТак мы сделали! Называется С++!
Если у вас аллергия не плюсы... ну возьмите раст, так и быть.
А вы предлагаете взять кусок ов.. Си и сделать из него конфетку. Так не бывает.> Похоже, они как раз и набигают со своим экспертным мнением в новости опеннета.
Да хоть на 1С пусть пишут. От этого сишка не станет менее дырявой.
>С++!$ cat azaza.cc
enum : unsigned { A = 14 };
enum : unsigned { B = 88 };int
main()
{
return (A == B);
}$ clang++ -Wall -Wextra -pedantic azaza.cc
$Ни единого предупреждения. И вот так у вас все.
> Ни единого предупреждения. И вот так у вас все.Вы заказали 2 entity одного и того же типа. И сравнили их. С хрена ли это должно быть невалидным действом? Чтобы превратить программирование в совсем брейнфак?
А если оно надо - в плюсах можно завести весьма кастомные типы, навернуть классов, заоверлоадить операторов - и оно так и out of bounds делать не будет, и даже некий эквивалент борова откосплеить может. Если оно надо было - некоторые так и делали.
А, то есть для C++ это был один и тот же enum.
Понял.А можете еще объяснить, почему сишка не дает сравнивать enum'ы крокодилов с апельсинами?
$ cat azaza.c
enum CROCO { CROCO_1 = 14 };
enum ORANGE { ORANGE_1 = 88 };int
main()
{
return (CROCO_1 == ORANGE_1);
}$ cc -Wall -pedantic -Wextra azaza.c
azaza.c: In function ‘main’:
azaza.c:7:25: warning: comparison between ‘enum CROCO’ and ‘enum ORANGE’ [-Wenum-compare]
7 | return (CROCO_1 == ORANGE_1);
| ^~
$
> А можете еще объяснить, почему сишка не дает сравнивать enum'ы крокодилов с апельсинами?Не так уж и не дает, варнинг не ошибка. Действительно не даёт C++, с enum class
> А, то есть для C++ это был один и тот же enum.
> Понял.То-есть если кто написал гвозди и гвозди - будет очень странно, что гвозди нельзя сравнить с гвоздями. И если мне сделают по этому поводу мозг на именно такой декларации это вообще - баг а не фича.
> А можете еще объяснить, почему сишка не дает сравнивать enum'ы крокодилов с апельсинами?
В смысле - не дает? Дает. Но _может_ сгенерить варнинг. Потому что подозрительное действо.
>[оверквотинг удален]
> enum ORANGE { ORANGE_1 = 88 };
> int
> main()
> {
> return (CROCO_1 == ORANGE_1);
> }
> $ cc -Wall -pedantic -Wextra azaza.c
> azaza.c: In function ‘main’:
> azaza.c:7:25: warning: comparison between ‘enum CROCO’ and ‘enum ORANGE’
> [-Wenum-compare]Ну и в чем суть претензий? Вас честно предупредили что вы сравниваете крокодилов и апельсины. Это, типа, баг, чтоли? По моему - фича. Но вон там то у вас оба enum - идентичные.
Или к вопросу о том почему сишку юзать удобно: орет на явно левые действия. Не делает мозг на нормальные действия. Представляете, сравнить гвозди и гвозди странным действом не является.
>А если оно надо - в плюсах можно завести весьма кастомные типы, навернуть классов, заоверлоадить операторовИнтересно, а почему это у людей аллергия на плюсы?
>>А если оно надо - в плюсах можно завести весьма кастомные типы, навернуть классов, заоверлоадить операторов
> Интересно, а почему это у людей аллергия на плюсы?Потому что
1) Сложные. И довольно много наслоений исторически.
2) Это временами ведет к достаточно зубодробильному синтаксису, когда Rust и C++ на равных рубятся за непочетное звание "Brainfuck 2.0".
3) Это порой приводит к убер-навороченному коду который сложно майнтайнить, ибо вкурить в него могут - единицы.Но я видел как из C++ сделали половину раста - и боровы, и проверка bounds, и кастомная обработка какой-нибудь математики если надо.
Но если этим с умом пользоваться - в принципе бывает довольно красиво. Скажем можно сравнивать условных крокодилов с абы каким типом, используя "operator >" и "operator <" так что выглядит как обычно - а на самом деле эвона какой навернутый кастомный тип, или что там кто хотел. Что означает "<" и ">" для этого типа - ессно на усмотрение програмера. Это собссно некая проблема с майнтенансом ибо если некто так повыражовывается - потом код может выглядеть как одно а реально делать - совсем не то что вы подумали. И это некие грабли по части майнтенанса. Ибо очень хочется такого програмера потом придушить.
Это правда, но не вся:
enum class X : unsigned {a, b, c};
enum class Y : unsigned {a, b, c};...
auto flag = X::a == Y::b; // Ошибка компиляции - несовместимые типы
> А потому по невнимательности сравниваете два енама - крокодилы и апельсины -
> и... они сравниваются! Вот такой замечательный йазычок.Сишка простой - и поэтому местами педальный. Зато благодаря простоте на нем системщина простая, шустрая, предсказуемая и не надо убивать массу времени и сил на борьбу с компилером пытаясь ему объяснить что вот этот доступ в mmaped HW - валидно, так и задумано и just as planned. А вот как вы это с вашими высокопарными абстракциями вообще сделаете?
Это там обычно - от "никак" и вы вообще не системный яп тогда - до весьма конкретных ужастиков как в Rust которые даже brainfuck фору дадут запросто. В половине случаев еще и unsafe к тому же.
>> И как мы видим, не я один такой, а большинство программистов.
> Большинство программистов в гробу видели писать на этом кале.Почему-то большая часть ОС, фирмварей, бутлоядеров, ядер и системного софта - на си. Или вы что под калом имели в виду? Языки с синтаксисом брейнфака и прочими наворотами делающими майнтенанс кода - mission impossible - ибо если уникум писавший его уволится то другого кто этот полет мысли сможет и захочет раскурить вообще фиг найдешь?!
>Си это простой, лаконичный, императивный яп.Ха ха ха. Давайте, покажите мне самую обычную строку на си, а я посчитаю, сколько тысяч строка кода вам для этого понадобится.
>Если нужно этот алгоритм переосмысливатьСовершенно верно. Ибо концепция владения
>переписывать в функциональном стилеСишники не в курсе, что современные компиляторы хорошо оптимизируют функциональный код, как минимум со времён MLTon-а? Или у них головы взрываются, когда они монады видят?
>оформлять его в каком-то безумном синтаксисеВы забыли обосновать данное утверждение
>постоянно бороться с шизочекеромАй-ай, оказывается память портить нехорошо.
>это не только про rust если что, а и про Frama C, и про eBPF verifierЛичино я считаю си синтаксис крайне уродливым, но это моё личное дело. Но как только вы начинаете осуждать Frama C, то тут же изобличаете себя: вас пугает не синтаксис, а семантика. Даже если вам дать статический анализ для сишного исходника, вы всё равно его не осилите.
>И как мы видим, не я один такой, а большинство программистов.Ага большинство. Осталось только понять, а откуда тогда взялись куча программ на rust, c, haskell, ocaml и так далее.
>rust
>афинных типовРечь про это:
https://doc.rust-lang.org/nomicon/subtyping.html
?
Частный случай афинных типов - владение.
> Раз вы такие умные, сделайте нам, сишникам, компилятор,
> который будет гарантированно генерировать безопасный код.Не, чувак, этот мусор никак не исправить)) Можно, и даже нужно!, об****ть и сжечь.
В недостандарте вашего "переносимого ассемблера" почти 200 UB gist.github.com/Earnestly/7c903f481ff9d29a3dd1
Вот как можно из этого сделать нормальный компилятор, если сам "стандарт" говорит "а х его знает что произойдет в этом коде"?> Так что да, это позор - за более чем полвека никто из умничающих экспертов
> так и не придумал как сделать си более безопаснымMISRA C. Берем сишку, запрещаем в ней половину возможностей и вуаля - писать на этом стало практически невозможно.
А вообще решение придумали давно - выбросить дыpяшку и заменить хотя бы на с++.
Просто диды, которые ничего больше не в состоянии осилить, и всякие аймфинишы, не умеющие признавать своих ошибок, копpотивляются ее замене на хоть что-то.
> Не, чувак, этот мусор никак не исправить)) Можно, и даже нужно!, об****ть и сжечь.Можете начать избавляться от этой анафемы прямо с своего компьютера! Наверняка там в всяких сервисных чипах, контроллерах, загрузочной фирмвари и чем там еще - полно си. На костер этого негодяя! Заодно и форум от спама отдохнет :)
А так - много вы фирмварей, бутлоадеров, ядер и низкоуровневой системщины написали то, чтоб свое мнение иметь? :)
> Не, чувак, этот мусор никак не исправить)) Можно, и даже нужно!, об****ть
> и сжечь.Начать можно прямо с вашего компьютера который без сишки неоперабелен :)
Да не умные они, они только вонять в интернетах могут, а в реале максимум жсоны перекладывают. Раст даже для геймдева не подходит, не говоря уж про серьёзное ПО для работы.
>а в реале максимум жсоны перекладываютТолько вот сишники даже жсоны не перекладывают, так как всё потечёт и попортит память.
Сишники делают ~80-90% десктопного софта, остальное это C# и swift. Ну и примерно вся эмбеддовка. В РФ просто ни то ни другое особо не развито, тут больше на перепродажу и сервис бизнес целится, наверное поэтому такое мнение сложилось. А так в мировых рейтингах сишка в топе.
> Сишники делают ~80-90% десктопного софтаЧё??? 80-90% это с++, а не дырявая.
Игровые движки - с++
Офисный пакеты - с++
Игры - с++
3д пакеты - с++Да даже компиляторы - два открытых оптимизирующих компилятора написаны на с++. Причем gсс был вначале на сишке, но потом перешли на плюсы.
> 80-90% это с++Процентов чего? Наименований? Которые используют 1000-и-1 библиотеку на Си. В итоге, кодовая база на 99,9% на Си. (И это хорошо.)
> Причем gсс был вначале на сишке, но потом перешли на плюсы.
Это была диверсия со стороны Плюсов. Напихать в стандарт огромную библиотеку шаблонов и сделать предельно сложной её поддержку в компиляторе на Сях. Плюс, разрабам компилятора, хош-нехош, пришлось изучать чудовищно раздутый стандарт Плюсов. И переход стал неизбежен.
Сейчас что-то подобное пытается провернуть Ржавый. Тоже с поддержкой корп, кстати. Через 10-20 лет - повторить, с новым, Улучшенным(TM) Языком(TM).
> В итоге, кодовая база на 99,9% на Си.Пруфы в студию. Пока это выглядит как розовые очки с линзой толщиной в лобовую бронь Т-90.
> (И это хорошо.)
И именно поэтому у нас так много дырявого софта. Потому что он использует дырявые либы.
> Это была диверсия со стороны Плюсов.
Это было лучшее решение. Потому что убогость, невыразительносить и многословность сишки не позволяла эффективно писать компилятор.
> И именно поэтому у нас так много дырявого софта. Потому что он
> использует дырявые либы.Так вы не написали другой софт, только бла-бла развели как все круто и фильдиперсово, и какахами покидались. Поэтому все так и останется. Хамство на форуме - софт не пишет.
>Сишники делают ~80-90% десктопного софтаАга, сишники. Ещё в 90-ые появился Visual Basic, а вы до сих пор свои сказки рассказываете.
> Раз вы такие умные, сделайте нам, сишникам, компилятор, который будет гарантированно генерировать безопасный код.Вам, сишникам, диды уже сделали святой СТАНДАРТ, в котором заботливо прописаны многие пункты, на корню пресекающие любые гарантии безопасности.
Поэтому создателям компиляторов и даже вон CPU приходится сбоку в обход стандарта прикручивать костыли через флажки компиляции, дабы эта дидовская отрыжка из 70х была бы хоть немного юзабельна в современных реалиях.
Что непонятного?
>например, в реализации MTE для каждых 16 байт создаётся 4-битный тегЯ так понимаю у кого-то лишняя оперативка завалялась, и он, вместо того, чтобы отдать её мне, решил её проср^W потратить?
> Я так понимаю у кого-то лишняя оперативка заваляласьА потом окажется что в ваш сервак больше оперативы не влезет, поэтому вы просто купите новый.
не рассказывайте этому господину про ЕСС память, а то ведь он желчью изойдет, что там из каждых 72 бит восемь ЗРЯ простаивают!!1
Похоже на борьбу нанайских мальчиков.
Все внедряют новые механизмы, инструкции, алгоритмы...
И все не помогает, только делает все хуже.Неужели инженерам не очевидно, что проблема в архитектуре?
Некоторые-бы написали, что нужно менять девочек, а не двигать кровати.
> Неужели инженерам не очевидно, что проблема в архитектуре?пока существует спрос на Г, то есть существуют г-еды, будут производить Г, будет существовать предложение.
>Неужели инженерам не очевидно, что проблема в архитектуре?i432
итаникещё что-то очень красивое но ненужное :-)
О, они так скоро эльбрус переизобретут
Но самое интересное, что этот Неоэльбрус будет реально в железе и доступен рознице.
судя по описанию, выглядит даже не как дыра, а как дырища библейских масштабов
Наконец-то. Думал, что после 2018 года появятся аппаратные фиксы Спектра и Мельтдауна, а они только сейчас появляются
Чекай, они сделают проверку тэгов только на этапе retire инструкции. Таким образом спектр с мельдонием останутся в безопасности
Амуде превращается в длинющий Влив и стоить будет также. Кто мечтал,что войти только для мега-пупер профессионалов?Остальным смурфы на пять лет и хватит для котиков.
Ты дичь втираешь. Поддержка тэгировпнной памяти есть в мобильных процах у ябла. Какой там vliw
Неудивительно что такое ничто как арм один из тех кто обязан приспосабливаться.
Начало конца rust. Всячески одобряю. Краборжавофилы возбудились в теме, замечательно -- хватило умишка понять, что это сулит ржавчине. Что ж, всем, полагающим, что они умнее проектировщиков Intel, ARM и AMD вместе взятых -- флаг в руки и бегом писать петиции о запрете данной инициативы. Вас, конечно же, услышат!
Какие же сишники необучаемые. Си будет проверять ошибки и падать в рантайме, как позорный гвидобейсик. В то же время rust будет проверять ошибки во время выполнения и если скомпилировалось, значит работает.
Какие же растеры необучаемые -- им и невдомек, что кроме раста существует 100500 языков, которые получат практически бесплатный механизм защиты. Хотя что это я, они просто понимают, что это не просто гвоздь, а целый набор саморезов в крышку гроба раста.> Если скомпилировалось, значит работает
Ну, тут я даже комментировать не буду, фраза, достойная быть выбитой на могильном камне раста!
> что кроме раста существует 100500 языков, которые получат практически бесплатный механизм защитыАхаха! А ничего, что сабж включается через флажки компилятора сугубо для дырявых C и C++. А в других нынче живых языках в принципе нет проблем уровня "обращение к уже освобождённым блокам памяти, переполнение буфера или обращение к памяти до инициализации".
Зато как против Раста воюет!
Технология, которая только разрабатывается и планируется к реализации в новых CPU, включается флажками компилятора... Что?! Если ты про MTE, чудила, то флажками компилятора включается защита стека и глобальных данных вне кучи, а для защиты кучи достаточно использовать аллокатор, поддерживающий MTE.
> Технология, которая только разрабатывается и планируется к реализации в новых CPU, включается флажками компилятора... Что?! Если ты про MTEДа, она будет включаться флажками, как в MTE. Или ты думал, ее впендюрят всем во все процессоры по-умлочанию. 😂
> Если ты про MTE, чудила, то флажками компилятора включается защита стека и глобальных данных вне кучи, а для защиты кучи достаточно использовать аллокатор, поддерживающий MTE.
Ах, ну да, в аллокаторе у нас ведь MTE не флажками компилятора включалось. "Вы не понимаете, жто другое! 😭"
>кроме раста существует 100500 языков, которые получат практически бесплатный механизм защитыВы лучше скажите, кому он нужен - может Haskell-ю? Или Ocaml-у? Или JS-у?
>Ну, тут я даже комментировать не будуОтсутствие долгих часов отладки - это уже достаточная причина уйти от сишки. Ибо код надо писать, а не отлаживать.
Я полагаю, что тот же Haskell вполне обрадуется возможности вынести ту же проверку границ блоков памяти на CPU... Хотя с этим вопросом тебе скорее к разработчикам Haskell.
> Я полагаю, что тот же Haskell вполне обрадуется возможности вынести ту же проверку границ блоков памяти на CPU...Сорян, в Хаскеле не сношаются с буферами. А проверки границ типов коллекций в рантайме там и так есть.
О, ты изучил устройство компилятора Haskell, и проверки границ коллекций там реализованы непосредственно при помощи духа святого? Продолжайте наблюдение, мы с вами свяжемся.Я о чем: если программист не видит в своем коде, скажем, байтового буфера, это совершенно не означает, что его нет в скомпилированной программе в принципе )
>> А проверки границ типов коллекций в рантайме там и так есть.
> Haskell, и проверки границ коллекций там реализованы непосредственно при помощи духа святого?Они реализованы при помощи програмных рантаймных проверок, о чем тебе и написали. Причем проверок с нормальной обработкой ошибок на уровне языка.
Ты же, гений, предложил вместо этого аппаратные проверки из сабжа, чтобы при ошибке софт просто вверх лапками ложился.
Господи, и он еще язвит там что-то...
> Они реализованы при помощи програмных рантаймных проверокДа ну? Быть не может, а я то думал... А оно вон оно как...
А скажи-ка, что мешает реализовать эти проверки на основе предлагаемого набора расширений для CPU? А подумай, может это быстрее будет, с аппаратной поддержкой-то? Я не знаю деталей предложения, могу ошибаться, но что-то мне подсказывает, что проектанты разрабатывали их именно с учетом применимости в реальных софтинах...
Честно скажу, спросил ИИшку:
Таким образом, да, ChkTag потенциально может использоваться вместо или в дополнение к программным проверкам границ, обеспечивая более эффективную и надёжную защиту от выхода за пределы выделенной памяти — при условии, что:
используется поддерживаемое оборудование (будущие процессоры Intel/AMD с ChkTag),
программное обеспечение скомпилировано с поддержкой этих инструкций.Это делает ChkTag перспективной заменой для многих runtime-проверок
Что с лицом?
>Я полагаю, что тот же Haskell вполне обрадуется возможности вынести ту же проверку границ блоков памяти на CPUКоторая будет только в процессорах на полках магазинов. Или по вашему нужно все процессоры списывать в утиль?
> Вы лучше скажите, кому он нужен - может Haskell-ю? Или Ocaml-у? Или JS-у?Хрен ваших эзотериков знает - а в JS что-нибудь заоффлоадить вполне можно будет. Что там эзотерики (не)выигрывают - это кому-то интересно вообще? Их вообще на радаре не видно и они погоду не делают.
> Отсутствие долгих часов отладки - это уже достаточная причина уйти от сишки.
> Ибо код надо писать, а не отлаживать.При том как показал пример тех эзотериков, код там именно write only. Его потом вообще никто читать не хочет. А программы чаще всего - театр 1 актера.
> кроме раста существует 100500 языков, которые получат практически бесплатный механизм защиты."Произошла ошибка доступа к памяти при чтении по адресу 0xXXXXXXXXXXXXXXXX, процесс был завершён"
Отличная защита, раст ненужён!!!11.
Отладка программы? Не, не слышал, раз код компилируется -- значит работает, что за бред там происходит -- неважно.
> Отладка программы?И что ты наотлаживаешь?
Когда оно повторяется у клиента на его конктретном сетапе/данных раз в месяц когда меркурий становится ретроградным?
Но данные тебе никто не даст, а что полез не в свою память тебе краш тоже не скажет.
Поэтому прдль отладчик до посинения.> Не, не слышал, раз код компилируется -- значит работает,
> что за бред там происходит -- неважно.Так это же любая сишная программа)))
Пишешь за пределы буфера - сойдет!
С разных потоков - еще лучше!
Главное что не крашнулось на старте и можно в прод.
> Поэтому прдль отладчик до посинения.Да персонаж уже запутался, бедняга, в порыве войны против Раста: то ему нужен сабж (ведь ловит дырени), то теперь уже не нужен (ведь мастера отладки и так умеют писать программы без дыреней в памяти). Цирк да и только.
>С разных потоков - еще лучше!Это будет в следующем наборе команд, лет через семьдесят.
>> "Произошла ошибка доступа к памяти при чтении по адресу 0xXXXXXXXXXXXXXXXX, процесс был завершён"
> Отладка программы? Не, не слышалЧего отладка, лол? Сабж буквально создан для того, чтобы быть костылем-заплаткой, грохающей процесс при ошибках работы с памятью (вместо того, чтобы молча их хавать, открывая дырени).
>Отладка программы? Не, не слышал, раз код компилируется -- значит работаетУзнаю сишников. Только вместо того, чтобы отлаживать алгоритм, сишники отлаживают свои указатели, выясняя где же там они попортили память.
> если скомпилировалосьsic!
Укажите, сколько терабайт памяти нужно, чтобы скомпилировалось.
> Начало конца rust.Какой забористый копиум))
> Что ж, всем, полагающим, что они умнее проектировщиков Intel и AMD вместе взятых
12.09.2025 VMScape - атака на CPU AMD и Intel, обходящая изоляцию между гипервизором и гостевой системой
19.10.2024 Обход защиты от атак Spectre и эксплоит для извлечения данных из памяти другого процесса
09.04.2024 Новый вариант атаки BHI на CPU Intel, позволяющий обойти защиту в ядре Linux
14.03.2024 Уязвимость в процессорах Intel Atom, приводящая к утечке информации из регистров17.10.2025 В некоторых процессорах AMD Zen 5 генератор случайных чисел RDSEED выдаёт 0 в 10% случаев
09.07.2025 Атака TSA, приводящая к утечке информации из микроархитектурных структур CPU AMD
11.04.2025 CPU AMD Zen 5 подвержены уязвимости, допускающей изменение микрокода и обход изоляции SEV-SNP
04.02.2025 Уязвимость в загрузчике микрокода в CPU AMD, позволяющая обойти изоляцию SEV-SNP
13.12.2024 Атака BadRAM, позволяющая обойти механизм аттестации SEV-SNP в CPU AMDКажется проектировщики просто кровные браться СИшников)
Ты же сделал свой процессор, получше, правда? Ведь сделал же?
> Ты же сделал свой процессор, получше, правда? Ведь сделал же?Да он и операционку написал, что уж. Видимо один из уволенных програмеров Fuchsia.
> Начало конца rust.Смешно.
> Всячески одобряю. Краборжавофилы возбудились в теме, замечательно -- хватило умишка понять, что это сулит ржавчине.
Начиная с Rust 1.84 стабилизирован strict provenance API. Сможешь показать то же самое в Си?
> Что ж, всем, полагающим, что они умнее проектировщиков Intel, ARM и AMD вместе взятых -- флаг в руки и бегом писать петиции о запрете данной инициативы. Вас, конечно же, услышат!
Наоборот, всем сишникам пора начать писать петиции, потому что с ChkTag большинство сишных программ перестанут запускаться.
> Начиная с Rust 1.84 стабилизирован strict provenance API.А-а-а-а, то есть растеры смогут заняться любимым делом -- переписывать свои проекты для задействования этой фигни вместо предыдущей фигни? Рад за них, без дела не останутся.
> Наоборот, всем сишникам пора начать писать петиции, потому что с ChkTag большинство сишных программ перестанут запускаться.
Ну раз ты так сказал, тогда конечно...
> Краборжавофилы возбудились в теме, замечательно -- хватило умишка понять, что это сулит ржавчине.А что сулит? Неужели появлене вулнов в памяти и последующим прибитием процесса программы при помощи сил сабжа? 🤣 Та не, это же вроде для Сишки сценарий...
звонила AS/400 из 1990 года, просила передать приветтакже просила сказать - если оставить пользователю возможность самому генерировать машинный код, ничего у вас не получится.
Ага, только техножрецы из межделмаша могут генерировать машкод для пользователя, подписывать его своей личной подписью, а as400 будет эту подпись проверять
ерунду не пишитезрн блгдрн
Это что же получается? Ржавый теперь... не нужен? Вот это поворот))
> Вот это поворот))Вы процессор вначале новый купите, а потом проверим помогло оно или нет))
Всегда был.
> Всегда был.Про то я в курсе. Просто сложно удержаться и не потроллить некоторых ;)
Рыночек уже порешал Раст не занял хоть какой либо значимой доли.
Не волнуйтесь прохфессор ржавчина уже в андроиде, и в ядре, и в утилитах на замену дырявах...
Думаю она вас переживет.
И меня, возможно.
> Не волнуйтесь прохфессор ржавчина уже в андроиде, и в ядре, и в
> утилитах на замену дырявах...Да я в общем и не волнуюсь)) Я с интересом жду продолжения драмы. Враг подкрался с тыла, хы))
> Думаю она вас переживет.
> И меня, возможно.Да без вопросов)) С учётом всех обстоятельств шансы на выживание конкретного индивида сегодня у нас так себе...
> Это что же получается? Ржавый теперь... не нужен? Вот это поворот))"Вот это поворот" будет, когда вы наконец-то наберетесь компетенции, чтобы понимать смысл написанного.
А так у нас есть выбор: вырезать все ошибки при работе с памятью на корню ВО ВРЕМЯ КОМПИЛЯЦИИ или же греть CPU в попытках выловить их ВО ВРЕМЯ ВЫПОЛНЕНИЯ с последующим прибитием процесса программы.
Знатный эксперт ProfessorNavigator, конечно же, выбирает второй вариант - и Раст теперь не нужен. Очередная сокрушительная победа над здравым смыслом!
>> Это что же получается? Ржавый теперь... не нужен? Вот это поворот))
> "Вот это поворот" будет, когда вы наконец-то наберетесь компетенции, чтобы понимать смысл
> написанного.
> А так у нас есть выбор: вырезать все ошибки при работе с
> памятью на корню ВО ВРЕМЯ КОМПИЛЯЦИИ или же греть CPU в
> попытках выловить их ВО ВРЕМЯ ВЫПОЛНЕНИЯ с последующим прибитием процесса программы.
> Знатный эксперт ProfessorNavigator, конечно же, выбирает второй вариант - и Раст теперь
> не нужен. Очередная сокрушительная победа над здравым смыслом!Что, подгорает?)) Понимаю)) Только вы не в ту сторону воюете - вы это тем, кто вам такую подляну подложил, объясняйте, а не мне.
P.S.
Лишнее действие при таких раскладах как раз проверка во время компиляции. Потому что вы потом всё равно будете гонять программу по всякому на тестах. Там всё и выплывет.
> Что, подгорает?)) Понимаю))Понимаете как подгорает?
Это хорошо!
Не удивлен, что аФФтор одного из самых уродливых опенсорс приложений такое понимает!
> Лишнее действие при таких раскладах как раз проверка во время компиляции. Потому что вы потом всё равно будете гонять программу по всякому на тестах. Там всё и выплывет.Или не выплывет.
Как в одно весьма глючной библиотеки для книжек))
>> Что, подгорает?)) Понимаю))
> Понимаете как подгорает?
> Это хорошо!
> Не удивлен, что аФФтор одного из самых уродливых опенсорс приложений такое понимает!
>> Лишнее действие при таких раскладах как раз проверка во время компиляции. Потому что вы потом всё равно будете гонять программу по всякому на тестах. Там всё и выплывет.
> Или не выплывет.
> Как в одно весьма глючной библиотеки для книжек))Да вы не убивайтесь так, это ещё нескоро будет)) Впрочем, всё равно не удержусь, процитирую один фильм: "Работать теперь пойдёшь... Делать то умеешь чего?" ;)
> Да вы не убивайтесь так, это ещё нескоро будет)А как же все заламывания рук, проклятия в стороноу капиталистов и знаменитое "ЧАСИКИ ТИКАЮТ!!" ?
Неужели конец света и человечества откладывается?
Неужели сумасшедшие пророки врали??
> А как же все заламывания рук, проклятия в стороноу капиталистов и знаменитое
> "ЧАСИКИ ТИКАЮТ!!" ?А часики не тикают?)) У вас есть бесконечные ресурсы - нефть, газ, редкоземельные металлы? Посевные площади и банально место для проживания растущего с каждым днём количества людей?
> Неужели сумасшедшие пророки врали??
Хорошо, я обязательно передам С.В. Дробышевскому, что вы считаете его сумасшедшим. Он порадуется))
>Лишнее действие при таких раскладах как раз проверка во время компиляции. Потому что вы потом всё равно будете гонять программу по всякому на тестах. Там всё и выплывет.Ага, если эти тест будут. А то будет, прямо как у вас, когда ошибки вы начали исправлять только после того, как вас носом ткнули в конкретную строку и долго долго объясняли, почему так делать нельзя. И то, до сих пор кучу ошибо не исправили.
> Ага, если эти тест будут. А то будет, прямо как у вас,
> когда ошибки вы начали исправлять только после того, как вас носом
> ткнули в конкретную строку и долго долго объясняли, почему так делать
> нельзя. И то, до сих пор кучу ошибо не исправили.Ну всё, все фанаты в сборе, можно начинать бенифис)))
>Что, подгорает?)) Понимаю)) Только вы не в ту сторону воюете - вы это тем, кто вам такую подляну подложил, объясняйте, а не мне.Нашёл начало обсуждения. https://www.opennet.dev/openforum/vsluhforumID3/134750.html#523
>Вы пробегаете по целой строке только для того, чтобы обнаружить конец тега. Даже решение на парсер комбинаторах успеет по дороге атрибуты распарсить, у вас же это холостой прогон.Как минимум эта проблема до сих пор не исправлена, остальные смотреть лень, уже больше года прошло. И этот человек рассказывает нам как программировать.
>>Что, подгорает?)) Понимаю)) Только вы не в ту сторону воюете - вы это тем, кто вам такую подляну подложил, объясняйте, а не мне.
> Нашёл начало обсуждения. https://www.opennet.dev/openforum/vsluhforumID3/134750.html#523
>>Вы пробегаете по целой строке только для того, чтобы обнаружить конец тега. Даже решение на парсер комбинаторах успеет по дороге атрибуты распарсить, у вас же это холостой прогон.
> Как минимум эта проблема до сих пор не исправлена, остальные смотреть лень,
> уже больше года прошло. И этот человек рассказывает нам как программировать.И снова вопрос - а при чём здесь вообще я?)) Речь шла о ненужности Ржавого, на которую мои личные и профессиональные качества не влияют никак ;)
Добрый день. Вы уже починили свой парсер xml или как всегда нет? Или как настоящий сишник, вы и не планировали его делать рабочим?
> Добрый день. Вы уже починили свой парсер xml или как всегда нет?
> Или как настоящий сишник, вы и не планировали его делать рабочим?А как я его могу починить, если вы филоните?)) Вы же из тестировщиков уволились - тестировать теперь некому, вот я и не знаю, что он сломан))
>Вы же из тестировщиков уволились - тестировать теперь некому, вот я и не знаю, что он сломан))Я вам уже кучу раз говорил, что так https://github.com/ProfessorNavigator/mylibrary/blob/3590a4c... делать нельзя. Следующий код является валидным
<tag attr=">"/>
А ещё, я вам скидывал пример, как делать правильно. https://dev.realworldocaml.org/parsing-with-ocamllex-and-men...
Ранее вам уже писали об этом, и то это не самое первое сообщение https://www.opennet.dev/openforum/vsluhforumID3/135943.html#105
Вы до сих пор не починили данную проблему.
> Я вам уже кучу раз говорил, что так https://github.com/ProfessorNavigator/mylibrary/blob/3590a4c...
> делать нельзя. Следующий код является валидным
> <tag attr=">"/>И что?)) Вы хоть взгляните, куда ваша ссылка указывает, и разберитесь, что этот код вообще делает)) И при чём здесь вообще я? Речь шла о ненужности Ржавого, на которую мои профессиональные и личные качества не влияют никак))
>Вы хоть взгляните, куда ваша ссылка указываетНа ваш код
>и разберитесь, что этот код вообще делаетУ вас одна и та же ошибка повторяется из раза в раз
https://github.com/ProfessorNavigator/mylibrary/blob/3590a4c...
https://github.com/ProfessorNavigator/mylibrary/blob/3590a4c...
вам уже и пример привели, когда это работать не будет, а вы до сих пор так ничего и не поняли
>И при чём здесь вообще я? Речь шла о ненужности Ржавого,При том, что вы как эталонный борец с ржавым, не умеете писать код.
https://github.com/ProfessorNavigator/mylibrary/blob/3590a4c...
>case 34:
>case 39:
>case 62:Вот это - это что такое? Вместо того, чтобы исправлять ошибки, вы только запутываете код.
>на которую мои профессиональные и личные качества не влияют никак))Влияют. Я вам более года тому назад рассказывал, что туда-сюда ходит по строке - это медленно. Вы это починили? Нет. Почему? По тому, что не умеете. Если вы не в состоянии нормально написать парсер, то на каком основании вы в состоянии рассказывать о нужности раста?
>[оверквотинг удален]
>>case 34:
>>case 39:
>>case 62:
> Вот это - это что такое? Вместо того, чтобы исправлять ошибки, вы
> только запутываете код.
>>на которую мои профессиональные и личные качества не влияют никак))
> Влияют. Я вам более года тому назад рассказывал, что туда-сюда ходит по
> строке - это медленно. Вы это починили? Нет. Почему? По тому,
> что не умеете. Если вы не в состоянии нормально написать парсер,
> то на каком основании вы в состоянии рассказывать о нужности раста?И тут Остапа понесло)) Понимаю, новость для вас шокирующая - придётся чему-то учиться, по-настоящему работать идти. Но вы не убивайтесь так - оно нормально, все так живут ;)
Зачем нужна эта клоунада? Пишите сразу - что реализовать парсер вы не осилили и дело с концом.
> Зачем нужна эта клоунада?Это вас нужно спрашивать)) Обсуждали вроде бы ненужность Ржавого, а вы зачем-то пытаетесь съехать с темы и перейти на личности. Зачем?)) Впрочем, вопрос риторический ;)
Какие опкоды планируются у этих инструкций? Из группы NOP или другое? Давайте усложним декодер инструкций сильнее...
Даввй, начинай усложнять.
> Но меня смущает, почему сишники видят эту новость, в первую очередь, как что-то плохое для раста, а не как что-то хорошее для всего IT в целом.Потому что это не сишники, а некомпетентные воины против ветряных мельниц, которые даже не видят разницы между проверками время компиляции и времени выполнения.
В популярной библиотеке async-tar (и её форках, таких как tokio-tar) была обнаружена критическая уязвимость, связанная с некорректным разбором границ архива, что могло привести к выполнению произвольного кода или отказу в обслуживанииВ 2020 году был зафиксирован инцидент RUSTSEC-2020-0034, где уязвимость в crate arr приводила к таким проблемам, как гонка данных, переполнение буфера и использование неинициализированной памяти
В октябре 2024 года была опубликована информация о критической уязвимости в Rust-приложениях под Windows, позволяющей выполнять инъекции команд через специально сформированные batch-файлы
Также сообщалось об уязвимости в Rust-компоненте ядра Windows, связанной с GDI, которая могла быть удалённо эксплуатируемой для вызова отказа в обслуживании или потенциального выполнения кода
Как неожиданно, боровчекер не может проверить код за программиста. Продолжать?
> Как неожиданно, боровчекер не может проверить код за программиста. Продолжать?А еще он не защитит от опечатки true вместо false)
У раста есть список ошибок где он дает гарантии.
Да, прочитать доку трудно, там много буковок.
Но ты постарайся!
> Также сообщалось об уязвимости в Rust-компоненте ядра Windows, связанной с GDI
> специально сформированные batch-файлыЯ смотрю, давать запросы нейронкам ты научился, а вот читать их выхлоп - пока еще нет.
> async-tar [...] уязвимость, связанная с некорректным разбором границ архива
> RUSTSEC-2020-0034 [...] гонка данных, переполнение буфера и использование неинициализированной памяти
> Как неожиданно, боровчекер не может проверить код за программиста.Боровчекер, работающий во время компиляции, не ловит рантайм ошибки. Действительно неожиданно!
> Продолжать?
Спасибо, больше не надо: ты буквально подтвердил мои словы выше о том, что не вилишь разницы между проверками время компиляции и времени выполнения.
Если ты не понимаешь толстых намеков: смысл ловить ошибки работы с памятью на этапе компиляции, если 1) у раста все равно не все бывает гладко с памятью 2) тестировать рантайм все равно нужно? То есть это было бы, конечно, неплохо, не влеки оно за собой кучу совершенно ни для чего другого не нужных ограничений на структуру и логику софтины и не заставляй программиста извращаться, чтобы пропихнуть код боровчекеру. Серебряных пуль не бывает, на примере раста это видно совершенно отчетливо.
>Если ты не понимаешь толстых намеков: смысл ловить ошибки работы с памятью на этапе компиляции, если 1) у раста все равно не все бывает гладко с памятьюhttps://www.opennet.dev/opennews/art.shtml?num=60456 - Обновление X.Org Server 21.1.11 с устранением 6 уязвимостей
https://www.opennet.dev/opennews/art.shtml?num=60927 - Обновление X.Org Server 21.1.12 с устранением 4 уязвимостей
https://www.opennet.dev/opennews/art.shtml?num=60983 - Обновление X.Org Server 21.1.13 с устранением потенциальной уязвимости в исправлении уязвимости
https://www.opennet.dev/opennews/art.shtml?num=62795 - Обновление X.Org Server 21.1.16 с устранением 8 уязвимостей
https://www.opennet.dev/opennews/art.shtml?num=63423 - Обновление X.Org Server 21.1.18 с устранением 6 уязвимостей
Вот когда у вас будут программы на расте такими же дырявыми как на си, тогда и приходите.
> Вот когда у вас будут программы на расте такими же дырявыми как
> на си, тогда и приходите.Вот когда у вас будет столько же кода, как на С, и проекты масштаба XServer - тогда и приходите ;)
>Вот когда у вас будет столько же кода, как на СУже
>и проекты масштаба XServerУже
>тогда и приходитеВаш ход.
> Если ты не понимаешь толстых намековЯ до сих пор не видел никаких намеков - только бред от некомпетентного в разработке ПО человека, который собрался юнит-тестированием ловить ошибки работы с памятью, лол.
> смысл ловить ошибки работы с памятью на этапе компиляции, если 1) у раста все равно не все бывает гладко с памятью 2) тестировать рантайм все равно нужно?
Смысл ловить ошибки на работы с памятью на этапе компиляции в том, чтобы не ловить их во время выполнения, получая крэши и вулны. Все.
> То есть это было бы, конечно, неплохо, не влеки оно за собой кучу совершенно ни для чего другого не нужных ограничений на структуру и логику софтины
Ну что за бред снова? Правильная работа с памятью никак ограничивает ни структуру, ни тем более на логику софта.
Ты продолжаешь жалко пускать пыль в глаза, не в состоянии сказать ничего по существу - ибо абсолютно некомпетентен в вопросах, на которые пытаешься умничать. Прекращай позориться ради бога - ты уже достаточно написал.
когда уже JIT компиляцию микрокода CPU завезут? доколе?!
Опять передерут из BSD и объявят о разработке с нуля? Не удивили.
Вижу очередной предлог заставить хомячков в добровольно-принудительном порядке обновить парк железа, как это было с TPM.Написано с моего кор 2 дуо 2007 года.
Вот по этому правительство США призывает отказаться небезопасных языков!
Пользуются открытым кодом? Некий военный стартап попробовал NixOS и плюнул.
а вы их госдолг видали?
как думаете, связано? :-)
Почему правительство контролирует, на каких языках можно программировать? Ах, да... 451 градус по Фаренгейту.
ой да ладно, хоть sse ща везде используют, сборка какого-нить хромиума с avx2 уже кастом, а это intel 5xxx если не ошибаюсь
мож от 32битных, наконец-то, откажутся повсеместно
Чем тебе 32 бита мешают жить?
Тут недавно гугл выкатила 32-битную платформу... Неужели гугл не в курсе твоих желаний?
Если они будут аналогичны ARM MTE, то для динамической памяти достаточно будет поддержки со стороны аллокатора (см. hardened_malloc и GrapheneOS). Для защиты стека нужно будет собирать со определёнными флагами компилятора.
А вообще нам нужна альтернатива CHERI на x86_64.https://en.wikipedia.org/wiki/Capability_Hardware_Enhanced_R...
А неужто труднее починить фон-неймановсую архитектуру?