В стандартной библиотеке языка Rust выявлена уязвимость (CVE-2022-21658), связанная с состоянием гонки в функции std::fs::remove_dir_all(). В случае применения данной функции для удаления временных файлов в привилегированном приложении, злоумышленник может добиться удаления произвольных системных файлов и каталогов, к удалению которых в обычных условиях у атакующего нет доступа...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=56551
Самый безопасный язык
И самая лучшая ОС!> в ОС REDOX ... уязвимость не блокируется
Хайповать, считая что ЯП позволяет вырубить мозг при програмизме это не мешает. Мозг ведь вырублен.
Ну уязвимость да и уязвимость, все ошибаются. А нет, это же те которые пишут безошибочный, неуязвимый код ! Те которые везде кричат что все другие языки и кто на них пишет должны сдохнуть. Устаревшие и немолодежные, ничего непонимающие в программировании, теперь отныне и впредь все будет безопасно !А по факту - дырявая, тормознутая никому ненужная скрипта. Причем скрипта в худшей ее форме - компелируемая ! Даже прямой конкурент, на которого эта поделка ровняется - Go, и тот умеет в интерпретатор скриптов.
Маркетинговое г..но !
Rust конкурент плюсам, а не Go. У него действительно сложная, проработанная система типов, с которой ни каждый в состоянии разобраться, но так и в C++ она (система типов) навороченная, а использование SFINAE делает её магически сложной. Но в отличие от раста, плюсы позволяют собирать откровенный говнокод, что и позволяет адептам «старой школы» под каждым постом здесь вещать о том, что «нужно просто уметь писать»
Раст вообще никому не конкурент, где-то на 26-ом месте тащится в рейтинге...
Достойный аргумент (на самом деле нет), но я имел в виду, что раст нацелен, скорее, на туже нишу, что и C и C++, чем на ту где Java и Go.
Это утверждение чем-то подкреплено помимо собственных влажных хотелок? Нет причин использовать Rust там, где можно взять Go/Python/Kotlin, в остальных случаях C/C++ смотрится более приемлемо, чем только ради хайпа тащить непонятное нечто которое в половине случаев всё равно задачу не решит и потом всё равно придётся переписывать на C/C++
Vala же. Конкурент сишарпа без растозакидонов, с интеропом с сишечкой и через gobject-introspection либами цепляется за кучу разнообразной скриптухи.
Мем в том, что вала не хайпанула, и не пыталась, а так язык достойный, хоть и со своими траблами
Надо просто больше вала-евангелизма аля rewrite it on rust^W vala. Но для этого нужны фанатики, а их нет, а если они будут, то подпортиться репутация языка.
> Это утверждение чем-то подкреплено помимо собственных влажных хотелок? Нет причин использовать
> Rust там, где можно взять Go/Python/Kotlin, в остальных случаях C/C++ смотрится
> более приемлемо, чем только ради хайпа тащить непонятное нечто которое в
> половине случаев всё равно задачу не решит и потом всё равно
> придётся переписывать на C/C++C++17 / C++20 смотрится так же приемлемо и среди Go/Python/Kotlin
Не ради хайпа. Раст безопаснее С++, имеет продуманную систему типов, в отличии от Python (к которому я, кстати, ни каких претензий не имею, если не тащить его в прод), Go — слишком ограниченный, Kotlin — система типов унаследованная от Java где нет даже константности. С 2015 года мне не потребовалось переписать на другой язык ни одного модуля, что нельзя сказать о python
>Достойный аргумент (на самом деле нет), но я имел в виду, что раст нацелен, скорее, на туже нишу, что и C и C++, чем на ту где Java и Go.Обождите-ка, пару месяцев назад ещё вещали, что конкурет Си, а не С++
а теперь вдруг уже конкурент C++
даже определиться не могут, чему же он конкурентда и какая это "та же" ниша что у Си и C++
или растоводы видят у них одну и ту же нишу?да и каким же он может быть окркурентом C++ без ООП (от слова совсем)...
Там где требуется высокая производительность с минимальным рантаймом. На ООП свет клином не сошёлся и если на то пошло, то в С++ ООП не каноничный (см. smalltalk). Rust имеет свои средства для инкапсуляции и полиморфизма. А польза наследования несколько спорна.
>Обождите-ка, пару месяцев назад ещё вещали, что конкурет Си, а не С++Справедливости ради создатели раст и околорастовое коммьюнити никогда не рассматривали раст конкурентом Си, только С++ - всегда писали что у них разные ниши. Почему российские опеннетовские/лоровские сишники так ополчились на раст это другой вопрос, но на их вопросы тоже приходится отвечать раз они спрашивают не игнорировать же только потому что они сишники.
> или растоводы видят у них одну и ту же нишу?
Ниша раст - системное программирование при котором требуется высокая производительность кода при минимальном ущербе скорости разработки продукта (это ниша С++).
> да и каким же он может быть окркурентом C++ без ООП (от слова совсем)...
Нет, не совсем. Просто в раст используется другой подход - data oriented design. Хотя в нем есть некоторые компоненты ООП если потребуется, например полиморфизм можно осуществить с помощью trait objects, которые позволяют избежать diamond problem из С++. Трейты также обладают дополнительными преимуществами, которых нет в классических интерфейсах - ассоциированные типы (которые можно конкретизировать при имплементации), типы-параметры (т.е. если у тебя есть дженерик тип, ты можешь использовать его в коде как конкретный тип для создания объектов).
Чего в раст действительно нет и что в самых упоротых случаях придется обходить макросами это - наследование.
> Справедливости ради создатели раст и околорастовое коммьюнити никогда не рассматривали
> раст конкурентом Си, только С++ - всегда писали что у них
> разные ниши. Почему российские опеннетовские/лоровские сишники так ополчились на раст
> это другой вопрос, но на их вопросы тоже приходится отвечать раз
> они спрашивают не игнорировать же только потому что они сишники.как раз именно про Си и "сишные" дыры (судя по тем же российским/опенетовским комментаторам-растолюбам), а именно сишный подход к управлению памятью (и про Си прямым текстом видали здесь же упоминания на этом же опенете от тех же растоводов, ну либо не растоводов а просто троллей-комментаторов, тут уже не поймёшь кто где).
> Ниша раст - системное программирование при котором требуется высокая производительность
> кода при минимальном ущербе скорости разработки продукта (это ниша С++).C++ далеко не только системное программирование (из всех областй, где применяется, даже не самая большая доля, подозреваю)
> Чего в раст действительно нет и что в самых упоротых случаях придется
> обходить макросами это - наследование.для многих это куда важнее, чем наличие borrow-checker'а, вшитого в компилятор, подозреваю
(отходя от темы: лично как по мне, то лучше бы компилятор заставлял разработчика соблюдать хоть какие-то правила приличия, а всякие анализаторы - это уже доп.костыли. но тут большинство С-водов со мной не согласятся)
Именно, можно спорить о нем до хрипоты за или против, но факт остается фактом:$ pacman -Ssq 'in Rust' | wc -l
14$ pacman -Ssq | wc -l
13265
У меня на PopOS! уже 53 выдает.
А еще они вот такую штуку делают https://www.omgubuntu.co.uk/2021/11/system76-is-building-its...
Если честно, мне не понятно зачем это десктопу. Гораздо лучше IO-компоненты переписывать и дрова.
>плюсамРаз плюсики, два плюсики, получилась решёточка. C# конкурент раста, а не C++.
> «нужно просто уметь писать»Гайд хруста по unsafe вещает примерно то же самое. А, ну да, сисколы использовать нельзя, пользуйтесь стандартной либой. Правда и с ней, вот, вулны. Наверное не последний, жирнолибам и багов под стать.
Го сбацан для написания серверов, и работал над ним в числе прочих сам Кен Томпсон -- один из главных создателей юниксов.Поэтому на го не катите бочку.
Катите бочку на людей, использующих язык не по назначению, а также развивающих его в направлении npm.Апологетами npm'ов выложена дорога в ад.
Кен Томпсон — легенда, но это не аргумент в защиту языка) Го весьма популярен и, наверное, небезобаснованно. Горутины были революционным решением для продакшн языка. Но, лично мне, его система типов (возвращаемое значение вместе с ошибкой, отсутствие генериков, и.т.д) не нравится
Как раз таки возможность вернуть сразу и значение и код ошибки просто офигенная.
А что реально выбешивает в GoLang - так это необходимость писать так
if bla-bla {
}а не так:
if bla-bla
{
}
А возможность в гошечке тянуть зависимости прямо с гитхуба просто пушка! Не то что npm, правда?
Зависимости надо не с гитхаба тянуть, а в виде динамических библиотек компоновать.
> Зависимости надо не с гитхаба тянутьЕсли ты принимаешь Go, то и это примишь. А чо такого, это же го ты же эксперд. Вон ту фигню поставь себе на комп. Вытягивает пол гитхаба и еще порноварез ? Ну надо же компоновать, пойди покомпонуй, и через 5 минут возвращайся с отчетом сгенереным этой п..ботой.
Проходили уже не раз. Гошники инфантилы если думают что у них будет как-то иначе.
а можно и не тянуть, а можно и не с гитхаба. насколько помню, в расте можно только с crates.io тянуть. а уже сам crates.io принадлежит кому надо. oss со вкусом утренней корпоративной м*чи в лицо лол
В Rust можно не только с crates.io, можно из локальной директории, можно с GitHub, можно из собственного репозитория, аналога crates.io.
получаетсяgo - rust
1 : 1
> тянуть зависимости прямо с гитхуба просто пушка!Да вообще лепота. Вкрячит автор неведомой фигни бэкдор, он сразу и закачается 100 000 вебмакак за раз. А npm что, он тоже так умеет, проверено прошлыми новостями.
>и работал над ним в числе прочих сам Кен ТомпсонПоищи, что Кен говорит по поводу того, для кого сделано его детище.
>Апологетами npm'ов выложена дорога в ад.
Как хорошо, что в Go такого нет, правда? Ни колхозной системы сборки, ни подтягивания пакетов из сети.
> Как хорошо, что в Go такого нет, правда?есть.
и система сборки, и подтягивание пакетов из сети -- всё встроено в команду go.
это вызывает опасения.про это и коммент: если можешь катить бочку на кадров, двигающих Go по стопам npm, то надо катить.
у кого нибудь есть ссылка на то что говорит Кен Томпсон
Раст ещё слишком молодой, отсюда у него столько проблем.
В плане недопиленности достаточно взглянуть на список зарезервированных ключевых слов, которые будут реализованы в будущем: https://doc.rust-lang.org/book/appendix-01-keywords.html#key...Поэтому проблемы будут, испытывать каких-либо эмоций по их поводу не надо.
Люди, шумящие про безопасность, в большинстве своём неопытные начинающие программисты.
Опытные не шумят и всегда во всём сомневаются.
Потому что неизвестно и как-то так.Поэтому к шуму молодых надо относиться с долей игнора и -- когда возможно -- проводить инструктаж и кидать ссылки на маны, ликбезы и прочую документацию.
Как это делаю я -- аноним на опеннете.
Будьте как я.
> Раст ещё слишком молодойСколько веков должно пройти?
Лет 30, а потом появится нормальная замена ему в виде C+++
> Раст ещё слишком молодойСовершенно верно. Это только начало.
Просто за 15 лет немного не смог ни во что... бывает...
> Раст ещё слишком молодой, отсюда у него столько проблем.Лол, а когда я говорю растаманам, что их язык еще слишком молодой, они начинают мне доказывать обратное.
>Как это делаю я -- аноним на опеннете.Ты больше похож на вафеля, чем на анонима.
Аноним, зарегистрированный как "Аноним" -- это не аноним.
Поэтому к тебе это не относится.
Твоя работа -- рерайтить новости, поэтому иди, рерайть; и не вертись под ногами у труъ-анонимов.
аноним 404 , руку мастера ощущаю я
> Те которые везде кричат что все другие языки и кто на них пишет должны сдохнуть.Правда, крики существуют только в голове опеннетных Военов АнтиРастового Сопротивления.
> А по факту - дырявая, тормознутая никому ненужная скрипта. Причем скрипта в
> худшей ее форме - компелируемая ! Даже прямой конкурент, на которого
> эта поделка ровняется - Go, и тот умеет в интерпретатор скриптов.А по факту - очередной Воен перевозбудился и выдал тройной залп метана, устроив маленькую экологическую катастрофу обитателям лужи 😞
Да уж, терпимость рас(т)истов к другим языкам прямо зашкаливает.
>> <ни слова о раст и других языках>
> Да уж, терпимость рас(т)истов к другим языкам прямо зашкаливает.Дорогой Воен, не стесняйся и расскажи, где именно ты увидел что-то о "других языках" и "рас(т)истов"?
Или как обычно, фантазия Военов "прямо зашкаливает", не имея ничего общего с реальностью?
Далеко ходить не нужно, вот пост просто пылает любовью к другим языкам:> Это опеннетовские наСИльники лают на любой пролетающий мимо язык и желают ему сдохнуть. Чем больше язык залезает на территорию наСИльников, чем ближе к ним, тем ожесточеннее, яростнее они отгавкиваются и желают его мучительной смерти. Растоманы, похоже, совсем близко к бешеным подошли, их уже за ноги кусают. Растоманы пытаются объяснить что к чему и почему они такие, но где там - что об стенку горох.
> Далеко ходить не нужно, вот пост просто пылает любовью к другим языкам:
>> Это опеннетовские наСИльники лают на любой пролетающий мимо язык и желают ему сдохнуть.Помимо того, что отвечал-то аноним совсем не на него: где именно тут "нетерпимость и желание сдохнуть другим языкам"?
Нет он полон любви и терпимости, просто растафанатики выражают ее в такой форме.
>>>> (изначальный комментарий) А по факту - дырявая, тормознутая никому ненужная скрипта.
>>>> Маркетинговое г..но !
>>> <ни слова о раст и других языках>
>> Да уж, терпимость рас(т)истов к другим языкам прямо зашкаливает.Дорогой Воен, не стесняйся и расскажи, где именно ты увидел что-то о "других языках" и "рас(т)истов"?
...
> Нет он полон любви и терпимости, просто растафанатики выражают ее в такой форме.Ну то есть, ничего кроме спрыга с темы. Ожидаемо.
В самом комментарии.
> В самом комментарии.Ты о #64? Т.е. его на самом деле ваял "рас(т)ист"?
Но зачем ты написал - мне? Я аноним, а не Спортлотто.
> Дорогой Воен, не стесняйся и расскажи, где именно ты увидел что-то о "других языках" и "рас(т)истов"?
>>> Да уж, терпимость рас(т)истов к другим языкам прямо зашкаливает.
>> Дорогой Воен, не стесняйся и расскажи, где именно ты увидел что-то о "других языках" и "рас(т)истов"?
> В самом комментарии.
>> Дорогой Воен, не стесняйся и расскажи, где именно ты увидел что-то о "других языках" и "рас(т)истов"?Circular reasoning с сылкой на себя самого - это сильно!
Где ты увидил Circular reasoning с сылкой на себя самого? Глаза протри, ссылка на твой собственный коммент, лол.
> Где ты увидил Circular reasoning с сылкой на себя самого? Глаза протри, ссылка на твой собственный коммент, лол.Которого на момент ответа еще не существовало? И в котором, опять же, ни слова о языках или "расте"?
Какая неуклюжая выброс метана^W^W отмазка.
> Те которые везде кричат что все другие языки и кто на них пишет должны сдохнуть.С точностью до наоборот. Это опеннетовские наСИльники лают на любой пролетающий мимо язык и желают ему сдохнуть. Чем больше язык залезает на территорию наСИльников, чем ближе к ним, тем ожесточеннее, яростнее они отгавкиваются и желают его мучительной смерти. Растоманы, похоже, совсем близко к бешеным подошли, их уже за ноги кусают. Растоманы пытаются объяснить что к чему и почему они такие, но где там - что об стенку горох.
Почему? К тому же Kotlin например отношение вполне себе положительное, но его и не форсят с такой навязчивостью.
Точно, да и сишники не желают никому сдохнуть, просто констатируют факт, что само помрёт. А вот растобои постоянно с пеной у рта орут, что "сишка _должна_ сдохнуть"
> А вот растобои постоянно с пеной у рта орут, что "сишка _должна_ сдохнуть"А главным подтверждением этого утверждения опять выступает громкость пука?
Внимательно прочитайте коммент выше. Котлин не залезает на территорию си, в отличие от. Там же ясно написано - чем глубже на территорию Си - тем больше ненависти. Котлин уже в ядро линукса внедяют? Если бы это случилось, половина местных растохейтеров от "ифаркта микарда, вот такой рубец" тут померло бы, забыв про злополучный раст. Так что Вы только подтвердили мое утверждение.
У вас очевидные ошибки в слове "сишарп".
Ну, в данном случае, уязвимость не в языке а в использовании API ОС. Ни какая чёрная магия от подобных ошибок защитить не может. Плюс раста, что можно не думать о целом классе более сложных и опасных ошибок.
Я в этом немного сомневаюсь, потому что любой серьезный и большой проект на расте - это ехал unsafe через unsafe. И по-другому код на расте писать нельзя. По этой причине, ошибки, которые допускались при работе с плюсами никуда полностью не исчезли. Тогда возникает вопрос, а зачем раст вообще нужен? Свою задачу он не решает. Пердолинг ради пердолинга?
Вроде принципиальное отличие - локализация unsafe. Т.е. самый нижний слой может быть весь unsafe, а выше уже нет (при условии корректности unsafe).В С и С++ весь код полностью unsafe и локализовать нельзя.
И исследования уже были от Microsoft что до 60% уязвимостей - ошибки с памятью и 80% из них Rust способен устранить (цифры по памяти). А там не дураки сидят, деньги считать умеют.
Практически каждая вторая ошибка это выход за границы массива.
> цифры по памятиТ.е. придуманы.
~75% у Microsoft https://msrc-blog.microsoft.com/2019/07/18/we-need-a-safer-s.../ и ~70% в Google Chromium https://www.chromium.org/Home/chromium-security/memory-safety
Но ведь и в плюсах, есть похожие средства для корректной работы с памятью(умные указатели и т.д). Плюс, никто вам не мешает использовать различного вида анализаторы, санитайзеры и прочую полезную ересь. Просто в плюсах это идет как опция, а в расте как необходимость, которая ограничивает свободу программиста.Раст - это продукт от корпорации для корпораций, чтобы макаки писали хотя бы полурабочий софт быстро и за малые деньги. Это не то, на что стоит обращать внимание свободным людям, потому что есть куда более удачные реализации конкурентов в области системного программирования. Например, Zig, D, V, Nim. Но этим языкам не повезло иметь корпоративных маркетологов .
>Но ведь и в плюсах, есть похожие средства для корректной работы с памятью(умные указатели и т.д). Плюс, никто вам не мешает использовать различного вида анализаторы, санитайзеры и прочую полезную ересь.Ересь несешь ты. Плюсы полная помойка
> Плюсы полная помойкаНаписал чел у которого 90% ПО на компе, если не больше, написано на C/C++
>>> Но ведь и в плюсах, есть похожие средства для корректной работы с памятью(умные указатели и т.д).
>> Плюсы полная помойка
> Написал чел у которого 90% ПО на компе, если не больше, написано на C/C++Написал чел, не различающий Си и С++
Ну шо поделать, если от C++ там только пара фич.
> Но этим языкам не повезло иметь корпоративных маркетологов .А может наоборот - повезло?
Полностью согласен. Судя по последним тенденциям всё именно так. Особенно плюсую эту часть: Раст - это продукт от корпорации для корпораций, чтобы макаки писали хотя бы полурабочий софт быстро и за малые деньги.
>Но ведь и в плюсах, есть похожие средства для корректной работы с памятью(умные указатели и т.д).Они замедляют работу С++ программы, тогда как в Rust они задуманы изначально. Самый базовый пример unique_ptr: https://youtu.be/rHIkrotSwcc?t=1136
Rust - https://rust.godbolt.org/z/Ed69aKqah (unsafe тут только для FFI, чтобы код не соптимизировался в ноль. Он роли не играет.)
C++ - https://cpp.godbolt.org/z/frs671a6q>Плюс, никто вам не мешает использовать различного вида анализаторы, санитайзеры и прочую полезную ересь.
Они не дают 100% гарантии. Примеры есть у Microsoft и Google Chrome, которые заявляют официально что у них в коде 75% и 70% CVE соответственно вызваны некорректной работой с паматью.
>Просто в плюсах это идет как опция, а в расте как необходимость, которая ограничивает свободу программиста.
Я смотрю на это иначе - языковыми средствами обеспечивается работа в рамках, которые сами на себя накладывают программисты С и С+, если хотят писать современный код. Только программистам С и С++ чтобы писать подобный код нужно долго учиться на своих ошибках и держать все в голове даже во время работы, когда компилятор Rust эту низкоуровневую (в современных реалиях) работу проделает за них.
В тех случаях когда требуется борее гибкое поведение есть unsafe. Есть также и макросы, позволяющие писать ассемблерные вставки. Естественно никаких гарантий от компилятора в таких вставках обеспечиваться не будет. С другой стороны все такие вставки можно пересчитать и перепроверить при аудите. Но в С и С++ весь код - unsafe.>Раст - это продукт от корпорации для корпораций, чтобы макаки писали хотя бы полурабочий софт быстро и за малые деньги. Это не то, на что стоит обращать внимание свободным людям,
Корпорации на раст обратили внимание всего год назад, после того как его пять лет признавали самым популярным языком на StackOverflow.
Они хотят использовать Rust в работе, и потому поддерживают его. Также как они используют С и С++, и потому поддерживают их разработку тоже. И ядро Linux и много других полезных продуктов.>потому что есть куда более удачные реализации конкурентов в области системного программирования.
В чем они более удачны чем Rust? Пора уже переходить на следующий этап - ты показываешь пример кода на godbolt.org, выхлоп ассемблера. Мы вместе смотрим и сравниваем это с реализацией на Rust. Чтобы читающие могли сами сравнить где более удачная реализация. Как например с unique_ptr C++. А пока это всего лишь слова. Rust это уже рабочий инструмент, который во многом превосходит существующие.
>Практически каждая вторая ошибка это выход за границы массива.https://www.opennet.dev/search.shtml?words=%D5%D1...
Просто код в середине прошлого века писали вообще без каких либо проверок. Ибо компьютеры тогда были такими же мощными как калькуляторы сейчас. Из за этого есть общая статистика по переполнениям буфера. А как реальный способ атаки, переполнение буфера практически умерло лет 10 назад.
> А как реальный способ атаки, переполнение буфера практически умерло лет 10 назад.вроде бы убунта какая-то еще поддерживает
Да с проверками писали, и давно, и большинство. Но вот в команду попадает один, пишущий местами без проверок, или с проверками, как то не так остальные, и если это не будет замечено, то ой.
Середина прошлого века - это 50-е. Первые версии FORTRAN-а только-только вышли. А так - даже ассемблеров нормальных в массе своей еще не завезли, будут только к середине 60-х.> Ибо компьютеры тогда были такими же мощными как калькуляторы сейчас.
Сейчас калькуляторы более дохлые, чем 30-40 лет назад. Особенно в части программирования.
> Из за этого есть общая статистика по переполнениям буфера
Специфика C, наследство от PDP и от первоначальной роли языка - высокоуровневый ассембелер для системных задач. Вот в его почти ровеснике (даже чуть постарше), PL/I, для строк и структур были "допвектора", их описывающие. Можно конечно было поймать "чудо" с PTR и FREE, или запросить компиляцию без контроля границ, но тут уже действительно "сам, все сам".
> а зачем раст вообще нужен? Свою задачу он не решаетвендор-лок от корпораций и они этого не скрывают. вот два аргумента:
1. crates.io - посмотрите на досуге кому он принадлежит.. (rust foundation, где платиновые спонсоры это ясно кто)
2. история с уходом команды модераторов показала, что все эти КоКи, забота об ущемлённых за счёт способных, проклятие и изгнание несогласных руководителей проектов (Брендан Эйк, Столлман) - это для плебса, а на игрушки корпораций сие важные СЖВ-притензии не распространяются. как core-team была безотчётной сообществу, так и осталась, потому что у работодателя есть чёткий план
можно долго продолжать, но уже давно всё ясно
MS-студенты и прочие корпоративные зомби минусуют - я рад
>история с уходом команды модераторовТам типичный ледоруб, одни геи возбудились на то, что другой гей попал в core team через постель.
> уязвимость не в языке а в использованииНадо будет запомнить эту растамановскую фразу.
>> уязвимость не в языке а в использовании
> Надо будет запомнить эту растамановскую фразу.Не нарушай авторские права местных сишко-воинов!
Тем смешнее когда ее выдает расто-воен.
> Плюс раста, что можно не думатьновость именно об этом
Язык-то выполняет свои гарантии, тут скорее похоже на проблемы особенности ос
Совершенно верно. Безопаснее не бывает. Сию ошибку можно совершить в _любом_ языке, ни один от неё не спасёт.
Но если нет разницы, зачем нужен новый язык программирования с своими новыми граблями?
> Но если нет разницы, зачем нужен новый язык программирования с своими новыми
> граблями?С чего ты вдруг взял, что нет разницы?
Гигантская разница в том, что к 30 вагонам таких вот ошибок как в статье, сишники на своем любимом ЯП притянут еще 70 вагонов ошибок работы с памятью (статистика гугла)
Где посмотреть эту статистику?
В лабах по Си человека, которому ты отвечаешь. Надо же оправдать своё бегство на скриптуху.
Ещё раз повторяю: хватит путать safety и security.
Совершенно точно.
Да-да, не путайте туризм с эмиграцией. Давай тогда определения первого и второго.
Memory safety не нарушено. Так что мимо.
Логическую безопасность никто и не гарантировал.
> Самый безопасный языкSPARK https://ru.wikipedia.org/wiki/SPARK_(язык_программирования)
День назад в Linux ядре уязвимость нашли, и до этого находили, например в этом месяце (лень новость искать), и никто там вроде вонь не поднимал. А сколько уязвимостей в MSVC либах находили, только обновлять успевай. Все ошибаются, главное что эти ошибки находятся и оперативно устраняются.
Нет, т.к. там есть unsafe{}. Языки без unsafe{} безопаснее.
Ох что щас начнется...
Уже готовлю попкорн.
Я каждую новость про Rust жду только ради комедии в комментариях.
О да!
Самый лучший для комментирования на опеннете язык.
Только для рофла в комментах он и пригоден
Вот ты взял и все испортил...
Из-за тебя проиграл спор, кто из именованных клоунов прибежит первым - я ставил на пох'а, а коллега на тебя :(
Пох уже не успевает. Либо годы уже не те, либо наконец работой занялся вместо того чтобы гадить в комменты. :)
а мы нет :-D
Готовь сани летом... То есть готовь попкорм заранее!
Щас, попкорн ему. Давай выбирай сторону и вступай в бой!
А зачем глядеть со стороны срачь веселее. Так что я выбираю попкорн.
Зачем глядеть со стороны, ведь срач вечелее? Или глядеть со стороны срач веселее?
Это богоподобный язык
Есть только один божественный язык - Lisp.
Таки сомнения берут, хоть с него и начинал (если помните тот финский двухтомник).PS: новость да, из разряда "нарочно не придумаешь".
В Роcсии традиционно начинают с Паскаля. Ваш первый язык программирования Lisp? Этим фактом надо гордится, это язык элиты.
С бэйсика в школе начинал
Паскаль со своим структурным программированием, калечит ум.
Это же сколько нужно биться головой, чтобы додуматься до того, что в подпрограме должна быть только одна точка входа?!
Сомнения - это хорошо и правильно. Но ситуации это не меняет.А с какого начинал? С CL или сразу со схемы?
Неинтересно. Вот если бы ещё и в systemd CVE-шку нашли, вот тогда был бы филиал атомного апокалипсиса на опеннет. ;-)
> Всем пользователям программ на языке Rust, выполняемым с повышенными привилегиями и использующим функцию remove_dir_all, рекомендуется срочно обновить Rust до версии 1.58.1.Весь старый код, не совместимый с последней версией компилятора, просьба слить в унитаз.
Это тебе не какая-нибудь сишечка, в которую невозможно вносить изменения или обновлять библиотеки не переписывая код. Stability without stagnation[1] же. Опыт C, застрявшего в развитии в 89 году, когда был выпущен первый стандарт, был учтён при разработке rust'а. Так же как и опыт других языков, которые после десятилетий развития вдруг решались на ломающие совместимость изменения.[1] https://doc.rust-lang.org/edition-guide/introduction.html
Конченый синтаксис, частую его смену, смену апи, тормознутость, тяжеловесность и тд это вроде бы как забыли учесть ?
> Конченый синтаксис, частую его смену, смену апи, тормознутость, тяжеловесность и тд это вроде бы как забыли учесть ?Фантазии опеннетных анонимов уж точно забыли учесть! Негодяи!
> забыли учестьКакое это имеет отношение к теме беседы? Разговор про то, что (якобы) весь старый код сломается из-за необходимости переходить на rust-1.58.1. Нет, не сломается.
>Какое это имеет отношение к теме беседы?
>> Это тебе не какая-нибудь сишечка, в которую невозможно вносить изменения или обновлять библиотеки не переписывая код. Stability without stagnation[1] же. Опыт C, застрявшего в развитии в 89 году, когда был выпущен первый стандарт, был учтёндействительно, беседа ниачем
Лол, ты хочешь сказать, что ты увидел упоминание C, и решил, что разговор идёт о C, а не о расте?Или ты хочешь сказать что-то иное? Выражайся яснее тогда, пожалуйста.
Разговор идет о достоинствах и НЕДОСТАТКАХ Раста, которые растофанатики просто отрицают. Так понятно?
> Разговор идет о достоинствах и НЕДОСТАТКАХ Раста, которые растофанатики просто отрицают.Нет, это ты, разговаривая с голосами в своей голове, ведёшь разговор о достоинствах и недостатках раста. Здесь речь идёт о том, какие сложности поддержки кода создаются необходимостью использовать последнюю версию компилятора.
С голосами в своей голове здесь разговаривают только растаманы. Речь идет о том, что на расте невозможно написать hello world без необходимости править его с каждым выходом обновления, смотри исходный комментарий ветки.
Пруфы? Я пишу на Rust уже 5 лет и не припомню вообще ни одного случая, чтобы мне пришлось менять код при переезде на новую версию компилятора в рамках одной и той же редакции. А компилятор я обновляю всегда, когда выходит новая стабильная версия.
> Я пишу на Rust уже 5 лет:-D
> компилятор я обновляю всегда, когда выходит новая стабильная версия.
смешные вы, растамани. :-P
>> Я пишу на Rust уже 5 лет
> :-DА что не понравилось-то? Что я написал "пишу", а не "разрабатываю"? Придирки к словам? В комментарии, на который я отвечал, речь шла как раз про "писание", потому и ответ так сформулирован. В чем смех-то?
>А что не понравилось-то? Что я написал "пишу", а не "разрабатываю"? Придирки к словам? В комментарии, на который я отвечал, речь шла как раз про "писание", потому и ответ так сформулирован.Пишешь ты, или разрабатываешь, сынок, это не важно. Важно чтоб ты учился хорошо (с)
>В чем смех-то?
Прост, смешной камингаут получился :-D "Я уже 5 лет пишу на раста"... :-D Прости, дружище, но не сочувствую. :-D
> Пишешь ты, или разрабатываешь, сынокТебе что, 70 лет? Папаша мне нашелся :)
>> Пруфы?...
> :-D
> смешные вы, растамани. :-PКакой унылый слив.
А я припоминаю случай, когда хелловорлд с главной rust-lang у меня не собрался установленным в системе компилером.
> А я припоминаю случай, когда хелловорлд с главной rust-lang у меня не
> собрался установленным в системе компилером.Такое могло быть только до 2015 года, до того, как была выпущена версия Rust 1.0. Но с тех пор уже 7 лет прошло со стабильными выпусками новых версий каждые шесть недель, которые ничего не ломают.
Честно, уже не слежу.Но вроде как почти каждая новость по расту на опеннете сопровождается пачкой "диприкейтед" и "удалено", с новыми заплатками и изменениями в синтаксисе. Кроме того, отдельно застабилизировано два набора АПИ из всего многообразия (видимо сами задолбались искать нужную версию компилятора к разным версиям своего кода).
А еще на эту фразу у сектантов жутко подгорает, а значит она бьет в глаз а не бровь.
> Но вроде как почти каждая новость по расту на опеннете сопровождается пачкой
> "диприкейтед" и "удалено", с новыми заплатками и изменениями в синтаксисе.Нет. Каждый релиз сопровождается списком стабилизированных, то есть добавленных функций в std + иногда новые возможности языка, которые расширяют существующие, но не отменяют их. Я что-то не могу припомнить ни одного релиза с deprecated.
> А еще на эту фразу у сектантов жутко подгорает, а значит она
> бьет в глаз а не бровь.Не знаю, о ком речь, но лично мне просто стыдно за человека, который говорит ложь о том, чего он вообще не знает. А ведь его читают, ему верят на слово, потому что говорит он уверенно, как будто знает на 100%.
> ... но не отменяют их. Я что-то не могу припомнить ни одного релиза с deprecated.А я вот взял и в две минуты нашел. Рецепт:
1. Идем на https://github.com/rust-lang/rust/blob/master/RELEASES.md
2. Запускаем поиск по "deprecated",
3. Наслаждаемся.Для гурманов можно еще по всем "Compatibility Notes" (на которые переименовали "Breaking Changes", чтобы сильно не пугать видимо) сверху вниз пройтись. Тоже будет полезно.
> Не знаю, о ком речь, но лично мне просто стыдно за человека, который говорит ложь о том, чего он вообще не знает.
Судя по пруфу выше - лично за себя?
Ну вот лично моих проектов коснулось это:"The methods str::{trim_left, trim_right, trim_left_matches, trim_right_matches} are now deprecated in the standard library, and their usage will now produce a warning. Please use the str::{trim_start, trim_end, trim_start_matches, trim_end_matches} methods instead."
При этом не было никаких поломок, просто методы пометились как нерекомендуемые к использованию, но использовать их все равно можно. Это было 3 года назад. А вас послушаешь - так каждый месяц ломаться обратная совместимость должна.
Так и запишем - freecoder считает разработчиков Rust лжецами, которые пишут какую-то галиматью в своих чейнджлогах.Nuff said.
Итак, что в итоге:> Но вроде как почти каждая новость по расту на опеннете сопровождается пачкой "диприкейтед" и "удалено", с новыми заплатками и изменениями в синтаксисе.
1. Deprecated появляется в единичных случаях и далеко не каждый релиз. В основном это касается тех или иных функций в стандартной библиотеке, которые, тем не менее, все равно можно использовать. Код продолжает компилироваться.
2. Действительно, в тулинге вокруг языка время от времени происходят ломающие изменения: то изменят имя переменной окружения, то заменят название команды, то уберут какой-то экзотический таргет компиляции и т. п. К самому языку это имеет косвенное отношение. При программировании под x86_64 действительно, примерно раз в год нужно будет что-то такое исправлять в своих скриптах сборки.
3. Изменения в синтаксисе языка - никогда не ломающие. Несовместимые изменения выпускаются только в рамках новой редакции, раз в три года. При этом компилятор продолжает поддерживать сборку кода и в старой редакции.
Так что ваши жалобы на якобы нестабильность Rust сильно преувеличины. У вас нет практического опыта длительного использования Rust, и со стороны вам кажется, что есть какая-то серьезная проблема с обновлениями компилятора. А по-факту - ее нет.
tldr от freecoder:* нет такого,
* вы врете, нет такого
* а, упс, это не вы, а главная rust-lang... тогда ладно, есть, но это совсем не считается
Конечно, всем известно на этом сайте, что Урри по-умолчанию верить нельзя, без пруфов.
> У вас нет практического опыта длительного использования Rust, и со стороны вам кажется, что есть какая-то серьезная проблема с обновлениями компилятора. А по-факту - ее нет.Ну вот у меня нет опыта использования.
Но раз систему сборки периодически ломают. Значит придется для старых проектов использовать контейнеры или виртуалки, со старвми компиляторами в них.
Отсюда вопрос. Выпустят ли для старых версий компиляторв патчи для исправления этой ошибки?
> А я припоминаю случай, когда хелловорлд с главной rust-lang у меня не
> собрался установленным в системе компилером.Кривизна рук и никакого мошенничества.
У меня, конечно, руки не идеальные. И зачастую будто бы не из плеч.Но не настолько.
> А я припоминаю случай, когда хелловорлд с главной rust-lang у меня не
> собрался установленным в системе компилером.А я припоминаю не один случай, когда Урри с опеннета нес лютую пургу и просто балаболил.
Бывает, не спорю.Вот только про хелловорлд истинная правда, страуструпом клянусь.
> Бывает, не спорю.
> Вот только про хелловорлд истинная правда, страуструпом клянусь.Мальчик_который_кричал_Волк_.бас
> С голосами в своей голове здесь разговаривают только растаманы. Речь идет о
> том, что на расте невозможно написать hello world без необходимости править
> его с каждым выходом обновления, смотри исходный комментарий ветки.Покажи мне хеллоуворлд, который собирается последним компилятором и не собирается каким-нибудь древним. Или балабол.
И что я с этого буду иметь?Ну мне как бы придется потратить достаточно много времени, наверное, чтобы по истории главной (http://web.archive.org/web/20181001000000*/https://www.rust-lang.org/), которая меняется каждый день, найти нужный пруф.
Ящик виски выставишь? Или балабол?
> Ящик виски выставишь?Охлол, ты считаешь, что тебе за аргументацию твоего мнения должны ящик виски? Ну-ну. Сколько ящиков уже заработал за жизнь?
Балабол, значит? Ну ок, без проблем.
> Балабол, значит?Нет, чувак, это ты неподтверждёнными утверждениями кидаешься и это ты ставишь заведомо нереалистичные условия для получения этих подтверждений. Это ты балабол. Я тебе привёл выше ссылку, если у тебя есть вопросы к ней -- задай их. Я найду тебе ещё одну или объясню словами.
> Нет, чувак, это ты неподтверждёнными утверждениями кидаешься и это ты ставишь заведомо
> нереалистичные условия для получения этих подтверждений."Перелопать, Урри, всю историю главной rust-lang ради пруфов - это ведь заведомо реалистичная задача. Ведь ты, Урри, идиот и по одному кинутому мной, Ordu, слову побежишь тратить свое время на то, что я всегда могу проигнорировать." (с) Ordu
Нет, дорогуша, Урри не идиот. Урри рассказал о том, что было и Урри поклялся, что это правда.
Тратить свое время ради известного тролля Ordu (разве что взаимно потроллить его) Урри не будет - только за бухлишко.А верит Ordu Урри или не верит - Урри глубоко плевать, он с Ordu не спит чтобы такими проблемами заморачиваться.
То есть код, который собирался старой, но не соберется новой версией компилятора, не так прост и очевиден, его еще нужно поискать, потратив кучу времени. Так получается?
>> Нет, чувак, это ты неподтверждёнными утверждениями кидаешься и это ты ставишь заведомо
>> нереалистичные условия для получения этих подтверждений.
> "Перелопать, Урри, всю историю главной rust-lang ради пруфов - это ведь заведомо
> реалистичная задача.Не всю историю, тут ты преувеличиваешь. Ты же знаешь когда ты это делал? С точностью +- месяц, так? То есть уже месяца два-три всего лишь, надо перелопатить. Кроме того -- я этого не говорил вслух -- но в принципе я мог бы удовлетвориться описанием ошибки, которая там возникла. Я не представляю себе как hello-world мог не собираться. Синтаксис декларации main и println!'а не менялся. Что там может не работать?
> Ведь ты, Урри, идиот и по одному кинутому мной,
> Ordu, слову побежишь тратить свое время на то, что я всегда
> могу проигнорировать." (с) OrduКек, да, в этом вся суть интернет срачей. Если тебе не нравится, не лезь в интернет срачи.
> Нет, дорогуша, Урри не идиот. Урри рассказал о том, что было и
> Урри поклялся, что это правда.
> Тратить свое время ради известного тролля Ordu (разве что взаимно потроллить его)
> Урри не будет - только за бухлишко.Урри не идиот? Тратя время на известного тролля Ordu он говорит, что он не готов тратить на него время, и делая это безвозмездно, он заявляет, что будет делать это только за бухлишко? Он точно не идиот?
Есть пруфы, где именно поломали обратную совместимость с версией 1.0.0?
А еще, благодаря статической линковке, уязвимы все программы, собранные с Rust, старше 1.58.1
Упс. Но позитивная сторона этого заключается в том, что в реальном продакшене они мало где используются.
Все программы, использующие remove_dir_all и запускающиеся в привелигерованном режиме.
Все программы, использующие remove_dir_all.
> Все программы, использующие remove_dir_all."... В случае применения данной функции для удаления временных файлов в **привилегированном приложении**, злоумышленник может добиться ..."
Либо данных пользователя "А" пользователем "Б".
Если "Б" - это root, то да.
Нет.Это же очень просто.
Описываю: пользователь "А" запустил свое приложение, которое крутится и что-то там делает в /tmp (например, собирает статистику по нагрузке на ЦПУ в папочку и сортирует файликами). Пользователь "Б" (будучи, например, даже просто гостем в системе) эксплуатируя уязвимость удаляет файлы пользователя "А", к которым "в обычных условиях у атакующего нет доступа" (например потому, что они находятся на отдельном зашифрованном томе).
Вы, растофанатики, совсем не умеете мозгами думать? Увидели слово "привилегированный" и все, дальше мысль навсегда остановилась?
Откуда у пользователя "Б" возьмутся права на запись в каталог, созданный пользователем "А", чтобы подменить там что-то на ссылку?
Из тысячи различных вариантов, зависящих от ОС и админа, но никак не от юзера "А" и "Б".До вас все еще не доходит?
Если "Б" уже имеет права на запись в каталоги "А", то зачем ему пользоваться какой-то уязвимостью в программе, когда он может просто взять и удалить файлы пользователя "А" руками?Вы продолжаете упорно морозить чушь, до вас еще не доходит?
например если каталог - tmp
> например если каталог - tmpФункция remove_dir_all, о которой идет речь, удаляет директорию и все ее содержимое. По вашему пользовательская программа будет удалять /tmp?
>> например если каталог - tmp
> Функция remove_dir_all, о которой идет речь, удаляет директорию и все ее содержимое.
> По вашему пользовательская программа будет удалять /tmp?Директорию в ней. Впрочем, да, вероятно она будет закрыта для записи. Однако думаю юзкейс придумать не сложно.
> Директорию в ней. Впрочем, да, вероятно она будет закрыта для записи. Однако
> думаю юзкейс придумать не сложно.Попробуйте придумать. А вообще, в исходной новости не спроста говорится о привелигерованном режиме работы программы.
> Попробуйте придумать.утилита rm в redox
>> Попробуйте придумать.
> утилита rm в redoxАтакующий с правом перезаписи файлов юзера подменит (перезапишет) файлы, чтобы удалить файлы юзера?
*удаление гланд через анус.jpg*
> использующие remove_dir_allНу это про любую уязвимость в любой либе можно сказать.
> запускающиеся в привелигерованном режиме
С не привилегированным тоже, хоть понятное дело и менее опасно. Суть уязвимости - можно заставить программу удалить произвольный файл.
Ох ща начнётся...
> Интересно, что выпущенный патч решает проблему не на всех системах, например, в ОС REDOX и версиях macOS до 10.10 (Yosemite) уязвимость не блокируется из-за отсутствия флага O_NOFOLLOW,WIN
Этот язык непобедим
Уязвимость в неуязвимом языке
Хватит путать safety и security.
"Это другое!"
Если вы не знали, то да: memory safety != application security.
Хруст неуязвим
Дорогие комментаторы, а теперь придумайте как это эксплуатировать.
> исследователям удалось добиться повторяемого успешного проведения атаки после выполнения эксплоита в течение нескольких секунд.
Ну так это минимал репродюс смогли сделать. А в реальных приложениях где эта функция используется? Разве что на сервере файлов каком то.
> в реальных приложениях где эта функция используется?Неправильный вопрос ты задаёшь, Дядя Фёдор... Где в реальности используется раст вообще?
Много где, постоянно новости о его применении мелькают
Из недавнего с файлами: новый поиск гитхаба
> Много где, постоянно новости о его применении мелькаютВообще-то из наличия таких новостей далеко не следует его реальное применение. В основном эксперименты, которые оканчиваются ничем.
Хруст используется в качестве прокладки для ядра
Как это? Ты не знаешь где используется Rust???... В самом Rust же... В виде бесконечной рекурсии.
Элементарно.* заходишь в комментарии на опеннет
* громко ржешь аки лошадь
* удлинняешь себе жизнь на столько лет, сколько минут хохотал деленое на пять (старая эмпирическая формула),
* профит.
Удалить правила SELinux
> Дорогие комментаторы, а теперь придумайте как это эксплуатировать.Проблемами 0.5% сообщества должны заниматся 0.5% сообщества айти.
Думаю даже меньше.
> между проверкой и началом операции удаления имеется небольшая задержка.А растаманы вообще умеют думать, прежде чем писать код? Или они не знают такого термина "гонка"?
Пф. Гонка.Сходи зацени патч: https://github.com/rust-lang/wg-security-response/blob/maste...
Ужас. Код должен быть универсальным, а тут какая-то костыльная заплатка с указанием в коде конкретных ОС, в которых она работает. А сколько таких во всём коде моментов... При портировании компилятора на новые архитектуры что-то забудется и все.
https://www.gnu.org/software/findutils/manual/html_node/find...
Тем временем универсальный код: #ifdef #ifndef. В Linux ядро со своим API, в Windows своё API и так везде.
Разработчик модулей ядра?
> Разработчик модулей ядрана расте
"А у вас негров линчуют"
> Ужас. Код должен быть универсальным, а тут какая-то костыльная заплатка с указанием
> в коде конкретных ОС, в которых она работает.Ужас. Опять питонисты со своими размышлизмами набежали.
Раскрою страшную тайну - "универсальность" в вашем любимом питончике как раз и обеспечивается под капотом стандартной/системной библиотекой, дергающей примитивы ОС.
Ужас. Опять опеннетчики проецируют на других свои додумки. Питон тут ни при чём. Одно дело когда связываются API разных операционнок, другое когда в заплатке для исправления уязвимости такие костыли. Возможно, тут я не прав и это нормально?
>> уязвимость не блокируется из-за отсутствия флага O_NOFOLLOW, отключающего следование по символическим ссылкам.
> другое когда в заплатке для исправления уязвимости такие костыли. Возможно, тут я не прав
> и это нормально?Новость-то дальше заголовка читал?
А заплатку?
let child_is_dir = if cfg!(any(
+ target_os = "solaris",
+ target_os = "illumos",
+ target_os = "haiku",
+ target_os = "vxworks"
+ )) {
+ // no d_type in direntТ.е там вроде как есть dirent, но в нем отсутствует d_type
https://www.gnu.org/software/libc/manual/html_node/Directory...
"А так - все хорошо, прекрасная маркиза!" (c)
> Ужас. Код должен быть универсальным, а тут какая-то костыльная заплатка с указанием
> в коде конкретных ОС, в которых она работает. А сколько таких
> во всём коде моментов... При портировании компилятора на новые архитектуры что-то
> забудется и все.Ну запусти glibc нативно под вендой, че ...
смею заметить что там стопка unsafe....
Вместо проверки поддерживаемого набора функционала, наитупейшая проверка по названию ОС.
Лютый костылизм!
> Лютый растизм!fftgj
Facepalm. Крутой язык продакшен реди.
weak::Weak
> unsafe { unsafe { unsafe ...Зато локализовано! :-D
>> между проверкой и началом операции удаления имеется небольшая задержка.
> А растаманы вообще умеют думать, прежде чем писать код? Или они не
> знают такого термина "гонка"?Так этих растамнов, так!
https://www.opennet.dev/opennews/art.shtml?num=47894
> Уязвимость в Glibc, позволяющая поднять привилегии в системе
> вызванная переполнением через нижнюю границу буфера в функции realpath()https://www.opennet.dev/opennews/art.shtml?num=43886
> Удалённо эксплуатируемая уязвимость в Glibc, охватывающая большинство сетевых приложений в Linux
> Проблема вызвана переполнением буфера в NSS-модуле nss_dnshttps://www.opennet.dev/opennews/art.shtml?num=47722
> Уязвимость в Glibc ld.so, позволяющая поднять свои привилегии в системе
> Уязвимость вызвана переполнением буфера в компоновщике ld.sohttps://www.opennet.dev/opennews/art.shtml?num=28390
> Для Glibc представлен еще один метод повышения привилегийhttps://www.opennet.dev/opennews/art.shtml?num=41549
> Критическая уязвимость в Glibc, которая может привести к удалённому выполнению кода в Linux
> Проблема вызвана переполнением буфера в функции __nss_hostname_digits_dots()Ой!
Не чувак, это не считается. Это же логическую ошибку допустили, а не просто как обычно опять наговнячили с памятью! Подумаешь, таких багов с памятью вагон и маленькая тележка, к ним все уже привыкли.
Ещё как считается. Переполнение буфера в C - логическая ошибка, т.к. управление памятью ручное - стало быть, в рутинные обязанности программиста входит вызов подходящей функции по работе с буфером, чтобы не переполнить его. Такова логика программирования на C. Не учёл требования - логическая ошибка. Впрочем, это всё проблемы крестьян, а бояре опеннетчики таких глупых ошибок не делают. Вот их бы за glibc посадить!
А вот и "а у вас негров линчуют" подъехало.Хорошо подгорает у растофанатиков, далеко греет.
Покажи код на С, который этой проблеме не подвержен (удаления чего либо, особенно рекурсивного). Я посмеюсь тебе в лицо.
почему ни C++ или Go?
Ну вот плюсеры сообщают
https://pbs.twimg.com/media/FJmPk5EVQAM39xP?format=jpg&name=... .Следовательно, по мнению опеннета, плюсеры тоже ниасилили.
В смысле? У растофанатиков от любого кода подгорает. Даже от раста, который они не всегда отличают на самом деле
* нововсть о раст, лидер Анти-Растового Сопротивления Опеннета отписался уже в 8 комментариях*
> Хорошо подгорает у растофанатиков, далеко греет.Ты почаще повторя, чтобы точно никто не перепутал!
"Не горит абсолютно, совсем не горит." Ясно.
* Лидер Анти-Растового Сопротивления Урри отписался уже в 18 комментах и у него совсем-совсем НЕ ГОРИТ! *
>> Ты почаще повторя, чтобы точно никто не перепутал!
> "Не горит абсолютно, совсем не горит." Ясно.Молодец! Давай еще три раза повтори, для закрепления результата!
Лидер Анти-Растового Сопротивления Урри?Какая честь. А скажите, это только ваше личное мнение или общий растофанатский консенсус? Чтобы я знал как сильно гордиться своим достижением.
* 22 комментариями Урри окончательно заверил читателей, что горит совсем не у него*
Во-первых, вы не ответили на вопрос.
Во-вторых, почему у вас "развлекается" внезапно превратилось в "подгорает"?Не, я понимаю если бы я прибежал рассказывать "раст - _овно" на фоне мегауспеха, вроде "системд полностью переписан на раст" и "МИТ перешел на обучение алгоритмизации на раст". Но я развлекаюсь в теме "экосистема раст полностью обоcpaлaсь", чему тут подгорать?
В общем - почему у вас, растафанатиков, полностью отсутствует адекватность?
>>> Молодец! Давай еще три раза повтори, для закрепления результата!* в тридцати комментариях Урри пояснил *
> чему тут подгорать?Еще разок остался! Давай, ты справишься!
> В общем - почему у вас, растафанатиков, полностью отсутствует адекватность?
Почему те, кому мерещатся белочк^W "растофанатики", так любят порассуждать о чужой адекватности?
Просто эталонный комментрий любителя раста.Можно я его буду предьявлять всем, кто будет спрашивать об экосистеме раста?
> Просто эталонный комментрий любителя раста.
> Можно я его буду предьявлять всем, кто будет спрашивать об экосистеме раста?Просто эталонный комментарий Анти-Расто-Воена - Воену опять примерещились полчища Расто-Врагов и он смело записал всех кого увидел, в "растафанатики".
Видимо, по принципу других Военов: «Убивайте всех! Господь отличит своих»
А вот у них! В сишке!.. А вы видали вообще, что у них там! В сишке! Э-э-э-эх. Вот в сишке-то, а!.. *машет кулаком*
>> А растаманы вообще умеют думать, прежде чем писать код? Или они не
>> знают такого термина "гонка"?
> А вот сишка - это другое! *машет кулаком*Смотри, в монитор не попади!
Это не race condition, а TOCTOU, насколько понимаю.PS: туплю -- гонка _из-за_ TOCTOU.
Мне очень интересно как "сишники" решают эту же самую конкретную проблему?Ну то есть тут врождённая особенность файловой подсистемы линукса, да и не только наверное.
Нет конечно, думать же дорого. Rust этож специальный язык заменить программистов на макак работающих за еду...
Это сарказм?
При чем тут Растоманы? Это язык виноват.
Высосано из пальца. Такую ситуацию можно воспроизвести только в лабораторных условиях. В обычной жизни в тайминг не попасть.
Not a bug!
Фича это тот же баг, но в симпатичном свитерке.
Любимый пример. Некая софтинка, обычно запущена на одном компе но могут запустить ещё на трех, это компы диспетчерской, расположены в ряд. В софтинке есть функция записывающая в одну таблицу одну запись, в штатном режиме вообще не должны пользоваться этой функцией. Вопрос залу: Какова вероятность, что два пользователя сидящих в соседних креслах одновременно (с точностью до секунды) воспользуются этой функцией? Практика показала, что вероятность очень высока. Месяца не прошло с момента запуска софтины. Два человека, которые со своего рабочего места видят ВСЕ огромные мониторы решили одновременно воспользоваться функцией которой вообще и не должны были воспользоваться!
Ключевые слова:
Транзакция, База Данных, Атомарная Операция, Синхронизация.Неужели SQL уже окончательно устарел?
недостаточно unsafe написано для защиты от уязвимостей
больше вложенных unsafe в хрусте !
> Уязвимости подвержены все версии Rust с 1.0.0 по 1.58.0 включительноDefective by design
Что именно не так в дизайне?
Да! Я знал! Я верил! Это свершилось!
/* размазывает по щекам слёзы счастья */
хочется именно по швондеровски негромко и неуверенно молвить, растерянно глядя на патч, написанный на предлагаемой альтернативе языкам индустрии:
-это какой-то позор.
А что именно не так с патчем? И как именно эту бе проблему решают в стандартных библиотеках С++?
Безопасный говорили они
БезопасТный!
Карл !!!
Не могли бы вы указать, каким образом нарушена безопасность работы с памятью, о которой говорили они? Спасибо.
Низкопрофессональное ядро сообщества и отсутствие продуманного последовательного дизайна приводит к невозможности интуитивного качественного программирования, что выливается в патчи с пачками unsafe (ссылка в новости), что почти гарантированно приведет к нарушению безопасТности работы с памятью.В так сильно критикуемом растаманами С++ совершенно точно такая же безопасность работы с памятью обеспечивается с помощью использования умных указателей и простейшего скрипта на баше, который не позволяет коммитить код с поинтерами.
При этом С++ не страдает от такого зоопарка различных специальных символов в языке, дичайшего многословия и общего низкого IQ программистов.
Извините, но это ответ не на мой вопрос (читайте его выше).
> Извините, но это ответ не на мой вопрос (читайте его выше).Вы зачем-то отвечали на #36, искуственно сузив предмет обсуждения.
Ср.: "к пуговицам претензии есть?"
"Безопасный говорили они" - у вас есть подтверждения того, что Rust рекламируется именно как безопасный в плане security, а не memory-safety? То, что, допустим, лично вы перепутали эти понятия, никак не касается Rust и тех, кто его продвигает.
Чел, ты что хочешь добить всех своей дотошностью пока не скажут именно то, чего ты хочешь? В мире есть разные точки зрения, это и называется диверсити. Повзрослей уже.
> В мире есть разные точки зрения, это
> и называется диверсити.Дело в том, что точка зрения, будто Rust продвигается как средство от всех проблем безопасности (security) - это точка зрения растохейтеров, которую они пытаются навязать сторонникам использования Rust. Поэтому повторю вопрос: пруфы где?
Только дурачек верит в словосочетание - "Средство от всех проблем с безопасность"
> Только дурачек верит в словосочетание - "Средство от всех проблем с безопасность"Вот растохейтеры и доводят ситуацию до абсудра, навязывая эту абсурдную точку зрения своим оппонентам, а затем герроически с ней борются.
>> Только дурачек верит в словосочетание - "Средство от всех проблем с безопасность"
> Вот растохейтеры и доводят ситуацию до абсудра, навязывая эту абсурдную точку зрения
> своим оппонентам, а затем герроически с ней борются.Тебе уже написали ниже - обобщу и я, когда все, по твоему мнению вокруг дураки, стоит задуматься о собственном умственном развитии..
> когда все, по твоему мнению вокруг дуракиВставлю свои 5 копеек:
Не "все", и не "дураки". А "некоторые" и "вводят сами себя в заблуждение". И это действительно так, см. термин "соломенное чучело" -- вот это то, чем занимаются растохейтеры под этой новостью.
>Низкопрофессональное ядро сообщества и отсутствие продуманного последовательного дизайна приводит к невозможности интуитивного качественного программированияТак можно про любой проект сказать в котором выявили уязвимость. Вот только доказать трудно.
>что выливается в патчи с пачками unsafe
Это стандартная либа, там низкоуровневый код который без ансейфов не напишешь. В этом и суть стандартной либы - собрать часто используемые/опасные примитивы. При этом написать максимально скоростной код.
>что почти гарантированно приведет к нарушению безопасТности работы с памятью.
(Безотносительно того что новость про логическую ошибку, от которой не защитит ни один язык или компилятор.) При выявлении нарушения безопасности работы с памятью (SEGFAULT) возможные места ошибки локализовать проще если знаешь места где она может быть нарушена (UNSAFE-блоки). Также наличие unsafe-блоков позволяет проще провести АУДИТ кода! Профит.
>В так сильно критикуемом растаманами С++ совершенно точно такая же безопасность работы с памятью обеспечивается с помощью использования умных указателей
Google Chrome написан на С++, а в нем 75% уязвимостей это уязвимости работы с памятью.
Код Microsoft страдает от той же проблемы. Хоть там и не раскрывают долю кода на Си. Там тоже 75%.
Я уже не говорю про множество необычных проблем подобных https://www.amse.ru/courses/cpp1/2010.04.07.html
или таких https://habr.com/ru/post/114117/ которые safe-раст успешно обходит.>При этом С++ не страдает от такого зоопарка различных специальных символов в языке, дичайшего многословия
(Безотносительно легаси подмножества https://godbolt.org/z/hzWbGjG4j ) Все-таки чтобы получить выхлоп ассемблера соответствующей Растовому придется попотеть https://youtu.be/rHIkrotSwcc?t=1189 Когда в Расте это все дефолты.
Вот этот пример из видео https://rust.godbolt.org/z/Ed69aKqah (unsafe здесь для FFI, чтобы компилятор не соптимизировал наши функции до нуля. В реале его не будет.)
Ты же 5 лет программист на расте, а элементарных вещей не знаешь.
> Ты же 5 лет программист на расте, а элементарных вещей не знаешь.Уточни, каких именно элементарных вещей я не знаю?
>> Ты же 5 лет программист на расте, а элементарных вещей не знаешь.
> Уточни, каких именно элементарных вещей я не знаю?Которые приходят со зрелостью и взрослением :) Ко мне пришли через 4 года, а вот когда исполнилось больше 30 лет как я в программировании..
Все понятно. Речь о твоих маразматических тараканах. Этих вещей я действительно не знаю, ибо их сформулировать не можешь даже ты сам.
Высокомерие людей не красит.
Опеннетные дурачки, которые ни в чём не разбираются начали праздновать.А то, что такие гонки тысячами есть во всех ОС, драйверах, ФС и принципиально не устранимы не знают. Потому что С и Linux в руках не держали.
Это принципиально неустранимая проблема. Надо перепроектировать все системы и API ОС.
Такие гонки есть в каждом вызове практически.
Ну так скажи, НА ЧТО ПЕРЕПРОЕКТИРОВАТЬ??? Ведь Раст оказался совсем не панацеей, раз никого от уязвимостей не уберег. Вывод - на опеннете не дурачки, а понимающие, что если бесконечно продавливать "безопастность" на каждом шагу и обделаться в ней же - ещё хуже, чем просто делать и не акцентировать на этом внимание.
Нет, именно дурачки. Я настаиваю. Эта же уязвимость есть на ЛЮБОМ языке под Linux. Виноват в этом дизайн ядра, дизайн API ядра и дизайн ФС.Язык тут ни причём. Я писал на С под Linux лет 5, это мой хлеб 🍞 (был). И очень удивлялся что НЕВОЗМОЖНО на С написать безопасный и надёжный код (под Linux).
Там всё в этих состояниях гонки. Даже обычный обход дерева ФС. Пока его обойдешь оно уже изменится - состояние гонки.
Сделал malloc (а он виртуальный, физически память не выделяется) - состояние гонки. Когда память "трогаешь" и ядро пытается реально её выделить - её уже может не быть (занята другим процессом). Это состояние гонки, хотяты проверил что память есть.
Могу продолжать до бесконечности.
А Rust устраняет лишь класс ошибок. Этот язык мне симпатичен, хоть я его не знаю и давно пишу на JavaScript.
А причина этих гонок - многозадачность.
Ну и какие же классы ошибок устраняет раст, которые принципиально не устранимы на современных плюсах (с соответствующим инструментарием, настроенным компилятором, либами)?
Все о них говорят, но никто никогда не присылает конкретный список, либо говорит о диком легаси вроде malloc, char*, delete и т.п..
> Ну и какие же классы ошибок устраняет растраст устраняет единственную ошибку: неподконтрольность массового системного языка и инфраструктуры вокруг него корпорациям m$ и иже с ними (см. список бенефициаров раста на соответствующей странице раст фаундейшн)
Недооцененный комментарий. Это пока на нем мало пишут привязка к их организации не играет особой роли, а вот потом начнется цирк вендор-лока, сертификаций и прочего.
Дело то не в том, что они не устранимы. А в том что не пишут разработчики держа в голове все эти потенциальные ошибки. Они их допускают из раза в раз.
75% уязвимостей у Google и Microsoft происходят из-за ошибок, которые раст позволяет избежать если не использовать unsafe (или ревьюить их всем составом).Лично мне Раст нравится возможностью избежать data race https://pvs-studio.com/ru/blog/terms/0042/ в софте, который написан 3rd-party. Представь что в какой-то там библиотеке, внутри библиотеки, внутри библиотеки которую ты юзаешь существует тип данных не предназначенный к расшариванию потокам. Самый смак в том что это будет ошибка компиляции.
> Представь что в какой-то там библиотеке, внутри библиотеки, внутри библиотеки которую ты юзаешь существует тип данных не предназначенный к расшариванию потокам. Самый смак в том что это будет ошибка компиляции.Ну тут два варианта:
Если либа скомпилированная, то насколько я понимаю в расте может быть точно такой же случай в unsafe. Вообще говоря в чужой скомпилированной либе может быть плохо что угодно.
Если сам ее компилируешь то насколько я понимаю точно также детектится ThreadSanitizer, только в отличии от раста в плюсах еще можно и способ избежания data race при желании выбрать.> Дело то не в том, что они не устранимы. А в том что не пишут разработчики держа в голове все эти потенциальные ошибки. Они их допускают из раза в раз.
На самом деле их никто не держит.
> 75% уязвимостей у Google и Microsoft происходят из-за ошибок, которые раст позволяет избежать если не использовать unsafe (или ревьюить их всем составом).
Может быть хватит повторять одно и то же? Гугл и майки просто продвигают раст пытаясь получить java 2.0 под их контролем. У них 100500 сотрундиков которым нужно платить зарплаты побольше и все о чем они мечтают это внедрить логомиры в продакшен чтобы можно было нанимать детей за шоколадки. У них только команд больше чем у вас проектов, то что для вас на 5 минут у них выльется в месячное обновление (вспоминаем встроенные в раст анализаторы), то что для них незаметный эксперимент, для вас может быть смертью. Вы не гугл, вы не майкрософт, не стоит слепо копировать их (тем более обе эти компании не являются примерами идеального кода, скорее наоборот), смотрите что лучше для вас, а не для них.
>в расте может быть точно такой же случай в unsafe. Вообще говоря в чужой скомпилированной либе может быть плохо что угодно.Что угодно может быть плохо, но конкретно data race может быть только если есть unsafe, которые можно локализовать и провести аудит. Которые в rust-коммьюнити как красная тряпка для быка. На которые уделяется внимание и время при проверке коррекности.
>точно также детектится ThreadSanitizer,
Тут нужно ясно указать всем читающим что во первых это уже в рантайме происходит, как профилирование например. Во вторых не гарантированно. В третьих не покрывает все участки кода, также как ты не можешь рантайм-профилированием покрыть все места своей программы.
Когда в rust гарантированно, во время компиляции самим дизайном языка, а не сторонними инструментами.>Может быть хватит повторять одно и то же? Гугл и майки просто продвигают раст пытаясь получить java 2.0 под их контролем.
Вы утверждаете что их команды безопасности врут про цифры которые они получили? Можете сами проверить и запостить ваши цифры, вашу версию - все источники открыты. http://google.com/?search&q=cve+database если вы докажете их ложь, будете весь день висеть на hackernews !!
Они начали продвигать раст только после того как он, уже будучи продакшн-реди (как язык и экосистема, но без готового к переиспользованию кода), пять лет подряд становился самым любимым языком программирования на StackOverflow.
Вот кстати комментарий расто-хейтера который говорит об обратном https://www.opennet.dev/openforum/vsluhforumID3/126501.html#488
Гугл например инвестирует в Go. Так что это как посмотреть, возможно это очередной пример Embrace-Extend-Extinguish технологии. Может они наоборот пытаются его задушить как не своё детище.
> Вот кстати комментарий расто-хейтера который говорит об обратном https://www.opennet.dev/openforum/vsluhforumID3/126501.html#488Вроде он про то же самое говорит что и я.
> Гугл например инвестирует в Go. Так что это как посмотреть, возможно это
> очередной пример Embrace-Extend-Extinguish технологии. Может они наоборот пытаются его
> задушить как не своё детище.Предположу что просто в большой корпорации правая рука не знает что делает левая (как например это происходит в мтс'е где часть компании пилит свой сервис чтобы потеснить конкурентов, а другая часть уже договорилась с ними). Но комментарий годный, имеет смысл и EEE рассмотреть.
> и давно пишу на JavaScript.
> А причина этих гонок - многозадачность.Деточка, да Вам под дос писать.
На бейсике.И вот тогда зубы наконец станут шелковистыми.
</>
Шигорин, ты хоть где-то по существу отвечай. А то ты совсем ни в чём не разбираешься.
>Этот язык мне симпатичен, хоть я его не знаю и давно пишу на JavaScript.ГАГАГА
> если бесконечно продавливать "безопастность" на каждом шагу... то рано или поздно люди начнут перекладывать ответственность с себя на инструмент, переоценивая предоставляемую им защиту от ошибок.
Ну вон, исправили же, теперь бережёт)Просто важно понимать, что там не ЛЮБАЯ безопасность, а вполне конкретная с памятью или гонкой в потоках, отсутствие которой в C часто проводит к серьезным ошибкам
Местные комментаторы просто никак не могут запомнить, что безопасность в Rust - это про memory safety и type safety, а не про security. Просто на русском языке часто и safety и security переводят как "безопасность".
Я могу сказать что и как перепроэктировать.
В коментах правда и так кое что указали.Но главный вопрос в том, сколько вы мне заплатите. Ну допустим если я соглашусь на благотворительных началах помочь, то какими силами вы вообще собираетесь эти изменения внедрять?
> Ведь Раст оказался совсем не панацеейА где он себя позиционировал панацеей?
Хы, растофанатик пришел рассказывать нам, что "белые люди тоже едят других людей, просто хорошо это скрывают".Нет, дорогуша. Не так.
Какой же я фанатик, если я только на С код писал, и ни строчки на Rust. Я его даже не знаю.
> Какой же я фанатик, если я только на С код писал, и ни строчки на Rust. Я его даже не знаю.Ну, большая часть местных не только на Rust, но и на С не писали (даже если считать студенческие хелловорды) ;)
Вон, выше изумляются, зачем в стандартной библиотеке _системного_ ЯП вызовы примитивов OC, а не "универсальный код".
Ага, универсально (не иначе, как магией) дергать "open(path, flags)" в Linux и OpenFile/CreateFileA/W(path, accessFlag, modeFlag, secAttr ...) в венде. Т.е. демонстрируется абсолютно нулевное понимание современных скрипто-бибизьянок, что там "под капотом" - ведь в браузере/питончике "все работает!" :)
>> Какой же я фанатик, если я только на С код писал, и ни строчки на Rust. Я его даже не знаю.
> Ну, большая часть местных не только на Rust, но и на С
> не писали (даже если считать студенческие хелловорды) ;)
> Вон, выше изумляются, зачем в стандартной библиотеке _системного_ ЯП вызовы примитивов
> OC, а не "универсальный код".
> Ага, универсально (не иначе, как магией) дергать "open(path, flags)" в Linux и
> OpenFile/CreateFileA/W(path, accessFlag, modeFlag, secAttr ...) в венде. Т.е. демонстрируется
> абсолютно нулевное понимание современных скрипто-бибизьянок, что там "под капотом" - ведь
> в браузере/питончике "все работает!" :)Питонисты бы тоже должны знать, им даже изкоробочная либа намекает https://docs.python.org/3/library/pathlib.html
> Это принципиально неустранимая проблема.Получается, раст можно было и не придумывать?
Rust устраняет целый класс ошибок. Это уже здорово.Другие "классы" остались.
Редокс течёт, FF падает... Хорошо так "устранили".
Утечки не являются проблемами memory safety. То есть, Rust даже не пытается их устранять, это другой класс проблем.
> Утечки не являются проблемами memory safety.Зато дают как минимум потенциал для DoS.
Вообще удобно устроились: как горланить -- так про "безопасность", как в кусты прятаться -- так про "пуговки".
> как горланить -- так про "безопасность"Растовики "горланят" только про memory-safety, thread-safety и немного про type-safety. Вот эти "safety" - это и есть "безопасность". Security тут совсем не при чем, вы не разобрались в теме.
Вы где-то видели, чтобы разработчики Rust или freecoder говорили, что Rust занимается решением всех проблем security? Или всё же и там и там речь всегда идёт про конкретные safety (memory, type, thread)? Если первое, то не могли бы вы дать ссылку?
вообще-то являются, особенно при ограниченных ресурсах. То есть вы сами расписались только что в том, что Rust решает проблемы, которые бы с лёгкостью обнаружил бы любой тест. При том что тестировать необходимо любое ПО, в том числе ПО на Rust для обнаружения семантических ошибок, которые возможны вообще на любом языке. Ну удачи с такой философией.
>>> Редокс течёт
>> https://gitlab.redox-os.org/redox-os/redox/-/issues/855
>> The Redox kernel does not have the structures in place to allow freeing memory.
> вообще-то являются, особенно при ограниченных ресурсах. То есть вы сами расписались только
> что в том, что Rust решает проблемы, которые бы с лёгкостью обнаружил бы любой тест.Очередное Очень Ценное Мнение от очередного Экспертуса Опеннет.
Ок. Подождём ещё 10 лет и ситуация не поменяется ровно никак. Если бы Rust был бы действительно так хорош, как его декларируют фанатики - вопрос о его использовании даже бы не ставился. Как уже было сказано: Kotlin тот же звёзд с неба не хватает, но занял свою нишу, где активно используется, разработчики на Kotlin почему-то не носятся с ним как с тухлым яйцом, при том что сам язык совсем недавно вышел. С Go lang тоже самое! Go также появился ПОЗЖЕ Rust, сейчас это один из основных языков в Google (а не Rust), как же так произошло? Зачем вообще понадобилось делать Go если уже можно было доработать Rust? И это не моё ИМХО, это реальность чёрт побери. Можете долбиться о реальность сколько вам угодно и дальше, а она состоит в том, что те "проблемы", которые решает Rust своей моделью памяти на практике если кому-то и нужна, то в очень специфических случаях, в других же случаях проще использовать другие инструменты.
> Ок. Подождём ещё 10 лет и ситуация не поменяется ровно никак.Ну да, Ценное Мнение Экспертуса так и останется Ценным Мнением Экспертуса.
> Если бы Rust был бы действительно так хорош, как его декларируют фанатики
> - вопрос о его использовании даже бы не ставился. Как ужеКакой занятный (нет) спрыг и (никому особо не интересный) юлеж.
>> Go was designed at Google in 2007
...
>> The first numbered pre-alpha release of the Rust compiler occurred in January 2012.
> Go lang тоже самое! Go также появился ПОЗЖЕ Rust, сейчас это один из основных языков в Google
> (а не Rust), как же так произошло? Зачем вообще понадобилось делать Go если уже можно было доработать Rust?Очередная опеннетная оналитека от самого Опеннетного Экспертуса! Цените!
> И это не моё ИМХО, это реальность чёрт побери. Можете долбиться о реальность сколько вам
> угодно и дальше, а она состоит в том, что те "проблемы",Главный аргумент Экспертуса, чо.
От вас вообще не аргументы, а белый шум. Это безусловно помогает популяризировать Rust.
>>> Ценнеейшее Экспертное Мнение: Rust решает проблемы, которые бы с лёгкостью обнаружил бы любой тест.
>> (цитата автора): The Redox kernel does not have the structures in place to allow freeing memory.
>>> Ценнеейшее Экспертное Мнение: Go также появился ПОЗЖЕ Rust, сейчас это один из основных языков в Google (а не Rust), как же так произошло?
>> (на самом деле версия Rust 0.1 вышла на пару месяцев раньше первой _стабильной_ версии Go 1.0)
> От вас вообще не аргументы, а белый шум.Главное, почаще повторять мантру "Это реальность! А все, что не вписывается - белый шум! Воть!"
> Это безусловно помогает популяризировать Rust.
Еще один "занятный" спрыг с темы.
"Целые классы ошибок" устраняются подключением библиотеки или заголовочника, а еще обычной внимательностью во время разработки. Для этого не обязательно изобретать отдельный язык.
Очередно опеннентный эксперт демонстрирует свои знания, путая машинный код и ассемблер. Это вообще-то тоже отдельный язык.
И добавляет новых
> Rust устраняет целый класс ошибок. Это уже здорово.
> Другие "классы" остались.Список мне, СПИСОК. Опять мифический "целый класс ошибок". Везде и постоянно это слышу, прям заклинание. Но на меня не действует. Какие именно ошибки решает раст, которые нельзя было бы решить на современном C++ с подходящим инструментарием (статический анализатор, опции компилятора, либы)?
> Rust устраняет целый класс ошибок. Это уже здорово.
> Другие "классы" остались.Устраняет класс, но вот какой пласт ошибок он добавит - это покажет только время.
Как одно с другим вообще связано?
* В проекте на языке X нашли ошибку *
"Ну вот видите, а если бы писали на Расте, такого бы не случилось"* В проекте на Расте нашли ошибку *
"Такие ошибки существуют во всех языках!"
Да, не тут скорее «в glibc найдена дыра-дырища» — «ну ничего, случается, зато одной меньше будет теперь»; «в Rust std найдена дырочка» — «А я вам говорил! Не верили! Кушайте теперь! Кушайте! Довольны? Довольны? Так вам дедушку не слушать! Я побольше вашего знаю, куда там вам. Улыбаются ещё, когда плакать надо! Раст ваш НЕ-НУ-ЖЕН! Точка!»
Так сишка и не позиционирует себя как безопасный язык, к чему это передергивание.
А где Rust позиционирует себя как безопасный в смысле security язык? Он позиционируется как безопасный в смысле memory safety и type safety.
> Так сишка и не позиционирует себя как безопасный язык, к чему это передергивание.бо горит седло :-D
какое это glibc?... в glibc нету функции стереть все в каталоге.. это какой-то coretools..
Лайкнул потому что ты правду написал и в первом и во втором случае.
/мимо растаман
Как одно другому противоречит? Да, ошибки бывают разные. От некоторых Rust защищает, а от некоторых: нет.
Сама ФС должна иметь point-in-time "замораживание" всей файловой системы, как базы данных делают с транзакциями. Ни одна ФС этого делать не умеет, насколько мне известно.Да и в Linux такого API вообще нет общего. На 99% в Windows и OS X также.
Проблемы подвержен любой код на любом языке.
> Сама ФС должна иметь point-in-time "замораживание" всей файловой системыОткрыл файл, весь сервер сел подождать.
> Проблемы подвержен любой код на любом языке.
Не любой а только тот, который написали аналогичные по квалификации растофанатики.
Узнай что такое транзакции, как они работают в БД и как БД вообще работают. Узнаешь много нового.И узнаешь почему там ничего не "тормозит".
Вот ссылка https://www.youtube.com/playlist?list=PLSE8ODhjZXjZaHA6QcxDf...
да да, узнай. Что попытка сделать журналируемые FS аналогично БД и транзакциям закончилась провалом.
В качестве теста - попробуй открыть транзакцию и вдвоем начать модифицировать одну запись и получить "предсказуемый" результат. Узнаешь что вторая транзакция затормозится до тех пор пока первая не закончится.
Кстати, вроде бы btrfs это про транзакции и вот эти вот гарантии.Их снэпшоты это оно и есть, или похоже.
Работает неплохо.
Ну а что по вашему ДОЛЖНО происходить?
Запись непредсказуемой билебердой забивать?
> Узнай что такое транзакции, как они работают в БД и как БД вообще работаютя уже было сжал свою чёрную дыру а тут... ссылка на ютуб. :'(
Так лучше? https://15445.courses.cs.cmu.edu/fall2021Там все ссылки далее на научные статьи
а потом, когда школа закончится, кто-то узнает про блокировки транзакций, которые могут неслабо так сложить половину клиентов
и да, транзакции прекрасно тормозят, даром не бывает ничего кроме ваших упоротых комментов
Ты умеешь лучше? Или ты предлагаешь забить и оставить все гонки "как было". Либо максимальная производительность, либо максимальная безопасность.Выбери что-то одно.
> Узнай что такое транзакции [...]
> youtubeПоколение непуганых :(
А Дейта, скажем, почитать уже немодно, да?
Какая ещё Дейта? Это один из лучших в мире курсов по базам данных.
Мишель ! Вам бы тут не глазки строить, а очень сильно переживать по поводу сабжа. Если ядро без него не будет собираться - кто даст гарантию что всякие эльбрусы не будут забанены при очередных санкциях ?
Тебя там выше попросили написать неуязвимый код на С.
Где он?
А тебе вообще тут никто ничего не обязан.
А почему не на брейнфаке? Или не на С++? Или не на лиспе?Почему именно С то? И, кстати, где просили?
Глазки протри.В общем кода не будет, все с тобой ясно, балабол.
Вместо того чтобы балаболить, покажи код на С, который не подвержен.
#include <stdio.h>
int main(){
retun printf( "hello opennet\n" );
}
Ошибка.У тебя если программа вывела "hello opennet\n", она возвращает код ошибки 14, также как если printf завершится ошибочно (и вернёт -1).
А при успешном выполнении программа должна возвращать ТОЛЬКО 0. Твоя не возвращает его никогда.
> Ошибка.
> У тебя если программа вывела "hello opennet\n", она возвращает код ошибки 14,Ждем корректный хелловорд (ни разу на си еще не видел).
#include <stdio.h>
int main(){
printf("hello opennet\n");
return 0
}А это минимальная программа, которую можно скомпилировать(да компилируется с предупреждением).
main;
да да,return 0;
> да да,
> return 0;...даже я заметил. Впрочем, когда лезу поучительствовать, регулярно спотыкаюсь примерно так же.
>> Ждем корректный хелловорд (ни разу на си еще не видел).
> #include <stdio.h>
> int main(){
> printf("hello opennet\n");
> return 0
> }
$ echo "hello opennet\n" > /dev/full
echo: write error: no space left on device
$ cat hello.rs && rustc hello.rs && ./hello > /dev/full
pub fn main() {
println!("hello opennet");
}
thread 'main' panicked at 'failed printing to stdout: No space left on device (os error 28)', library/std/src/io/stdio.rs:935:9$ ./a.out > /dev/full
<пусто>
Ну вот - опять не увидел :(
5.1.2.2.3 Program termination1 If the return type of the main function is a type compatible with int, a return from the initial call to the main function is equivalent to calling the exit function with the value returned by the main function as its argument;11) reaching the } that terminates the main function returns a value of 0.
Возвращаемое значение из printf() конечно же никакого влияния на код возврата не имеет, `printf();` это statement, а не expression.
Так что кто-то не знает C.
О, у нас тут появился С-теоретик.Верно, и этот "кто-то" - это ты. А мог бы не полениться и просто скомпилировать
программу и проверить что она возвращает.Возвращает она 14.
Страшно, истинно страшно за местных экспертов и С-гуру, которые никогда не ошибаются, умеют всё писать правильно и без ошибок. Поэтому Rust им не нужен.
Но не в состоянии написать за пол-дня даже 1 строчку кода на С без ошибок. Даже когда ткнули, даже когда она почитали стандарт, даже Hello World.
Чудовищный уровень деградации и падения профессионализма. И после этого вы называете JavaScript программистов макаками и смузихлёбами? И говорите что Rust не нужен?
> Ошибка.
> У тебя если программа вывела "hello opennet\n", она возвращает код ошибки 14,
> также как если printf завершится ошибочно (и вернёт -1).
> А при успешном выполнении программа должна возвращать ТОЛЬКО 0. Твоя не возвращает
> его никогда.Никому она не должна. Это автор программы решает каким стандартам программа следует, можно ли ориентироваться на ее код возврата, а то и вовсе может решить всегда возвращать 0, а ошибки смотрите в логе, например. У меня тут в интепрайзе репозиторий с 300+ программ и я не уверен что хотя бы половина возвращает осмысленный код ответа, а случаев где на него действительно обращают внимание только наверное запуск по кронам с кроником.
Ещё одна ошибка (потенциальная)!Твоя программа может напечатать ЛЮБОЕ количество символов из "hello opennet\n", например "hell" и завершиться с ошибкой.
Это произойдет если я нажму Ctrl-C и тебе придет сигнал SIGINT. А сигналы ты не обрабатываешь. А сигнал может прервать любой системный вызов (!). И твой вывод будет неполным (!). Те напечатать она может любое количество символов.
Читать здесь https://groups.google.com/g/comp.unix.programmer/c/QZmFw1Vyt...
Сделай видосик как ты успеваеш это сделать !
Если ты не понял - нажимать ничего не обязательно. Прилететь может любой сигнал, и от самой ОС.Те. как видишь никаких гарантий ничего в Linux нет.
и что ты предлагаешь? и какая разница, пусть там хоть stdout закрыт - не проблема программы.в принципе, можно выходить через обработчик и там выводить через write(). только нужно маску поставить, иначе задублируется ещё.
а читать не по ссылке нужно, а
man signal
man signal-safety
Ок, тогда так#include <stdio.h>
int main(){
return printf( "hello opennet\n" ) == 14 ? 0 : -1;
}
Бить по рукам за "магические константы".
И, отдельно, за тринарный оператор там где он не впился.* Да, на любом ЯП можно наговнокодить. Но в чём смысл "однострочников" на C?
Для такого есть bash (+sed+awk), perl, python.
Что-то не нравится? Покажи свой вариант - я всегда готов поучиться ;)
> Что-то не нравится? Покажи свой вариант - я всегда готов поучиться ;)Я на C почти не пишу (больше читаю), но если хочется именно "однострочник" то:
return printf( "hello opennet\n" ) < 1;
Завершаемся с нулём если удалось что-то вывести.
Иначе 1, по крайней мере в последних спецификациях C.Если таки нужно убедиться что выведено всё, то как-то так:
#include <stdio.h>
int main(int argc, char *argv[])
{
unsigned char *hello = "hello opennet\n\0"; /* Не буду думать что "компилятор умный" */
return printf( hello ) == sizeof(*hello);
}
ИТОГО: код должен делать осмысленные вещи и не "ломаться" от "любого чиха".
В физике для этого есть определение "устойчивости". Более общего математического я не знаю, но в приведённом примере "любой чих" — это изменение выводимой "строки". (Которая, до кучи, в первом аргументе printf задаёт "формат". Поэтому мне /и любому кто такое вытворяет/ — индивидуальные тисочки для выпрямления рук.)И последнее. В языке C нету "строк". Когда-то это мне рвало шаблон "ну код же похож на другие высокоуровневые".
Что-то тут не то. man printf(3) говорит, что на вход принимается const char*, а у тебя unsignerd char*. А за остальное - спасибо, возьму на заметку.
> Что-то тут не то. man printf(3) говорит, что на вход принимается const
> char*, а у тебя unsignerd char*. А за остальное - спасибо,
> возьму на заметку.Ну ок,
char *hello = "hello opennet\n\0";"unsigned" — да, ляпнул не подумав.
"const" — подсказка компилятору, но это C и никто руки не выкручивает.
Проверил сейчас специально с "-Wall" — собрал без ругани. "gcc version 7.5.0 (SUSE Linux)"
какая ошибка? если получил сигнал на прерывание то будь добр прервись - это уважение программы, всякие там хрени которые обходят поведение SIGINT уже херово-коденье. Ты бы еще про буферизацию вспомнил бы (не выполняет намеренное сбрасывание из буфера в поток) или докопался что у него нет сброса привилегий а также не проверяет каким компилятором и спецификой версии языка пользуется.
> всякие там хрени которые обходят поведение SIGINT уже херово-коденьеГы.
Python 3.8.10 (default, Nov 26 2021, 20:14:08)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> ^CKeyboardInterrupt
>>> ^CKeyboardInterrupt
>>> ^CKeyboardInterrupt
>> если получил сигнал на прерывание то будь добр прервись
> Гы.
> Python 3.8.10 (default, Nov 26 2021, 20:14:08)
> [GCC 9.3.0] on linux
> Type "help", "copyright", "credits" or "license" for more information.
>>>> ^C
> KeyboardInterrupt
Занятный ламеризм.
^C в интерактивном интерпретаторе/режиме (ЧСХ, далеко не только питона, но и ghc, calc, swi) прерывает вычисления.
Type "help", "copyright", "credits" or "license" for more information.
>>> while True: pass...
^C
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyboardInterrupt
То есть делает не то, для чего предназначен.
Занятный ламеризм. (с)Даже в богомерзком ведроиде с его дикими ограничениями на средства коммуникации с приложениями во множестве апликух двойное нажатие "назад" закрывает приложение.
>> прерывает процесс вычисленияhttps://man7.org/linux/man-pages/man7/signal.7.html
>> SIGINT P1990 Term Interrupt from keyboardhttp://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf
>> SIGINT receipt of an interactive attention signal-
> То есть делает не то, для чего предназначен.
> Занятный ламеризм. (с)
> Даже в богомерзком ведроиде с его дикими ограничениями на средства коммуникации с
> приложениями во множестве апликух двойное нажатие "назад" закрывает приложение.О, сейчас зумерки нам расскажут за "правильные" сигналы в целом и "как должен себя вести SIGINT" в частости, аргументируя поведением ведроидных приложений при нажатии "назад"!
SIGINT (от англ. signal и interrupt — прервать) — сигнал, применяемый в POSIX-системах для остановки процесса пользователем с терминала.
Определён в заголовочном файле signal.h. Посылается программе, выполняемой на терминале, с помощью нажатия специальной комбинации клавиш для прерывания программы (обычно — Ctrl+C).Учись читать, внучек, пока я жив.
Вообще-то, зумерку привели цитату из мана и стандарта, описывающего signal.hВ качестве "опровержения" зумерок сплагиатил что-то из помой^W педивикии (причем, русскоязычной).
И его нисколько не смутил смелый и вольный перевод "interrupt" (прерывание) в виде "остановки".
https://en.wikipedia.org/wiki/SIGINT_(POSIX)
> SIGINT 2 Terminate Terminal interrupt signal
> The SIGINT signal is sent to a process by its controlling terminal when a user wishes to interrupt the process.Эпичненько.
> Эпичненько.Согласен, обсер действительно просто эпичный.
У деточки настолько неразвитые нейрончики (тикточек виноват, не? или джаваскриптик? а может в смузи чуть с горя не утопился, когда в барбершопе неправильно бородку подровняли?), что деточка не может понять пары простых слов. Даже когда сама же их цитирует.
Деточка не в курсе, что такое "process", да? Деточку не учили читать все, а не выдергивать одно слово? А ведь там же, по деточкиной ссылочке все это есть.
--
А потом удивляются за что так презирается сообщество раста. А как относится к людям, которые даже двух слов связно понять не могут, но понтов зато выше небоскреба?
> Согласен, обсер действительно просто эпичный.
> У деточки настолько неразвитые нейрончики (тикточек виноват, не? или джаваскриптик? а может
> в смузи чуть с горя не утопился, когда в барбершопе неправильно
> бородку подровняли?), что деточка не может понять пары простых слов. Даже
> когда сама же их цитирует.Ух, какие аргументативные аргументы!
>> when a user wishes to interrupt the process
> Деточка не в курсе, что такое "process", да? Деточку не учили читать
> все, а не выдергивать одно слово? А ведь там же, по
> деточкиной ссылочке все это есть.Расскажи, какие буквы тебе не понятны в interrupt. Заодно расскажи, как "неправильно" работает интерактивный режим в (b/z)sh.
> --
> А как относится к людям, которые даже двух слов связно понять не могут, но понтов зато выше небоскреба?Ну, тебе лучше знать, как к тебе относятся.
> ^C
> KeyboardInterrupt
> То есть делает не то, для чего предназначен.
> Занятный ламеризм. (с)
> Даже в богомерзком ведроиде с его дикими ограничениями на средства коммуникации с
> приложениями во множестве апликух двойное нажатие "назад" закрывает приложение.О Великий Гуру, расскажи побольше о "ламеризме" авторов bash, dash, csh и т.д.
Потенциальная. Мы что, серьезно будем обсуждать 1 строчку кода на С?Пишет он в файл - сигнал, вылет. Файл corrupted. Но он создан, он есть. Что он испорчен никто уже не знает. Следующая программа в цепочке уже принимает невалидные данные.
Придумать как это превратить в уязвимость - это вопрос времени и желания. Нет этот, так другой случай. Коих тысячи в любой программе.
А сигнал надо перехватывать, обрабатывать, и файл удалять, например. Но кто так делает? 0.0001% программистов на С.
А серьезно обсуждать одну строчку кода...ну такое. Скажем так - с развитием этой программы эти баги полезут косяками.
Данная придирка избыточна для однопоточных "портянок".
От них именно такое поведение и ожидается.* Но да, грамотно обработать (а не просто заигнорить) некий сигнал бывает тем ещё квестом.
> Ещё одна ошибка (потенциальная)!
> Твоя программа может напечатать ЛЮБОЕ количество символов из "hello opennet\n", например
> "hell" и завершиться с ошибкой.
> Это произойдет если я нажму Ctrl-C и тебе придет сигнал SIGINT. А
> сигналы ты не обрабатываешь. А сигнал может прервать любой системный вызов
> (!). И твой вывод будет неполным (!). Те напечатать она может
> любое количество символов.
> Читать здесь https://groups.google.com/g/comp.unix.programmer/c/QZmFw1Vyt...Скажу больше - любую программу можно прибить во время выполнения и она ничего не сможет с этим сделать. Жду маркетологов от раста которые "исправят этот пласт ошибок".
Столько комментов, а никто так и не сказал про "retun". Если, конечно, я чего-то не знаю про С.
Другие комментаторы оказались умнее и не стали придиратся к опечатке?
> Другие комментаторы оказались умнее и не стали придиратся к опечатке?Опечатка простительна во многих случаях, но только не у учительствующего.
Поймаете у меня -- _обязательно_ ткните носом!
>Открыл файл, весь сервер сел подождать.В линуксе нет эксклюзивного доступа к файлу?
К чему этот вопрос?
Напомню контекст:>> Сама ФС должна иметь point-in-time "замораживание" всей файловой системы
> Открыл файл, весь сервер сел подождать.
Дурацкий контекст. Что тут обсуждать?
Транзакции изобрели не вчера. Есть множество способов сделать это быстро и хорошо.А серверное приложение на линуксе и так легко подвисает при невозможности доступа к файлам.
Особенно это ярко проявляется с NFS.И не только приложение, давайте вспомним не так давно потерянный спутник, из за того, что у него логами забился то ли var то ли tmp.
В общем вы видите проблему там где её нет.
> Сама ФС должна иметь point-in-time "замораживание" всей файловой системы, как базы данных
> делают с транзакциями. Ни одна ФС этого делать не умеет, насколько
> мне известно.
> Да и в Linux такого API вообще нет общего. На 99% в
> Windows и OS X также.
> Проблемы подвержен любой код на любом языке.А вообще-то нужно внимательно смотреть вглубь разработок файловых систем - ZFS например, транзакционность реализована через CoW. А то когда "ООО EXT X - наше все, скорость, скорость, скорость"... Выпадает состояние гонки - "ОООО Сама ФС должна иметь point-in-time "замораживание" всей файловой системы"
/me тихо поржал, продолжая дальше кодить на C для STM32/ESP32.
глянь-ка, как сколько труда вбухивается
https://github.com/stm32-rs/stm32-rs
но я уже 2 года кодю СТМ32, но глянув это, ниче не понимаю, как будто на ассемблере в JS-стиле написано.
> но я уже 2 года кодю СТМ32,если кодиш то и на хресте поймеш что там к чему, почти тоже самое, только обвернуто в хруст два раза. другое дело что лютый пдц конечно
1. Надежность.При обновлени библиотек, ПО тестируется. Если результат тестов не тот, как ожидалось, и ошибка не находится примерно за час, по обновление откатывается до предыдущей стабильной версии, или той, для которой есть надёжные проверенные подпорки. Актуально и для STM32 и для ESP особенно.
При таком подходе, как бы ненароком руст обертки совсем на ноль не поделить.
Никто не будет специально проверять, то что обновят как нибудь без их ведома.2. Цена.
Уже на ESP очень элегантно и эффективно можно использовать C++ в нормальном, не урезанном как в Ардуинах виде. На толстых STM, почему то не используем.
Кому то быстродействие ESP кажется огромным, по меркам встраиваемого ПО. Но в реальном ПО часто код работает и на грани быстродействия, и на грани израсходования ОЗУ.
Всякие обертки и надстройки сделают невозможным использование существующего Железа, и потребуют переход на более мощное, типа Raspberry. Но, на нём конечное решение почти в сто раз дороже!
Проведем аналогию. Вместо ста солдат выставили одного киборга, он не уснет на посту, не уйдет в самоволку, не будет пьянствовать, казалось бы одни плюсы, ну если ПО без багов. Но это же всего один солдат.
Но там же 67% на питоне...
тогда уже есть microPython и tinyGo, если ся, луа и js не осилили
>как будто на ассемблере в JS-стиле написаноТак корреляция бывших фронтендеров и растоевангелистов давно уже замечена и доказана.
Можно ссылочку на научную публикацию в каком-нибудь значимым журнале?
Это первая ?
далеко нет.
Надеемся, далеко не последняя
"Уязвимость" не столько страшная, сколько смешная. Особенно после криков фанатиков о безопасности. Не будь столько дешевого пиара вокруг языка, то многие обсеры не воспринимались бы так жестоко.
Прямо с главной страницы:
type system and ownership model guarantee memory-safety and thread-safetyНи кто не говорит про всецелую безопасность
Т.е. когда текла память в ядре редокса - это memory-safety?!
А разве утечка памяти может получить рута?
т.е утечка памяти и всякие мелкие уязвимости из-за запуска не в том веке или не на той планете -это фигня ? ок , ждем пополнения этого списка еще и рутом
Утечки - это не фигня. Просто это не memory-safety и не thread-safety.
Логические ошибки - это не фигня. Просто это не memory-safety и не thread-safety.
Бекдоры - это не фигня. Просто это не memory-safety и не thread-safety.
...
Сколько вам раз нужно еще повторить, чтобы вы научились уже отличать проблемы memory-safety и thread-safety от всех остальных?
> Сколько вам раз нужно еще повторить, чтобы вы научились уже отличатьта ладно, что уж там. будет рут - расскажешь
https://gitlab.redox-os.org/redox-os/redox/-/issues/855
>> The Redox kernel does not have the structures in place to allow freeing memory.
> Т.е. когда текла память в ядре редокса - это memory-safety?!Интересно, чего Аноним (8) так жарко (аж 14 раз в теме) возмущается, если он все равно в системном программинге "ни ухом, ни ..."
утечка в памяти не нарушают безопасности, так что да, они безопасны
А когда растаманы ошибаются в FF при проверке индекса в массиве и обращаются чёрт знает куда - это тоже безопасно?!
Нет, вот это не безопасно. И как раз в этот момент было бы очень уместно сравнить частоту таких косяков в зависимости от языка, на котором написан код.
> очень уместно сравнить частотуРаст на 26-ом месте... Поэтому частота появления программ на нём - околонулевая.
Тогда и говорить не о чем. Непонятно зачем вообще тебе не лень разговаривать о расте.
Я гналась за вами 3 дня чтобы сказать как вы мне безразличны.
> Я гналась за вами 3 дня чтобы сказать как вы мне безразличны.Хах, лол, да, очень похоже. Весь опеннет гонится за растом, чтобы сказать, что он на 26 месте.
P.S. По сути используемая программа на расте сейчас всего одна: FF. И та падает от простого шевеления окна мышкой.
У меня не падает. Но все равно интересно, по вашей логике, сколько их всего этих используемых программ? 10-20 штук? Высоко метите если хотите там раст видеть уже сегодня.Судя по сегодняшним тенденциям в будущих топ-100 программах будет либо питон, либо браузер обмазанный JS-ом. Скорее второе.
Язык не запрещает выстрелить себе в ногу, да это про unsafe.
Не понятно при чём здесь проект на языке и он сам, "текущих" проектов на C миллионы.
Это лишь означает что на С отстрелить ногу проще и не умаляет сам язык.
Отстрелить ногу подумав значительно сложнее чем сделать это не имея этой возможности...
На моей практиимке с type safety языками память обычно течёт не из-за нарушений гарантий mem safety, а тупо из-за того, что приложение коллекционирует около бесконечное количество данных. Да men safety обычно не подразумевает проверку приложения на то, будет ли оно бесконечно создавать объекты (и запоминать в какой-нибудь списочек)
Опечатался:
s/практиимке с type safety/практике с mem safety/
s/men/men/
> "Уязвимость" не столько страшная, сколько смешная. Особенно после криков фанатиков
> о безопасности. Не будь столько дешевого пиара вокруг языка, то многие обсеры не
> воспринимались бы так жестоко.В точку.
Ну так может там где эти крики были и стоит дать ссылку на эту новость? А не вещать глупости сюда (подразумевающий, что якобы rust когда-то позиционировал себя как secure язык)
> Ну так может там где эти крики были и стоит дать ссылку
> на эту новость? А не вещать глупости сюда (подразумевающий, что якобы
> rust когда-то позиционировал себя как secure язык)Часть фанатов уже дали заднюю.
Ну я выше попросил список проблем которые решает раст https://www.opennet.dev/openforum/vsluhforumID3/126501.html#209. Присылайте, а то в следующий раз опять будет "решает целый пласт проблем", "ой а этот пласт не решает". Пока вот никто не прислал.
>>> Особенно после криков фанатиков о безопасности.
>> Ну так может там где эти крики были и стоит дать ссылку
> Часть фанатов уже дали заднюю.
> Ну я выше попросил список проблем которые решает растЗанятный спрыг с темы и перевод стрелок, однако!
> Проследить за устранением уязвимости в дистрибутивах можно на данных страницах: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch, FreeBSD.
> Всем пользователям программ на языке Rust, ...какой панч :-D
Я так однажды с Линукса через Наутилус удалил символьные папки винды, и оно реально удалило часть виндыЭто скорее проблема ос, которую приходится костылить в каждой отдельной реализации вместо адекватного исправления со стороны ос
Безопасность Раста тут ни при чем, поскольку у него конкретные гарантии безопасности с памятью, а связанные с этим ошибки - всё ещё жёсткие баги, а не часть стандарта
> Это скорее проблема ос, которую приходится костылить в каждой отдельной реализации вместо адекватного исправления со стороны осЭмм... И как это возможно сделать?
Тут ведь сочетание двух граблей. Во-первых, это то, что симлинки нарушают древовидность структуры фс, а значит что простые способы рассуждения об фс уже не работают (точнее не всегда работают, а значит полагаться на них нельзя). Во-вторых, это принципиальная уязвимость API ядра к race-condition. Первый костыль неустраним в unix. Второй же... не, можно было бы запилить что-нибудь в стиле баз данных -- begin_transaction/end_transaction, -- но это потребует ухода от POSIX и добавления новых методов лочить объекты файловой системы: flock не сработает, потому что его локи опциональны. Точнее, как написано в man'е, они "advisory" локи.
> Я так однажды с Линукса через Наутилус удалил символьные папки винды, и оно реально удалило часть виндыПроблема, конечно же, не в твоих кривых руках, а сразу в ОС.
> Проблема, конечно же, не в твоих кривых руках, а сразу в ОСОС не должна позволять просто так вредить. Софт, который стремится в дефолт фм, тем более.
Не язык, а рванина какая то
не рванина, а эмбрион.
его пытаются устроить системщиком.
напоминает чем-то поляковых.будем посмотреть, увидим чёнить или нет.
Если б же ты ещё читать умел. Проблема не в языке. Но ты читать не умеешь.
>Проблема не в языке.Такое можно сказать про Си или С++. Но тут стдлибу пишут те же люди что и язык, плюс компилятор и эта самая стдлиба в единственных экземплярах.
Де-юре может и не проблема языка, но де-факто так и есть.
>>Проблема не в языке.
> Такое можно сказать про Си или С++. Но тут стдлибу пишут те
> же люди что и язык, плюс компилятор и эта самая стдлибаТакое называется простым словом "демагогия".
Предложите _реалистичное_ "повседневное" (формальная сецификация уже есть, но мало кто хочет за нее платить) решение проблемы гонок при обращения к _внешним_ АПИ в языке.
Решение сишной и частично плюсовой проблемы с нулевыми указателями, двойным освобождением памяти и "внутренними" гонками - в ржавчине как раз есть.
Так это все потому что Раст написан не на расте XD
Вообще-то на Расте. Но проблема не в языке в данном случае.
Проблема в раст-программистах, всегда проблема была в раст-программистах.
Вот только гонку приобходе дерева допускали и допускают и на Си, и на других языках. Это просто всеобщая проблема (которая касается и Rust-а в том числе)
Ну что сынку, помог тебе твой Раст?
Ой как помог
Почитал комменты, стало интересно: какой код пишут авторы комментов, когда они не заняты написанием комментов?
Они не пишут. Они играют в Rust и форум попутали
Ну вот опять!!!! А вот если бы написали на rust…. Самый нормальный безопасный язык от богов для богов программирования
Всем привет, недавно на опеннете, но заметил, что новости про Rust всегда наполнены желчью его противников. Можно ли краткий список аргументов почему «раст - плохо»?
Или это жёлчь сторонников? Что понять вполне можно, даже бейсик занимает более высокие позиции. А разве "плохо"? Люди, хреново переписывающие примитивные программы на раст под предлогом серебряной пули это плохо, очень плохо. А в языке нет ничего плохого.
Потому что ни один другой язык не отличается таким навязчивым маркетингом и агрессивными евангелистами при вполне себе средних качествах самого языка. Подается как панацея и лезет в каждую дырку, негативная реакция на это закономерна.
Уточню: язык "подается как панацея" только в смысле безопасной работы с памятью без сборки мусора и в смысле потокобезопасности.
> только в смысле безопасной работы с памятью без сборки мусора и в смысле потокобезопасностиnjet
Как человек который работает с Rust каждый день
- Самая большая причина моей отвращения это постоянное усложнение синтаксиса уже достаточно сложного языка
- Токсичность сообщества, срам разводят не только с другими сообществами, но и внутри своего, все как бешеные собаки
- Отсутствие общего плана, все кому не лень добавляют что попало в компилятор и в std. Полная помойка говнокода. но при всем этом пытаются внедрить язык везде и всюду.
Как человек, который пишет на Rust каждый день уже 5 лет (4 года в прод):
- Самая большая причина моего восхищения это постоянное улучшение синтаксиса в сторону упрощения работы с по-настоящему сложными концепциями языка, с полным сохранением обратной совместимости
- Приветливость и дружелюбность сообщества: все люди увлеченные, и профессионалы высокого класса, и новички - корректны и вежливы, всегда готовы прийти на помощь
- Четкое планирование выпусков и открытый процесс развития языка через RFC.
таким количеством жира можно убить небольшой городок.
> Приветливость и дружелюбность сообществаиз-за приветливости сообщества пришлось создавать команду вахтёров, которая разбилась о "приветливость" сообщества и самоуничтожилась
"Вахтеры" не справились с Core Team, а это не сообщество.
Да уж, с вашей "дружелюбностью" здесь уже познакомился каждый.
> - Отсутствие общего планаС точки зрения дистрибутива особенно удручает типовое детсадовское (или хипстерское, если угодно) отношение "что было вчера -- то окаменело, закопать".
Люди с таким в голове не понимают ничего ни в реальной жизни, ни в программах, которые в ней применяются _и_ сопровождаются, увы.
У некоторых проектов такое со временем проходит. Но сдаётся мне, у очередного тамошнего дитяти эпохи массового психоза и обострения подхода "имидж -- всё" шансов на это немного. :(
Я бы закопал тех, кто компы за 20 по рыночной цене продает за 40.
То есть Эппол?
>- Самая большая причина моей отвращения это постоянное усложнение синтаксиса уже достаточно сложного языкаЧто-то кроме ассоциированных типов ни что на ум (по крайней мере за последние годы раста) не приходит.
>- Отсутствие общего плана, все кому не лень добавляют что попало в компилятор и в std. Полная помойка говнокода.
Можно пример чего-попало в стдлибе и/или в компиляторе (не nightly естественно)?
Мне вот интересно, каждого адепта Rust заставляют пройти специальный курс хамства как обязательную часть изучения языка? Иначе их токсичность и неспособность в полемику сложно объяснить.
Это трешхолдер на уровне языка. Нормальный человек таким синтаксисом пользоваться не будет. Остаются только те кто не уважают сами себя. А так как они не уважают себя они не уважают и окружающих. Так они и находят друг друга.
В полемику, а зачастую и в понимание того, о чем, собственно новость не умеют как раз растохейтеры. Можешь почитать комменты выше и убедиться.
Прочитал. Убедился. В ответ на любую самую незначительную критику языка в ответ переход на личности или уход от темы. Язык может и неплох, но сообщество такое себе.
Жалкая и бессмысленная попытка перевернуть все с ног на голову.
А вот сразу и наглядная демонстрация.
>> (ниже) школота
>> (выше) Хы, растофанатик пришел рассказывать нам, что "белые люди тоже едят других людей, просто хорошо это скрывают".
> А вот сразу и наглядная демонстрация.Да, очень наглядная.
Чувачек пять лет учился хамить в сообществе программистов, кто-бы на чем не писал.
> Мне вот интересно, каждого адепта Rust заставляют пройти специальный курс хамства как
> обязательную часть изучения языка? Иначе их токсичность и неспособность в полемику
> сложно объяснить.Я объясню, что на самом деле происходит: местные хейтеры Раста были очень высокого мнения о себе и считали людей, использующих Rust, полными дураками. Но в полемике выяснилось, что они совсем не дураки, а соображают даже получше растохейтеров. Это обидно, это - удар по их самолюбию. Не имея аргументов против технологии, хейтры переключаются на хейт личностей. Не имея весомых аргументов и против личностей, они начинают откровенно лгать, выдумывать какое-то хамство, какую-то токсичность и прочее, что совершенно не способны подтвердить ссылками, когда их об этом просят.
Растохейтеры - это люди с реально ущемленным самолюбием. Этим объясняется их поведение, когда они всеми средствами воюют в комментариях всерьез или в шутку (троллинг, обращение в шутку, только скрывает истинные мотивы, о которых человек не хочет признаться даже себе самому).
Какое забавное "это не я толстая, это просто все вокруг мне завидуют".
> Какое забавное "это не я толстая, это просто все вокруг мне завидуют".Да, довольно знакомые выверты. Намедни читал cont.ws/@fruct/2186601 и размышлял над тем, что же в голове должно быть для такого-то...
Дорогой наш freecoder, попробуйте всё-таки научиться разговаривать спокойными аргументами. Это нам, старпёрам заскорузлым изрядно из прошлого аж века, уже положено выражаться обобщениями более высокого порядка при необходимости (отчасти по множеству виденного, отчасти по "старый что малый"). А Вам полезно эти "уравнения" попреобразовывать именно пошагово пока.
Здесь точно бывают грамотные люди, которые понимают и в Rust, и в C, и в сисколлах -- и которых особенно интересно читать _по существу_ (потому что раньше или позже наступает возраст, когда даже развивающийся решительно во всех доступных направлениях молодой организм понимает, что уже времени в сутках недостаёт и приходится определяться, т.к. ставить себе предел -- соответственно дальше в чём-то понимаешь, за чем-то краем глаза следишь, а в остальном, скорее всего, ни бум-бум).
Но интересны они в том числе отсутствием детсадовской реакции на детсадовские же (или наивные) подковырки.
Мир Вам :-)
>спокойными аргументамиYour proofs are not proofs - это спокойные аргументы или ещё нет?
> хейтеры Раста были очень высокого мнения о себе и считали людей, использующих Rust, полными дураками.
> в полемике выяснилось, что они совсем не дураки, а соображают даже получше растохейтеров.Вау, это какой-то новый уровень проекции, с которым мы еще не встречались.
TOCTOU как он есть. Классика для любой системы и языка.
> TOCTOU как он есть. Классика для любой системы и языка.Да.
Вот только те кто писали код даже понятия зеленого об этом не имели.
Где-то года 2 назад видел какую-то статистику по использованию rust (в общем, давно и неправда):Пишут на rust 50% на MacOS, 40% - Linux, 10% - Windows. Программы собираются (и исполняются) для target'а Linux.
То есть, в основном маководы пишут для Линукса.
Корреляции, корреляции. Фронтендеры с претензией на дизайн выбирают мак, вафели - тоже.
В этой статистике не было графы ориентации? Было бы интересно посмотреть.
хочешь себе пасивного растопейсателя для унижений ? похвально !
Не проецируй свои желания на других. Впрочем, в сообществе растаманов ты будешь своим.
к сожалению язык то г..но на самом деле не смотря на комунити
под Винду вообще нет смысла писать на чём-то кроме C# и C++. Типовые приложения на C# можно на коленке за день написать (и они будут вполне надёжные), никто с Rust возиться ради усложнения жизни себе. В общем единственная ниша, которую реально может занимать Rust - это сокеты. Для них формально подходит почти любой быстрый язык с хорошей асинхронностью и Rust в их числе. Если бы Растоманы заняли (и конкурировали) в этих рамках, им бы никто и слова не сказал. Но вместо этого всё лезут и лезут из каждого утюга, при эффективности около 0.
> единственная ниша, которую реально может занимать Rust - это сокетыКонкуренция с Go? Фейл гарантирован.
Просматриваю патч.
Это прекрасно...+ #[cfg(not(any(
+ target_os = "solaris",
+ target_os = "illumos",
+ target_os = "fuchsia",
+ target_os = "redox"
+ )))]
+ fn name_cstr(&self) -> &CStr {
+ unsafe { CStr::from_ptr(self.entry.d_name.as_ptr()) }
+ }
+ #[cfg(any(
+ target_os = "solaris",
+ target_os = "illumos",
+ target_os = "fuchsia",
+ target_os = "redox"
+ ))]
+ fn name_cstr(&self) -> &CStr {
+ &self.name
+ }Какой красивый, лаконичный язык. И, главное, какой безопасТный!
И какая точная локализация ошибки!
Хватит ныть! Возьми и сделай лучше.
Тебе бесплатно решили 80% ошибок, а ты неблагодарная т-рь
> 80Согласен, красивое магическое число с тремя дырками.
> 80Смайлик офигевающего от раста с волосами дыбом
Когда код похож на мешанину лапши, логические ошибки в нем совершить гораздо легче. Т.о. раст снижает общее качество кода
Любой компилируемый, статически типизированный язык без сборщика мусора (т.е. язык, производящий быстрый код под целевую платформу) высокого уровня будет выглядеть именно так.В расте нет ни единой необъяснимой с точки зрения необходимости конструкции (кроме turbofish который действительно оставлен таким для программистов переходящих с С++. В теории он мог быть на один символ короче).
Вот тут хорошо написано: https://habr.com/ru/post/532660/
> Любой компилируемый, статически типизированный язык без сборщика мусора (т.е. язык, производящий быстрый код под целевую платформу) высокого уровня будет выглядеть именно так.Тогда тем более непонятно, зачем нужен новый язык со старыми проблемами. Впрочем, утверждение настолько общее и беспруфное, что оно очевидно неверное.
>Тогда тем более непонятно, зачем нужен новый язык со старыми проблемами.Потому что он решает некоторые проблемы компилируемых языков, производящих код без накладных расходов рантайма.
>Впрочем, утверждение настолько общее и беспруфное, что оно очевидно неверное.
Можно зайти от обратного чтобы получить пруф -- Поскольку нет еще компилируемого языка высокого уровня (с абстракциями подобными трейтам или интерфесам, дженериками), производящего код без накладных расходов рантайма, и при этом удобочитаемым синтаксисом.
Это не пруф, а логическая ошибка. Отсутствие чего-либо в выборке не гарантирует невозможность его существования.
Зачем тут две парных скобки? Ok(())
Я всё наврал () - это пустой кортеж.
Это всё неправда!!1! Rust - это эволюция! rust - это революция!!
Вы Раст со Шреком перепутали.
Не нравится язык - сделайте лучше!
С++ уже давно сделали.
Когда дойдет счетчик квизов раста https://dtolnay.github.io/rust-quiz/ до С++ https://cppquiz.org/ тогда и поговорим.Олсо если хочешь реально наср*ть на Rust, то добавлять квизы в него куда профитнее чем просто ср*ть в комменты.
Уже сделали, называется Zig. На его дизайн повлиял Раст, синтаксис отдаленно похож, но более читаемый. https://ziglang.org/
Если безопасность не так важна, то он пожалуй, действительно модернизированный Си https://www.scattered-thoughts.net/writing/how-safe-is-zig/С другой стороны, если ты однорук и одноглаз то можно в таком же стиле и на Rust писать. Ни кто тебя не заставляет использовать языковые конструкции которые ты не понимаешь. Рельно будет то же самое что и в Zig.
Жаль что такой красоты у тебя не выйдет без растовых плюшек https://github.com/rustomax/rust-iterators потому что если ты решишь написать итератор для своего типа, то придется реализовать трейт.
Если ты инвалид по уму и по здоровью, то тебе и Раст не поможет писать нормальное ПО, как и ни один другой язык программирования. Про красоту Раста спасибо, посмеялся.
> без растовых плюшек https://github.com/rustomax/rust-iteratorsбиблиотека с итераторами, это прорыв. рукалицо
>> без растовых плюшек https://github.com/rustomax/rust-iterators
>> rust-iterators
>> Demonstrates basic Rust iterator use.
>> The goal of this tutorial is to provide a handy reference to some of the common iterator patterns. It is not meant to be a replacement for the Iterator API reference or an overview of the core iterator concepts described in The Book. In fact, this tutorial relies on both resources.
> библиотека с итераторами, это прорыв. рукалицоОчередной опеннетный ыксперт, с ценнейшим мнением. Это прорыв! Рукалицо.
поклонники творчества аля руст за 21 день ? как же важно ваше мнение в сравнении технологических и архитектурных решений . рукалицо
> поклонники творчества аля руст за 21 день ? как же важно ваше
> мнение в сравнении технологических и архитектурных решений . рукалицоКакой неловкий спрыг с темы и нулевая аргументация. лицодлань.жпг
дырявый язык для дырявого комьюнити
А я говорил, что для большей безопасности Rust надо было скрестить с Python? В основе Python, потом намазать Rust. Идеальный был бы язык для системного машин лёнинга!
Что получится, если скрестить ежа с ужом?
Получится Pythorust.
2 метра колючей проволоки.
2 метра ржавой колючей проволоки, уточню
— Дедушка, дедушка, расскажи мне про айти!
— Однажды, внучек, окружили меня рубисты и говорят: «Выбирай, в дружную команду либо на бэкенд, либо на фронтенд!»…
— И что ты выбрал, дедушка?
— Фуллстек я, внучек, фуллстек…s/рубисты/растоманы/
а при чём тут "рубисты"? это про что? местный мем?
> а при чём тут "рубисты"? это про что? местный мем?Так это ж растаман с наглядной демонстрацией тезиса
"терпимость рас(т)истов к другим языкам прямо зашкаливает."
ето недомем с любимого.ит, который сюда регулярно таскает местное рачилово
можно подумать у тебя не стоит когда читаешь про рубистов
вьюнош, в моем возрасте вы тож приучитесь не тратить свой бонер попусту на чтение всяких хабров с опеннетами.
ага, оно и видно. т.е преподнимается значит раз краснееш
Растоманы не умеют в шутки. Много раз доказано.
все над чем человечество ржало воплощено в синтаксисе руста
Сапожник без сапог?
Никогда такого не было и вот опять. Самый безопасный язык! Но не сегодня... Сейчас начнётся "это другое!", "с кем не бывает?".
Как язык, основной фичей которого деклариуется перенос RAII семантики в compile-time, защитит от логических ошибок в голове разработчика? Пишешь с таким сарказмом, будто заодно считаешь ремни и подушки в авто придумкой бездельников - "а говорили безопасный автомобиль, а чё ж аварии тогда"
> Как язык, основной фичей которого деклариуется перенос RAII семантики в compile-time, защитит
> от логических ошибок в голове разработчика?Ты бы еще про формальную верификацию местным "ыкспертам" задвинул. Они и терминов-то таких не знают - вон, все в кучу свалили.
> Никогда такого не было и вот опять. Самый безопасный язык! Но не сегодня... Сейчас начнётся "это другое!", "с кем не бывает?".Одно и то же оно только у ... впрочем не боись, не начнется - зачем тратить зря время, да еще и "портить" такой прекрасный "маркер" ламеров и недоучек от Ой-Ти? *g*
>> Никогда такого не было и вот опять. Самый безопасный язык! Но не сегодня... Сейчас начнётся "это другое!", "с кем не бывает?".
> Одно и то же оно только у ... впрочем не боись, не
> начнется - зачем тратить зря время, да еще и "портить" такой
> прекрасный "маркер" ламеров и недоучек от Ой-Ти? *g*до 2006 года ВСЕ были недоучками от Ой-Ти и только Rust принёс просвещение в наш мир!
Сколько лет будут существовать символические ссылки, столько и будет этих подобных багов.
при чем тут символические ссылки?
казалось бы, причём здесь iOS)))
Ведь это же Раст!!! Самый безопасный язык в мире!
А тут???? Что тут я спрашиваю?
Как сказали растаманы, это безопасная уязвимость.
Так и не нашел.Для старых версий компилятора патч для этого выпустят? Или только для самого последнего?
Нет. Не выпустят.Все прогаммы должны поддерживаться постоянно.
И переписываться на последнюю версию компилятора.
>> Аноним (559) Для старых версий компилятора патч для этого выпустят? Или только для самого последнего?
> Аноним (559) Нет. Не выпустят.Тихо, сам с собою, аноним ведет беседу ...
Погуглил. Нашел ответ.На всякий случай написал. Вдруг кто заинтересуется.
>> И переписываться на последнюю версию компилятора.
> Погуглил. Нашел ответ.
> На всякий случай написал. Вдруг кто заинтересуется.Хреново гуглил. Попробуй погуглить "editions".
Не пиши вредные советы!
> Хреново гуглил. Попробуй погуглить "editions".И? Мне не нужно будет устанавливать новый компилятор?
>> Хреново гуглил. Попробуй погуглить "editions".
> И? Мне не нужно будет устанавливать новый компилятор?Нет, только исправленную версию библиотеки. И не съезжай так неуклюже с темы "переписываться на последнюю версию компилятора."
> Нет, только исправленную версию библиотеки. И не съезжай так неуклюже с темы "переписываться на последнюю версию компилятора."А ABI у компилятора ни разу не менялся, учитывая что они сразу оговаривали, что не будут следить за его совместимостью?
И если ты не заметил, то наибольшее количество несовместимостей между выпусками - это система сборки.
Если будешь вынужден устанавливать последнюю версию компилятора, то будешь вынужден переписывать сборку проекта.
То есть: "переписывать на последнюю версию компилятора".
Ты не способен видеть один шаг логики?
>> Нет, только исправленную версию библиотеки. И не съезжай так неуклюже с темы "переписываться на последнюю версию компилятора."
> А ABI у компилятора ни разу не менялся, учитывая что они сразуУзнай уже, что такое ABI, а что такое эдишены и не пори больше чушь - ей больно!
> И если ты не заметил, то наибольшее количество несовместимостей между выпусками -
> это система сборки.
> Если будешь вынужден устанавливать последнюю версию компилятора, то будешь вынужден переписывать
> сборку проекта.
> То есть: "переписывать на последнюю версию компилятора".
> Ты не способен видеть один шаг логики?То есть, вместо того, что бы прочитать наконец за эдишэны, анонимы продолжают фантазерство на тему "как оно там наверняка все на самомо деле"?
> Узнай уже, что такое ABI, а что такое эдишены и не пори больше чушь - ей больно!Ну так расскажи.
Поможет мне новый компилятор со старым edition'ом, если система сборки в новом компиляторе поменялась?
> о есть, вместо того, что бы прочитать наконец за эдишэны, анонимы продолжают фантазерство на тему "как оно там наверняка все на самомо деле"?
Ну, расскажи как новые компиляторы не ломают систему сборки.