LINUX.ORG.RU
ФорумTalks

Google будет донатить на переписывание критически важных проектов на Rust

 , , ,


0

3

Анонс можно найти тут: https://security.googleblog.com/2021/02/mitigating-memory-safety-issues-in-open.html.

Основная причина — некорректное управление памятью. Значит ли это, что сишных дыреней станет меньше, или отточенные годами проекты превратятся в хеллоуворды на невзлетевшем языке? Интересно будет посмотреть.

Значит ли это, что сишных дыреней станет меньше

Да, но не факт, что новые дырени не появятся

отточенные годами проекты превратятся в хеллоуворды

По твоему если проект с сохранением своей функциональности переписывается на другой язык, то он превращается в принципиально другой проект? Разработка немного не так работает.

Aswed ★★★★★
()

значит ли это, что сишных дыреней станет меньше

Если unsafe кодом увлекаться не будут, то должно стать меньше.

отточенные годами проекты превратятся в хеллоуворды

В теории, «отточка» должна быть зафиксирована в юнит-тестах. Которые также будут перенесены со старого языка на новый.

На практике, разумеется, будет куча привнесенных портированием дефектов. Ничего ужасного тут нет: баги в ПО - вещь совершенно обыденная. Со временем их отладят.

на невзлетевшем языке

Если новый язык утонет вместе со всем портированным на него кодом, то старый код ведь от этого никуда не пропадёт? Можно будет и дальше жить «по-старому»

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

проект с сохранением своей функциональности переписывается

А можно пару историй успеха где реально перенесли все что было в том же виде и без кастрации? Причем жду не сколько про растишку, а вообще.

deep-purple ★★★★★
()

За васяно-переписывание будут платить…

Как бы это просто добавило людям головной боли со сборкой из-за пожизненной нестабильности ржавчины.

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

Возьми проект кнопка ОК в окне, функциональность сохранится, а от старого кода со сменой языка не останется ничего. Это так в качестве примера опровергающего теорему.

ilovewindows ★★★★★
()

невзлетевшем языке

Ну и да, это тож оч кеково. Типа раст уже активно используется во внутренней кухне амазона и фейсбука. Да даж если просто на glassdoos или linkedin поискать в европе, то вакансий хватает. Меньше чем на плюсах или джаве, конечно, но хватает. Совсем недавно, когда мозилла отказалась от разработки, меньше чем за месяц в rust foundation впряглись майкрософт, гугл, амазон и хуавей. Вот сейчас гугл начал тулзы переписывать на раст. Но для тебя язык не взлетевшый, потому что твоего любимого плеера на раст не написали.

Aswed ★★★★★
()
Ответ на: комментарий от deep-purple

А можно пару историй успеха где реально перенесли все что было в том же виде

Не знаю на счет открытых проектов, но я наблюдал такое во внутренней кухне яндекса.

без кастрации

Я не знаю, что ты под этим эфемизмом понимаешь в плане ПО

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

Во-первых что за проект «кнопка ОК»? Во-вторых, если функциональность не изменится, то в чем опровержение?

Aswed ★★★★★
()

В ответ сообщество вводит понятие «ржавые дыры».

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

Что будет с платформами, которые не поддерживаются LLVM? Тут целая паника была от того, что в python-cryptography rust завезли как необходимую зависимость.

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

Но да, это пинок не столько в сторону Rust, сколько в сторону LLVM.
Тут только на «Компания Open Source Security спонсирует разработку gccrs» надеяться.

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

Отлично, главное теперь дожить до релиза

rbbtnspc
() автор топика

на невзлетевшем языке

это конечно не так, но я бы посмотрел как они свой AOSP сначала перепишут с плюсов на раст

spbob
()
Ответ на: комментарий от ilovewindows

и барыжить по ночам втихаря сишными кодами :)

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

Везде где нету сильной завязки на основной реп Гугла - раст приветствуется. В основном репе пришли к выводу что пока не получится из-за проблем со своей системой сборки и некоторыми междуязыковыми интерфейсами

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

Везде где нету сильной завязки на основной реп Гугла - раст приветствуется

ну я про это и говорю - «вы там переписывайте а у нас пока система сборки не позволяет»

spbob
()
Ответ на: комментарий от rbbtnspc

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

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

Ну разные и разные. Вам код от приложений нужен или функциональность?

Aswed ★★★★★
()

ИМХО, у низкоуровневого C есть одно неоспоримое преимущество - крайне малый по современным меркам рантайм. Код на C отлично крутится на встраиваемых системах и микроконтроллерах. И эти встраиваемые системы всё ещё недостаточно мощные что-бы так-же эффективно крутить код на всяких java или хотя-бы питонах.

И если микроконтроллерам ничего не угрожает (т.к очень уж специфичные задачи они решают), то всяким роутерам и проектам типа OpenWRT после переезда каких-нибудь busybox’ов на раст - грядёт полная жопа как по мне.

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

всяким роутерам и проектам типа OpenWRT после переезда каких-нибудь busybox’ов на раст - грядёт полная жопа как по мне

С чего бы вдруг? Рантайм у раста не настолько большой, чтобы современный роутер его заметил.

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

современный роутер

Есть ещё актуальные производственные железки и послабее. Я вот, в совсем недавнем прошлом пускал современный openwrt (19.07) на железках с 32 метрами памяти и 4 метрами флеша. Там сложно запустить что-то кроме сишного кода со стандартной библиотекой musl. C++ и libstdc++ - уже крайне проблематично.

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

Есть ещё актуальные производственные железки и послабее.

Когда-то и восьмибитные железки были актуальны. Прогресс неумолим.

Manhunt ★★★★★
()

Rust - если рассматривать его как системный фундамент - язык крайне неоднозначный.

С одной стороны, у Rust нет ни формального синтаксиса, ни тем более формальной семантики, а из-за плясок с лайфтаймами код зачастую читается ещё хуже, чем код на c++.

С другой стороны, Rust худо-бедно предоставляет zero-cost memory safety, что является большим шагом вперед по сравнению с остальными языками.

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

восьмибитные железки были актуальны

Они и сейчас актуальны ещё в виде микроконтроллеров.

Прогресс неумолим.

Ну как-бы да, но как по мне - уж лучше-бы с утечками памяти в сишном коде боролись, чем переписывать всё с нуля. Гуголь мог-бы вложиться в deepcode.ai какой-нибудь. Вот это крутой и современный подход как по мне, а не заставлять разработчиков за подачки выбрасывать в корзину кучу человеко-лет работы в «устаревших» проектах.

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

Ну как-бы да, но как по мне - уж лучше-бы с утечками памяти в сишном коде боролись

Это сизифов труд. Борются десятилетиями, и всё никак не заборют.

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

Сложность борьбы с утечками памяти преувеличена. Всё отлично ловится современным интрументарием вроде валгринда

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

Борются десятилетиями, и всё никак не заборют.

Смотря где и как. Думаю, что в самых основных вещах уже починили всё давным давно, по крайней мере на производстве у меня и знакомых их сишный код крутиться с аптаймами по несколько месяцев, и что-то мониторинг не показывает каких-то утечек.

Да и раст тоже не панацея, пока существуют всякие там unsafe’ы и ffi. Да и вообще говнокодить можно на любом языке. Хоть на расте хоть на яве, хоть на C# - забыл где-нибудь ссылку удалить (в C# - в event’ах, вообще, рукожопы, постоянно забывают отписываться, например), и вот тебе и утечка появится.

Утечки памяти не такая большая проблема на фоне остального говнокода, как по мне. Просто почему-то нынче модно упарываться по всяким там null-safety, утечкам, и.т.д. Недавно вот было модно упарываться по функциональщине, слава богу это прошло.

Так что сизифов труд - это борьба с говнокодом. И это никак не зависит от языка. Тут вот в соседней теме чувак страдает c alacritty написанном на расте, который судя по описанным багам работает хуже старого древнего rxvt.

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

Сложность борьбы с утечками памяти преувеличена. Всё отлично ловится современным интрументарием вроде валгринда

Более половины реальных уязвимостей в ПО связаны с некорректной работой с памятью: выход за границы массива, use-after-free, и далее по списку. Факт использования valgrind этому никак не мешает.

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

Можно будет и дальше жить «по-старому»

А вот тут ты ошибаешся:

  1. Код со временем может потерять совместимость с окружением или просто затеояться со временем, а Гугл в свою очередь постарается,чтобы это произошло побыстрее и пркапитальнее.
  2. Лицензия на Rust как я понимаю пермиссивная, а не копилефт, что в будущем может привести к невыгодному для пользователей и авторов раскладу сил.
torvn77 ★★★★★
()
Ответ на: комментарий от DawnCaster

Ну вообще-то у раста нет обязательного рантайма. Т.е. когда ты компилишь его версию по умолчанию, что там да, есть небольшой рантайм, что бы отслеживать панику процессов и что-то еще. Но его вполне можно собирать и без std и этого рантайма. Эта фича специально поддерживалась с самого начала именно для встраиваемых систем. Правда я не берусь утверждать, что он удобен для разработки в этой области, т.к. никогда под встраиваемые системы не писал

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

Можно будет и дальше жить «по-старому»

А вот тут ты ошибаешся:
Код со временем может потерять совместимость с окружением или просто затеояться со временем, а Гугл в свою очередь постарается,чтобы это произошло побыстрее и пркапитальнее.

Если Rust взлетит, то так и будет. Но вопрос-то был о том, что будет, если Rust так и не взлетит.

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

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

Есть реализации Си также с пермиссивными лицензиями (тот же clang), ну и что с того?

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

Более половины реальных уязвимостей в ПО связаны с некорректной работой с памятью: выход за границы массива, use-after-free, и далее по списку. Факт использования valgrind этому никак не мешает.

всё перечисленное valgrind умеет детектировать

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

всё перечисленное valgrind умеет детектировать

Это совершенно не мешает появляться всё новым уязвимостям, связанным с теми дефектами, которые valgrind умеет детектировать. Не смотря на то, что софт тестируют в том числе и с valgrind.

Так получается из-за того, что ситуации, возникновение которых хакеры провоцируют в процессе атаки, при рутинном тестировании под valgrind не возникают.

В этой части Rust радикально повышает качество ПО.

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.