LINUX.ORG.RU
решено ФорумTalks

UNSAFE - расходитесь тут не на что смотреть

 ,


0

3

более 24 тысяч (19.11%) используют ключевое слово «unsafe»

А ведь говорили, что раст закопали, однако врали?

для включения возможностей, допускающих небезопасную работу с памятью в отдельных блоках кода, таких как разыменование указателей, вызов внешних функций или изменение статических переменных. 34.35% пакетов совершают прямые вызовы функций из других crate-пакетов, в которых используется «unsafe».

Отмечается, что в большинстве случаев использование «unsafe» обусловлено вызовом кода, написанного на других языках или обращения к библиотекам на С/C++. Пакетом с наибольшим числом вызовов в контексте «unsafe» признан развиваемый компанией Microsoft crate-пакет windows, являющийся обвязкой над API платформы Windows. Данный пакет насчитывает 36 млн. загрузок.

Источник: опенет.

★★★★★

То есть, если перефразировать:

Более 80% пакетов на Rust обходятся вообще без unsafe.

CrX ★★★★★
()
Ответ на: комментарий от Irma

Расскажи еще, из чего делают колбасу

Это ты намекаешь, что солидный господин тебя крысятиной кормит?!

Ygor ★★★★★
() автор топика
Ответ на: комментарий от CrX

Более 80% пакетов на Rust обходятся вообще без unsafe.

Библиотек нет? Приходится дёргать С/С++ либы?

Ygor ★★★★★
() автор топика

unsafe наверняка появляется там, где нужно крепиться к системным API, safe которых ты гарантировать не можешь

EXL ★★★★★
()

Главное чтоб его обдуманно использовали а не потому, что чтоб его не использовать надо было попу рвать. Как в C++ когда всё unsafe по определению, а чтоб хоть какой-то соломки подстелить сколько указателей попридумывали и вроде даже успели какой-то из них убрать в более-менее свежем стандарте, не слежу особо с 11 стандарта за ними. 17 последний в который заглядывал вроде там unique удаляли.

peregrine ★★★★★
()
Ответ на: комментарий от Ygor

Ну вот, как в твоём же тексте говорится — да, приходится, в большинстве из этих 19% пакетов. То есть, где-то в примерно в каждом десятом или чаще.

CrX ★★★★★
()
Ответ на: комментарий от peregrine

так то stl всего лишь библиотека шаблонов, самые важные изменения же в самом языке

mittorn ★★★★★
()
Ответ на: комментарий от CrX

тут важно, в каких пакетах используется этот unsafe и используются ли эти пакеты в других пакетах, как библиотека. И 20% могут превратиться в 50-70-90%, если другие используют пакеты из этих 20%

linuxoidspb
()
Ответ на: комментарий от wandrien

О чём эта тема?

20% не предохраняются, и распространяют ЗППП среди ржавых

linuxoidspb
()
Последнее исправление: linuxoidspb (всего исправлений: 2)
Ответ на: комментарий от linuxoidspb

Могут. А могут и не. Смотреть надо. Я в основном о том, что в том виде, как оно есть (на опеннете), это всего лишь наброс. Если сказать «почти каждый пятый пакет содержит unsafe», публика сразу воспринимает, будто это очень много, и там unsafe на unsafe погоняет, а если сказать «более 80% пакетов обходятся без unsafe», то реакция противоположная, хотя информация предоставлена одна и та же совершенно. И в этой информации не хватает важных подробностей, как вы совершенно верно заметили.

CrX ★★★★★
()

Если честно, я не очень понимаю всю эту мастурбацию на наличие/отсутствие unsafe. Известные баги, приводящие к unsoundness, прекрасно есть и в safe версии.

cumvillain
()
Последнее исправление: cumvillain (всего исправлений: 1)
Ответ на: комментарий от cumvillain

Если честно, я не очень понимаю всю эту мастурбацию на наличие/отсутствие unsafe.

Весь язык придуман ради того, чтобы львиная доля кода была safe. Это краеугольный камень раста, без которого всё остальное теряет смысл.

PS Насчет мастурбации не спорю, но других-то вариантов вроде бы и нет.

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 2)

19.11% разработчиков - откровенно слабы. По ощущениям, в реальности их около 70%. Так что не все так плохо.

Obezyan
()
Ответ на: комментарий от Manhunt

Ну все так, но каждый раз когда я вижу прыгающих на голове растурбаторов, истерящих про unsafe, мне хочется их обоссать.

cumvillain
()
Последнее исправление: cumvillain (всего исправлений: 1)
Ответ на: комментарий от wandrien

Попытка толстого троллинга растоманов. Такая себе, на троечку с минусом.

WatchCat ★★★★★
()
Ответ на: комментарий от CrX

Более 80% пакетов на Rust обходятся вообще без unsafe.

Ну всё верно. По закону Парето 20% пакетов делают реальную работу и им нужен unsafe. Остальному 80% мусора не нужен.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Более 80% пакетов на Rust обходятся вообще без unsafe.

Ну всё верно. По закону Парето 20% пакетов делают реальную работу и им нужен unsafe. Остальному 80% мусора не нужен.

А нафига тогда вся эта городьба с безопасным языком если есть С++?

Ygor ★★★★★
() автор топика
Ответ на: комментарий от Ygor

Если обработка неконтроллируемых программистом входых данных будет происходить в safe-областях, то львиной доли говна потенциально можно избежать. 90% сишного говна — это дрочево указателей с буферами на некорректных строках.

thunar ★★★★★
()
Ответ на: комментарий от Manhunt

PS Насчет мастурбации не спорю, но других-то вариантов вроде бы и нет.

Вечер внезапных признаний на арене ЛОРа…

frob ★★★★★
()
Ответ на: комментарий от PhD

auto_ptr. peregrine слышал звон, да не знает, где он.

rupert ★★★★★
()

А где тег срыв покровов?

greenman ★★★★★
()

Первая заповедь говнокода - говнокод возможен на любом языке.

К этой новости не хватает смайлика с макакой.

aiqu6Ait ★★★★
()
Ответ на: комментарий от EXL

unsafe наверняка появляется там, где нужно крепиться к системным API, safe которых ты гарантировать не можешь

Поздравляю вас, вы номинированы на премию «скоростной комментатор года».

«Отмечается, что в большинстве случаев использование «unsafe» обусловлено вызовом кода, написанного на других языках или обращения к библиотекам на С/C++.»

atrus ★★★★★
()
Ответ на: комментарий от Ygor

Как показывает практика – код на C++ очень легко и быстро засирается, если разработчики не упарываются в качество как в гугле. Т.е. в 90% компаний, где менеджерам нужны только фичи и побыстрее. Rust засрать немного сложнее, потому что дефолтные настройки/синтаксис языка лучше. А безопасность это просто небольшой бонус.

snizovtsev ★★★★★
()
Последнее исправление: snizovtsev (всего исправлений: 1)
Ответ на: комментарий от EXL

Это ему пофиг, главное набросить. Он даже не написал никакого вывода, просто накидал каких-то процентов.

seiken ★★★★★
()
Ответ на: комментарий от snizovtsev

Адекватные дефолты — это то что почему-то у большинства любителей линакс-way вызывает острую когнитивно-анальную боль. Ведь если что-то изначально сделано так, что не требует доводки и возни, то [...] — и с ЯП то же самое.

thunar ★★★★★
()
Ответ на: комментарий от cumvillain

дело даже не в багах (некоторые из которых известны с релиза rust 1.0 и до сих пор не пофикшены), а в том что этот unsafe в принципе бесполезная фигня.

Во-первых это тупо метки, которые ставятся людьми - причем бездарными и произвольно. Например почему Vec::new не unsafe, ведь это очевидно malloc под капотом, а malloc может вернуть NULL? А очень просто - потому что тогда весь их код с «прекрасной обработкой ошибок» станет еще более нечитаемой хренью, а про исключения они уже наврали, что их там нет (с). А на эту вашу безопасность растоманам по факту глубоко наплевать.

Во-вторых, с чем вообще в принципе может помочь этот unsafe? На вероятность падения программы в том или ином месте он не влияет. А дебажить код методом пристального взгляда будут только растоманы, переписавшие очередной хелловорлд. Хотя даже в этом случае unsafe затрудняет чтение кода, потому что это синтаксический мусор и лишние скоупы.

Lrrr ★★★★★
()
Последнее исправление: Lrrr (всего исправлений: 1)
Ответ на: комментарий от Lrrr

Например почему Vec::new не unsafe, ведь это очевидно malloc под капотом, а malloc может вернуть NULL?

Ну и? Вернет Option<T>. Там для этого try_ варианты существуют. new() просто запаникует. unsafe вообще не про это.

cumvillain
()
Последнее исправление: cumvillain (всего исправлений: 3)
Ответ на: комментарий от cumvillain

Ну и? ВернетOption<T>. Там для этого try_ варианты существуют. new() просто запаникует. unsafe вообще не про это.

А если я лох пишу без try у меня null уедет дальше по стёку?

Ygor ★★★★★
() автор топика
Ответ на: комментарий от Lrrr

А очень просто - потому что тогда весь их код с «прекрасной обработкой ошибок» станет еще более нечитаемой хренью, а про исключения они уже наврали, что их там нет (с). А на эту вашу безопасность растоманам по факту глубоко наплевать.

Vec::new() с NULL это буквально эквивалент сишного

foo = malloc(sizeof(*foo));
if (!foo)
    errx(1, "out of memory");

или же

foo = xmalloc(sizeof(*foo));

Весь код openssh такой, если чо.

cumvillain
()
Последнее исправление: cumvillain (всего исправлений: 1)

Тоже не понял претензию к Vec::new.

wandrien ★★
()
Ответ на: комментарий от Irma

Расскажи еще, из чего делают колбасу

Оооооо, помню. В былые годы приходилось в командировках ночевать с соседями, почему-то большинство соседей с утра, вместо того, чтобы позавтракать в тишине или хотя бы бодрую музычку послушать, норовило засрать мозги телевизором. Там была передача с названием, кажется, «Доброе утро», где всякий раз сообщали, из чего на самом деле делают колбасу, и кто опять отжал у доверчивых граждан квартиру. Заряд дурнопахнущей субстанции в голове был обеспечен на весь день.

Говорят, что передача существует до сих пор, но содержание подобрело. Сам не в курсе, по счастью, почти всегда теперь живу в одноместных номерах, а если иногда и приходится в двуместных, то соседи обычно молодые, вместо телевизора у каждого свой телефон, и друг другу мы не мешаем. :)

hobbit ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)