LINUX.ORG.RU

Продемонстрирована возможность разработки частей Linux на Rust

 , ,


4

9

Французский программист написал статью, в которой рассмотрел возможность переписывания ядра Linux на Rust.

В статье отмечено, что данный язык хорошо подходит для системного программирования, будучи достаточно низкоуровневым и при этом лишённым многих недостатков C, и уже используется для написания новых ОС. Однако автор не считает создание ОС с нуля перспективным для серьёзного применения, и последовательный перенос отдельных частей Linux на Rust для решения различных проблем безопасности кажется ему более целесообразным.

В качестве «Proof of Concept» была приведена реализация системного вызова, содержащая вставки на Assembler внутри unsafe-блоков. Код компилируется в объектный файл, не связанный с библиотеками и интегрируемый в ядро во время сборки. Работа производилась на основе исходного кода Linux 4.8.17.

>>> Статья



Проверено: Shaman007 ()
Последнее исправление: sudopacman (всего исправлений: 5)

Если станет быстрее - то почему бы и нет ?

vblats
()
Ответ на: комментарий от tm4

Если поддержка Эльбрусов и Байкалов на уровне ОС и компиляторов не взлетит, то заводам незачем будет не стоять.

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

Если вы о unsafe, то там тоже некоторые проверки остаются. То есть содержимое блока unsafe не превращается в сишку.

RazrFalcon ★★★★★
()

А некоторые проблемы с безопасностью переписыванием на том же С совсем никак не решаются?

rst
()
Ответ на: комментарий от Infra_HDC

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

anonymous
()

В Rust'е даже нет зависимых типов, чего там уже говорить о различных штуках типа CoC. Как они формальную верификацию сделают нормально тогда? А без формальной верификации и безопасность будет не ахти. В общем, растаманы-с.

anonymous
()
Ответ на: комментарий от RazrFalcon

Мне казалось, что только на асембере программер вынужден рассчитывать адреса в памяти. Во всех языках этим занят компилятор.

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

Может быть. Но я пока ещё не видел C++ кода, где явно указаны адреса в памяти. Как и любого другого кода с явно указаными адресами.

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

А жаль. Верификация весьма рутинная вещь, можно было за одно сделать. Правда чего-то в этом контексте мне нравиться монолитное ядро. От каких, кстати, ошибок с памятью оно защищает? Там же по сути, ничего кроме линейной логики (и линейных, аффинных типов) и нет такого? Как-то случайно, кстати, обнаружил линейные зависимые типы, весьма интересная штука, надо глянуть.

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

Надо идти спать, уже неделю не спал. Ошибки в тся/ться это смешно.

anonymous
()

очередной упырь

потенциальная возможность и реализация это 2 разных вещи. даже если взлетит, то придётся знать десяток языков для разработки ядра. поэтому не взлелит, уже пробовали netbsd + lua

anonymous
()

Лучше бы взялись за переписывание systemd. Там-то как-раз и были уязвимости, которые смог бы предотвратить раст. А за некоторое время полностью бы всё вошло бы в systemd, линукс стал бы не нужным и всё бы было на расте.

anonymous
()
Ответ на: комментарий от awesomebuntu

И проблему линукса вообще окончательно.

в голосину!

anonymous
()
Ответ на: комментарий от Infra_HDC

есть проект Oberon, синтаксис языка программирования которого очень близок к языку Pascal.

ну надо же.., а автор Trubo Pascal - очень похож на автора Oberon..

anonymous
()
Ответ на: комментарий от anonymous_incognito

Например на FreePascal

и да, на Pascal линукс чувствовал бы себя гораздо лучше!

меня всё умиляет численность любителей Си.. жаль только что численность не значит качество.. не все столь самокритичны.

anonymous
()
Ответ на: комментарий от sudopacman

Но это же... Гогно, а не текст. Реально, мой лучше, верните первоначальный вариант, кто-нибудь, а также лишите судопоцмана корректорских прав.

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

Адреса явно не указаны, но количество выделяемых байт указанно явно. Вот, например, си:

int * foo = malloc(100500 * sizeof(int));
значение sizeof(int) известно во время компиляции.

anonymous
()
Ответ на: комментарий от sudopacman

Ну, честно говоря, в твоих правках я насчитал 2 пунктуационные ошибки, а в оригинальном тексте - 1. Стилистически оба текста - говно. То есть особо ничего не поменялось.

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

Очень пагубные идеи. Поддержка двух даже совместимых компиляторов — жуткая боль. Ядро Linux до сих пор clang собрать не могут толком

mersinvald ★★★★★
()

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

foror ★★★★★
()

Французские хипстеры в деле. Вот и до ядра добрались.

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

Да, но объектники он генерировать может, а C ABI един. То есть скомпилировать растокод в объектник и слинковать с остальным сишным монолитом с помощью gcc — проблем нет.

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

Да и Rust это не Си, написание наколенных компиляторов к которому уже стало спортом, и не лисп. Язык очень сложный в реализации, распылять силы не особо имеет смысл.

Появления ICC и прочих заточенных компиляторов не произойдет потому что, как сказал upcFrost, компилятор Rust испльзует llvm как бэкенд кодогенерации, а сам применяет только специфичные для языка оптимизации.
Достаточно будет добавить нужный llvm target.

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

Тебе сказали учиться, а не шланговать. Безграмотная маня, употребляющая «переписку» вместо «переписывания» и совсем не умеющая в стилистику, не имеет права называть чей-то текст говном. Хотя эту толстоту и критикой-то не назовёшь, потому что ты даже не удосужился написать, чем же именно твоя урезанная копипаста опеннета с заменёнными на синонимичные словосочитаниями и оборотами и переставленными параграфами лучше.

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

словосочитаниями

пропущенные запятые

Эка тебя знатно порвало!

anonymous
()
Ответ на: комментарий от Alsvartr

в твоих правках я насчитал 2 пунктуационные ошибки

Где же?

Стилистически оба текста - говно

Ну и как же будет выглядеть вариант с правильной стилистикой?

sudopacman ★★★★★
()

Интересно, как далеко и какими словами их пошлют в LKML

Harald ★★★★★
()

Для начала растовцам нужно научиться уважать существующие стандарты. Особенно двоичные.

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

Интересное заявление. Чем раст не уважает двоичные стандарты?
Экспортировать в C ABI умеет, деманглить умеет, даже FFI с магнлингом C++ есть.

mersinvald ★★★★★
()

I do not write code for a living. Nor do I study computer science in university.

Вот и весь секрет. Парень просто внезапно узнал, что не только из кода на Си можно получить объектный файл.

mbait
()
Ответ на: комментарий от mersinvald

Разве расто-хайп не закончился? Так никто ничего на нём и не написал, а Mozilla сдувается потихоньку. Думаю, в течении 2-3 лет они запустят процесс ликвидации. Возможно, оставят Foundation.

mbait
()
Ответ на: комментарий от kirill_rrr

практика показала, что проще сделать новый процессор под старый код чем написать нормальный код под новый процессор.

Кстати, на (достаточно) высокоуровневых языках код переписывать не придется, только сам компилятор/интерпретатор. Другие времена на дворе.

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

Судя потому что всё еще появляются вбросы — не кончился.
Но вообще похоже, что утихает. Кто оценил язык — уже его используют, даже те, кто на ЛОРе поначалу вел агрессивную полемику против раста, по меньшей мере, оценили его вклад в развитие других языков, а кто всё еще кидается говном в духе «С вечен, ненужно» — тех уже все равно не переубедить.

Хайп сделал свое дело, появляются вакансии, раст проходит в продакшн. Теперь дело за индустрией: либо взлетит, пусть и не так быстро как пропиаренный гуглом Go, либо потонет как D.

Поглядим, я для себя выбор уже сделал и еще ни разу не пожалел.

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