LINUX.ORG.RU

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

 , ,


4

9

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

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

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

>>> Статья



Проверено: Shaman007 ()

что решит некоторые проблемы с безопасностью

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

awesomebuntu ()

Видимо этот чувак не знает о PVS Studio. Нужно будет ему рассказать, сразу на сишечке кодить будет.

p.s. Идиот. Даёшь Basic!

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

Неплохое начинание. Ждём в продакшене.

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

К черту полумеры, давайте сразу на чистом асме для 8086.

StReLoK ★☆ ()

переписки

С кем переписки-то? Переписывания тогда уж.

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

Нинужно в продакшене на расте!

Лучше бы прикрутил статические анализаторы, ICC, наконец-таки отрефакторил и вообще переписал на C++.

Всякой херней занимаются.

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

Главное, чтобы это не пошло в апстрим. Такие серьезные вещи как ядра, должны писаться на канонических языках, таких как C и Ассемблер.

Rinaldus ★★★★★ ()

Не верю

Пусть продемонстрируют работоспособность концепции на MINIX3. Там всего ~29000 строк кода на C.

Camel ★★★★★ ()

системный вызов на Rust с ассемблерными вставками
с ассемблерными вставками

Это что-бы было ещё безопаснее?

MrClon ★★★★★ ()

Ну а если без шуток то это выглядит интересно

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

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

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

Потому что это невзлетевшее говно уже нафиг не сдалось

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

А в Киеве дядька

Ну и как наличие Redox'а демонстрирует практическую возможность переписывания ядра ОС с C на Rust?

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

Кому-то интересно поддерживать интерес к данному проекту: бумажные книжки до сих пор выходят в печать.

Infra_HDC ★★★★ ()
Ответ на: А в Киеве дядька от Camel

Он демонстрирует возможность написания ОС на Rust. Надо пояснять, что если что-то можно написать, то переписать готовенькое и отлаженное — проще?

mersinvald ★★★ ()

Растоманы хотят, чтобы всё было переписано на расте, но сами этим заниматься не хотят - хотят чтобы за них это сделал кто-то другой, вот и цепляются ко всем подряд. Кстати, как там пионерская Redox OS поживает?

asaw ★★★★★ ()

Я вот чего не понял, в принципе, ведь можно взять любой компилируемый язык и что-то переписать на нём. Да хоть бы и всё ядро гипотетически. Например на FreePascal, в чём тогда новость?

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

Объясните

Надо объяснять. Совершенно не обязательно, что написать drop-in replacement без багов возможно.

Win32API уже много лет открыто. Wine и ReactOS до сих не написаны.

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

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

Поэтому не очень понятны восторги, что в них нового.

anonymous_incognito ★★★★★ ()

Опять ухудшенный пересказ опеннета.

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

что в них нового

Отличие от всяких паскалей и D, в том что у раста есть система владения и заимствования (ownership and borrowing system), которая предотвращает баги при работе с памятью.

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

А ещё есть ключевое слово, что бы всё это благолепие выключить нафиг.

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

anonymous ()

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

Если это хотя бы на 1/1024 правда, то как это может быть приемлимой идеей?

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

Зависит от конкретной реализации и компилятора же.

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

Так что компилятор, что реализация на данный момент одна.

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

Ждем другого. Вообще, на мой взгляд, пока не появится минимум две реализации говорить о русте бесполезно, потому что его реализации не с чем сравнивать.

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

А ещё есть ключевое слово, что бы всё это благолепие выключить нафиг.

Неправда же?

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

На микроконтроллерах с килобайтами работает, чего на больших системах не будет?

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

Раст на микроконтроллерах?!

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

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

На самом деле, надо поменять архитектуру фон-неймана на гарвардскую архитектуру. Сразу многие проблемы отойдут на задний план, например выполнение произвольного кода. IMHO.

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

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

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

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

Раст на микроконтроллерах?!

Не поверишь, но даже на 16 битных с 512 байт sram крутится без проблем.

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

Так память то компилятор выделяет, а не программер. Он пишет «Выдели мне место под массив 10 строк по 500 байт», а компилятор берёт, и выделяет 10Мб например.

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

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

и это называется SOFTware? мне уже не смешно...

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

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

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

И это удивительно. Программеры ведут себя как ленивые админы?

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