LINUX.ORG.RU

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

 , ,


4

9

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

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

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

>>> Статья



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

Ответ на: комментарий от lefsha

Да, позволяет. И FFI с си и использовать asm. В том числе для этого и нужен небезопасный режим: в слинкованной сишной библиотеке гарантий раста нет.

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

ко второй или третьей версии...

Это будет очень не скоро, если будет вообще. Скорее крейт с процедурным макросом появится (если его еще нет).
Зачем нужно наследование данных я вообще не очень понимаю

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

Вроде джава - очень высокоуровневая штука. Меня впечатлила презентация фирмы, которая взялась за портирование джавы на эльбрус. Им понадобился год чтобы скомпилировать работоспособную версию и ещё полтора чтобы довести производительность на такт до 6% от теоретически возможной для процессора и 25% от х86. Заявлено, что у них был готовый C/C++ компилятор.

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

Такое код-ревью не пропустит никогда. Явный ансейф вне ffi-оберток должен быть в сигнатуре функции.

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

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

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

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

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

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

Это оно и есть. Конкретно тут не вижу проблемы. Исключения на то и исключения, что встречаются в 0.1% случаев, так что а не плевать ли, сколько это работает?

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

То что явно не указывают адреса ещё не говорит о том что адресная арифметика не будет встречаться на каждом шагу.

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

Скорее крейт с процедурным макросом появится (если его еще нет).

Есть, каждый велосепедид свой макрос, где-то я уже это видел, они тоже говорят, что дженерики не нужны...

Зачем нужно наследование данных я вообще не очень понимаю

Чтобы расширять чужой код не влезая в него. Конечно я может чего и не понимаю, но в документации к расту мне не показали как это можно делать без наследования. Банальный пример с библиотекой UI компонентов и желанием сделать кастомный виджет на основе текущего из библиотеки. Тут даже не наследование, хотя бы просто сделали сахарок делегации методов для композиции.

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

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

Всё ровно наоборот, буржуйский недотумок! Как раз сейчас под Линуксом ДЕСЯТКИ языков, включая и преемника Си - Ди. И ЧТО? Да то, что нет никакого смысла перекрашивать Жигули - их давно пора менять изнутри.

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

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

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

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

нужно пробовать что-то новое, нет прогресса без движения.

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

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

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

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

SystemD не просто так включают почти везде

конечно не просто так, ведь за ним стоит корпорация RH.

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

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

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

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

А у кого срез получается неровный или каменный резец иногда отлетает и калечит ноги — это просто руки кривые.

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

А у кого срез получается неровный

(косплея смузи-тян) от хипсторы развелись! Срез видете ли неровный!

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

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

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

ЗЫ ну и в компиляторе главное - точно не кодировка вывода сообщений.

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

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

Так что это так, для игры, и для ЧСВ...

Эм... Он как раз и пишет, что его пруф показывает, что переписывать можно помодульно.

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

Никто его наружу не вытаскивал. Откуда инфа?

Я портировал софт на дистрибутив от ребят, сотрудничающих с МЦСТ. У них в системе единственная локаль — koi8-r. Когда я поинтересовался, а собственно, почему, мне ответили, что lcc выдает только koi8-r, его сырцов у этих перцев нет, делать обертку с iconv им в голову не пришло и они просто сделали koi8-r дефолтной (и единственной) локалью.

Насколько я знаю, им надоело делать собственный LFS и сейчас все собирают Debian 8.

P.S. Маны у lcc тоже на koi8-r, да :D

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

Тсс, не мешай таки дискредитировать ищущих истину, имя труднее управлять.

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

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

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

в мечтах нью-васюковцев все эти D и расты уже победили си и с++ , и на них уже написано всё.

i36_zubov
()

Таки когда этот младший брат вейланда с немаленьким возрастом - уже 7 лет! - выкатит хоть какой-нибудь рабочий продукт? Или его занесут в святые только потому, что умрет безгрешным, как младенчик, - на нем, кроме прототипов, не написали вообще ничего?

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

Тут не это главное. D прекрасная штука, но подразумевает массивную поддержку рантайма. Раст специально спроектирован, как низкоуровневый инструмент, направленный на надёжность (довольно неуклюжая концепция владения, это вторично). Поэтому идея переписывать части или всё ядро на достаточно низкоуровневом и позволяющем низкоуровневые шутки, но всё-таки значительно более строгом, чем «чистый си» инструменте, весьма плодотворна.

Проблемка (кроме того, что раст всё ещё не устаканился) --- расту тоже нужен некоторый, более сложный, чем минимальная библиотека си, рантайм.

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

смузи-тян, успокойся.

Тебя задело? Тогда попробуйте попрактиковать со своим другом латте с чизкейком. Это даст тебе 146% прироста производительности при написании кода на расте!

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

яркий пример удаления гланд через анус и «старой школы», когда компьютеры были большими, а инструменты, наоборот.

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

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

Но не указано сколько из этого занимает ram диск

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

лучше так :

import std.algorithm.mutation; int a = 10, b = 20; swap(a,b);

writeln(«a = », a," b = ", b); :)

ну, или уж если серьёзно, то так: nothrow @nogc @trusted void SWAP(ref int _a, ref int _b) { asm nothrow @nogc { mov EAX, dword ptr [RSI]; mov ECX, dword ptr [RDI]; mov dword ptr [RSI], ECX; mov dword ptr [RDI], EAX; } }

int a = 10, b = 20; SWAP(a,b);

writeln(«a = », a," b = ", b);

и никаких «иероглифов»! :)

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

Вот это радость... Ссылка (по русски псевдоним=кличка) вдруг стала указателем.

«ссылка» по русски --- ссылка, а псевдоним --- псевдоним.

При генерации кода, ссылка *может* (и в большинстве, но не во всех, случаев, будет) интерпретироваться компилятором, как указатель. Но это *скрыто* от программиста на языке высокого уровня.

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

Который написал D с итераторами, исключающими проблемы выхода за пределы массива

в D (сандартно) нет итераторов. В D диапазоны, это разница.

рантаймовыми проверками при индексации?

отключаются.

glebiao
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.