LINUX.ORG.RU

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

 , ,


4

9

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

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

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

>>> Статья



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

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

Или в Rust и OCaml. Или в Rust и Haskell. С чего бы вдруг Rust стал похож именно на C++?

Оба системные и без GC, ваш КО.

Которой в C++ нет.

По вашей логике и в Rust её тоже нет.

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

Я тоже могу сказать, что он мой любимый. Идеи там есть интересные. Но код на нём я не писал никогда и не факт что буду.

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

но работает только в вакуумно-сферических условиях

Скорее, в си в общем случае просто не работает. Работает на каких-то конкретных платформах, когда звезды сойдутся.

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

У создателей физически не было других вариантов.

Лол. google llvm ir

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

Я тоже могу сказать, что он мой любимый. Идеи там есть интересные. Но код на нём я не писал никогда и не факт что буду.

Да это Ваше право. Я на нём начал проект на работе и это как излечение от катаракты, теперь я не знаю как жил раньше.

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

Rust одинаково далек и от C, и от C++.

Только в ваших фантазиях. Авторы постоянно сравнивают его именно с этими двумя языками.

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

Оба системные и без GC, ваш КО.

Как и Modula-2. И Ada. И даже C.

По вашей логике и в Rust её тоже нет.

Поскольку на Rust-е сейчас зарабатывать могут не только лишь все, мне как-то фиолетово, что именно есть в Rust-е. И как это называют неэрудированные Капитаны Очевидность.

Но вот в C++ автоматическое управление памятью есть только для размещенных на стеке переменных.

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

char это всегда 8 байтбит!

Да ты спец. Размер char зависит от реализации.

2.2.4.2 Numerical limits

The values given below shall be replaced by constant expressions suitable for use in #if preprocessing directives. Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown, with the same sign.

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

Если разработчик не напишет unique_ptr или напишет что-нибудь вот такое то никакого автоматического управления памятью не случится.

Если человек не напишет Box, Rc, Arc - то будет ошибка.

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

Авторы постоянно сравнивают его именно с этими двумя языками.

Что разумно, поскольку они своим Rust-ом хотят отъесть куски пирога у C и C++.

Только вот сравнение с C++ не делает Rust похожим на C++. Хотя бы по внешнему виду (а ведь с этого, имхо, спор и начался).

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

int8_t это однозначно signed char, а char это всегда 8 байт! Так что сэр, Вы гоните!

1) не 8 бит (и уж тем более не 8 байт) int8_t uint8_t Integer type with a width of exactly 8 bits. For signed types, negative values are represented using 2's complement. No padding bits. Optional: These typedefs are not defined if no types with such characteristics exist.*

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

«Но старушки кушают» - этого не отнять. И программки байтики щёлкают, почти всегда успешно.

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

Если человек не напишет Box, Rc, Arc - то будет ошибка.

Как это поможет вам доказать тезис о наличии «автоматического управления памятью в C++»?

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

Как это поможет вам доказать тезис о наличии «автоматического управления памятью в C++»?

Да чувак, наверное, RAII имел ввиду

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

Разумеется. С был написан на ассемблере. Ассемблер был написан в машинных кодах.

Я это знаю, спасибо за напоминание. Но скажи, каким образом из этого следует, что всё, что написано после априори лапша по сравнению с С?

В чем проблема я не понимаю? Именно так все и было. И сейчас никак не изменилось!

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

После того как это сделано один раз тогда можно писать компилятор на С на самом С. И так с любым более или менее адекватным языком.

И как ты получаешь из этого, что всё что написано после априори лапша? Я не вижу логики в твоих рассуждениях!

Вы что школьник или вчера родились????

Да, прикинь, я грудник, у мамки сисю сосу. Тебе не стыдно проигрывать в споре груднику?

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

Поскольку на Rust-е сейчас зарабатывать могут не только лишь все, мне как-то фиолетово, что именно есть в Rust-е. И как это называют неэрудированные Капитаны Очевидность.

Ну если это самый главный критерий языка, то победил javascript.

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

Ну если это самый главный критерий языка, то победил javascript.

При чем здесь это?

Я, например, давно программирую на C++. И давно не против сменить C++ на что-то более безопасное. Но вот для меня, как для старого C++ника, Rust ну совершенно не похож на C++. Равно как и на C. Rust — это вообще движение в какую-то совсем другую плоскость.

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

Да, для сишников нормально иметь код типа ... и в упор не видеть что это говно.

Это не говно! Это так сказать _волшебные_ константы. Их огромное преимущество в том, что они не занимают память от слова вообще, если ими не пользуются.

В частности именно таким образом определена известная константа M_PI.

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

Тот факт, что каждый программист придумывает свои волшебные константы, это его личные проблемы.

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

И Вы, по всей видимости сторонник данных тенденций.

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

Я лично не хочу жить в таком обществе, пластика и ширпотреба. Каждый человек должен иметь свободу попасть на рога быка в корриде и упасть с дерева, даже если ему будет больно.

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

P.S. Вообще говоря препроцессор в С это гениальная вещь. Тогда было сложно встроить это в сам язык, а сейчас мы все знаем и constexpr и много чего еще.

В идеале максимум кода должно выполняться во время компиляции. К этому уже давно пришли. Отсюда и родились многие вещи из разных языков.

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

Люди постоянно занимаются тем, что усложняют уже сложные вещи. Это вносит лишь хаос. Уже давно пора все упрощать.

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

Их огромное преимущество в том, что они не занимают память от слова вообще

Ну и в каком ЯП константы занимают память?

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

Знаешь, мне начинает казаться, что ты фанат Rust, но пытаешь дискредитировать С/С++ программистов, потому что такой бред надо ещё постараться написать.

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

P.S. Вообще говоря препроцессор в С это гениальная вещь.

Очень гениальная, особенно доставляет это [code = c] #define genius( x, y ) х + у ... int main() { int i = 5 * genius(200, 300)

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

зарабатывать
Modula-2

Лул.

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

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

Но скажи, каким образом из этого следует, что всё, что написано после априори лапша по сравнению с С?

Кто это сказал? Точно не я. Речь именно о Rust. И неважно что я о нем думаю, факт в том, что он не взлетит.

Это называется — порочный круг.

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

И как ты получаешь из этого, что всё что написано после априори лапша? Я не вижу логики в твоих рассуждениях!

Значит Вам еще нужно учиться читать и понимать прочитанное. Тут помогут только усилия и время.

Тебе не стыдно проигрывать в споре груднику?

Если грудничку сняться такие сладкие сны, я не вправе ему мешать. Как говорит одна известная пословица - «чем бы дите не тешилось...»

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

Я не любитель сравнивать языки по синтаксису, и вам не советую.

Но вам винде. Ведь язык с си-подобным синтаксисом ни разу не rust.

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

Я вам ничего и не доказываю. Это бесполезно.

Просто уточнил, что работа с памятью в rust организована так же, как и в современном C++, только с доп проверками.

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

У тебя ещё и память как у рыбки...

lefsha

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

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

зарабатывать
Modula-2

Юноша, Modula-2 была приведена в перечне системных языков без GC. Речь про заработок шла в другом контексте, в котором Modula-2 уже не упоминалась. Зачем вам потребовалось насколько убого передергивать, не понятно. На демагогию потянуло?

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

Безотносительно того, могу ли я лично в принципе зарабатывать на Rust-е или нет, важен сам факт: на Rust-е я не зарабатываю, поэтому могу себе позволить не знать, есть ли в Rust-е автоматическое управление памятью или нет. А вот на C++ я зарабатываю и знаю, что в C++ автоматического управления памятью нет.

Если вы удовлетворили свою потребность в попытке меня зацепить, то может приведете какие-то аргументы, подтверждающие тезис о похожести Rust-а на C++?

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

дискредитировать С/С++ программистов

На лоре? Тут этого и так хватает. Пару недель назад уже была тема, от адепта сишки, который не понимает как обрабатывается UB компилятором.

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

И неважно что я о нем думаю, факт в том, что он не взлетит.

Пробиваем дно.

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

На лоре? Тут этого и так хватает. Пару недель назад уже была тема, от адепта сишки, который не понимает как обрабатывается UB компилятором.

Другая история. Человек столкнулся с реальностью, а она не оправдала его ожиданий, пусть учится на своих ошибках, это правильное занятие.

Тут же имеем ситуацию, в которой он явно тычет на недостатки С и называет их достоинствами.

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

А почему не 8 бит? А потому что не гарантируется, что он вообще определён. Т.е. портабельный код с рассчётом на то, что есть тип, в котором строго 8

разумеется бит, а не байт.

факт! состоит в том, что int8_t определен как

typedef signed char  int8_t;

Не больше и не меньше!!! И поскольку согласно стандарта char это всегда 1 байт, то тоже самое можно сказать и о int8_t

И если у Вас по странному стечению обстоятельств не оказалось stdint.h, что само по себе маловероятно, то вы всегда можете определить это самой той самой строкой выше!!!

А тот бред, который Вы приплели из-за такой ерунды оставьте себе!

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

Юноша, Modula-2 была приведена в перечне системных языков без GC.

Ой, простите. Не осилили полёт ваших мыслей.

в попытке меня зацепить

Тише-тише. Это вроде бы не я лезу в темы про rust с ведром помоев. В отличии от благородных донов вроде вас, я не лажу в темы о языках, которые не использую/интересуюсь. Хороший тон и т.п.

может приведете какие-то аргументы, подтверждающие тезис о похожести Rust-а на C++?

Аргументы? Зачем? Любой аргумент будет выброшен в окно вашей упёртостью.

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

Не осилили полёт ваших мыслей.

Т.е. вы по русски читать не умеете и не понимаете, какая фраза к какому абзацу относится? Ну так перечитайте: Продемонстрирована возможность разработки частей Linux на Rust (комментарий)

Это вроде бы не я лезу в темы про rust с ведром помоев.

Мы недавно на LOR-е уже проделывали эксперимент по поиску моих цитат, в которых я бы негативно отзывался о Rust-е, но вы слились. Давайте упростим задачу: покажите где я сказал о Rust-е что-то плохое в этой теме?

Любой аргумент будет выброшен в окно вашей упёртостью.

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

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

Я не говорил, что вакансии есть в моей конторе. Вакансии ищете в /r/rust и т.п.

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

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

Да просто интересно направление

Прослойка между мордой на Qt и com/usb устройствами. Компания местячковая. Название не на слуху.

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

уже проделывали эксперимент по поиску моих цитат

После эксперимента по сравнению многословности rust vs c++ я уже не могу с вами серьезно спорить.

истерику

Ваше экспертное мнение не перестаёт удивлять.

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

После эксперимента по сравнению многословности rust vs c++ я уже не могу с вами серьезно спорить.

Кто ж вам виноват, что в том эксперименте вы корявый пример взяли.

Но, опять таки, не нужно демагогий и перевода разговора в сторону. Вы сказали: «Это вроде бы не я лезу в темы про rust с ведром помоев.»

Итак, где то самой ведро помоев?

Раз уж вы про похожесть Rust-а и C++ ничего путного сказать не можете, а сливаетесь в сторону проезда по собеседникам.

eao197 ★★★★★
()

Тред любителей парадокса Блаба

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

То примеры у меня корявые, то термины неверные, то читать не умею, то ещё что-то. А теперь оказывается что это я ещё и наезжаю на вас. Вот дела.

У вас стокгольмский синдром по плюсам, из-за того, что rust начал «отъедать куски пирога» (цитата, как вам нравится). И в каждом топике про раст вы врываетесь с непонятными претензиями(ок, не помоями). Где я не прав?

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

То примеры у меня корявые, то термины неверные, то читать не умею

Так уж сложно допустить, что все это правда?

И в каждом топике про раст вы врываетесь с непонятными претензиями(ок, не помоями). Где я не прав?

Везде. Например, покажите в этом топике хотя бы одну мою претензию к Rust-у.

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

а о вашем э... ограниченном кругозоре, скажем так.

Ну уж извините, что в моей стране нет вакансий ни по modula-2, ни по ada. В то время как конференции по rust проводят.

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

Rust ну совершенно не похож на C++. Rust — это вообще движение в какую-то совсем другую плоскость.

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

Я думаю у тех кто хорошо знает C++ не будет проблем с такими вещами, потому что у них все это тоже есть.

Даже владение и заимствование в какомто виде в С++ тоже есть, просто оно находится в голове программиста и не всегда в исходном коде.

В языках с GC всего этого нету, так что сравнивать Rust с ними даже как-то странно. Языков без GC не так уж много, и из них C++ похож больше всех.

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

Так уж сложно допустить, что все это правда?

Я не доверяю неавторитетным источникам.

Например, покажите в этом топике хотя бы одну мою претензию к Rust-у.

Попытка доказать, что rust ни разу не похож на C++ не является претензией?

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

Языков без GC не так уж много, и из них C++ похож больше всех.

Т.е. похожесть заключается в том, что C++ не имеет GC и про C++ многие знают?

Ну Ок.

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