LINUX.ORG.RU

В linux-next добавлена возможность писать драйверы на Rust

 , linux-next, ,


1

7

В ветку ядра linux-next включен код для написания драйверов на Rust, сам патч. Пока неясно, оставит Линус это или нет, он высказывается довольно туманно, из его слов не совсем понятно, есть ли четкие критерии включения.

>>> Подробности

anonymous

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

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

забавная мысль в треде про добавление возможности писать драйвера на расте.

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

Давайте добавим в ядро вообще все языки. Ненуачо, у них же почти у всех есть какой-то интерфейс к сишному коду, чем это от использования usafe в расте будет отличаться? Жаба будет JNI дёргать, раст unsafe вызывать, луа сишные функции дёргать.

Stanson ★★★★★
()
Ответ на: комментарий от bernd
Минусы использования goto:
непривычность кода
нарушение хода следования чтения листинга сверху вниз и стандартизированного обхода блоков в коде (в смысле, что возможен переход в центр блока, а также выход из него)
усложнение компилятору (а иногда и невозможность) процесса оптимизации кода
повышение вероятности создания трудноуловимых ошибок в коде
TDrive ★★★★★
()
Ответ на: комментарий от Stanson

Точно так же можно писать драйвера хоть на жабе

Точно так же нельзя.

Давайте добавим в ядро вообще все языки. Ненуачо, у них же почти у всех есть какой-то интерфейс к сишному коду, чем это от использования usafe в расте будет отличаться? Жаба будет JNI дёргать, раст unsafe вызывать, луа сишные функции дёргать.

Ты загоняешься, все языки во первых не подойдут во вторых они и не претендуют.

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

Ты загоняешься, все языки во первых не подойдут во вторых они и не претендуют.

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

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

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

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

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

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

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

Да неужели. Особенно питон для этого популярен. Можно Solaar какой-нибудь поглядеть и подобные. Наверно сотнями исчисляется. Всяко больше чем на расте.

теперь фильтруй по эффективности получаемого бинарника и актуальности языка

Когда это раст стал актуальным?

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

По факту раст игрушка корпораций, вокруг которого носятся Ц неосилляторы, пару статей на хабре за плечами о ущербности Ц и экспертное мнение готово. Вот ты с теме же goto переходами, goto часто весьма уместны, знал бы, если бы писал, думаю. Если вот это всё в ядро пролезет (подправить лишь kbuild еще приемлемо), то выводы будут сделаны. Ты можешь долго спорить, но многим это будет неприятно, давай, шатай сообщество, цели ведь высокие.

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

Так а в чём проблема? Ты впервые видишь Linux и не знаешь что Out-of-Tree модули – это так себе идея?

При чём тут SJW? Смешались люди, кони…

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

Очевидно тот, кому вдруг понадобился драйвер на расте. Makefile написать для своего поделия - это теперь типа rocket science?

Так они хотят Rust засунуть в ядро уже сейчас. Естественно этот кусок должен собираться.

И зачем это в ядре?

Чтобы писать код на Rust, зачем же ещё.

Может ещё напихать туда барахла для сборки драйверов на паскале, фортране, хаскеле, брейнфаке и ещё чорт знает чём?

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

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

Нет, автор статьи наоборот пишет об ухудшение читаемости кода при использование goto:

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

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

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

он пишет что в C\C++ с гото иногда бывает проще чем без него, и то что в самих си/плюсах и без гото выстрелить в ногу проще простого:

А что, другие средства С++ безопасные и не могут создать ошибок в коде? Приведу краткий список самых опасных вещей С++ («опасные» в том смысле, что с их помощью можно создать массу трудноуловимых ошибок): преобразования типов, перегрузка операторов, указатели и динамическое распределение памяти, наследование классов, шаблоны… Кажется, я перечислил почти все достоинства С++… А, ну да, полиморфизм не назвал – он у меня проходит под «перегрузкой операторов».

а в расте гото и так не нужен, ведь там есть удобная возможность использовать label с циклами:

let mut r = 0;
'label: loop {
 println!("{}", r);
 if r < 10 {
  r += 1;
  continue 'label;
 }

 break;
}
us976
()
Ответ на: комментарий от pavlick

По факту раст игрушка корпораций, вокруг которого носятся Ц неосилляторы, пару статей на хабре за плечами о ущербности Ц и экспертное мнение готово.

То раст хуже читается чем си, то фанаты раста не осилили си, вы уж определитесь.

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

Уместен для читаемости? Ты вообще понял что мы обсуждали или просто тригернулся на goto?

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

Да неужели. Особенно питон для этого популярен.

О каких драйверах ты говоришь? Драйвера для собственных USB поделок? Дай плиз ссылку на то что ты имеешь в виду.

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

О каких драйверах ты говоришь? Драйвера для собственных USB поделок? Дай плиз ссылку на то что ты имеешь в виду.

Т.е. упомянутого названия софта недостаточно для любителя раста чтобы найти и посмотреть? Трындец. И эти люди лезут в ядро.

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

Не быкуй, я только проснулся. Значит так, драйвер для клавиатуры написан на питоне и ты считаешь что на нем с тем же успехом можно написать драйвер сетевой или видео карты? Я правильно понимаю?

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

а в расте гото и так не нужен, ведь там есть удобная возможность использовать label с циклами:

Не позорьтесь, осильте все же статью, ссылку на которую привел @bernd. Читайте полностью, а не только приятные вам цитаты.

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

А необходимость пихать Раст-обертки в ядро тут при том, что …?

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

Вперед, неси драйвера для «сетевой или видео карты», написанные на расте, которые могут соревноваться с драйверами на С.

Кстати, как так получилось, что маргинальный Zig подошел лучше, чем Rust?

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

Кстати, как так получилось, что маргинальный Zig подошел лучше, чем Rust?

Чуваку нужно было простое решение для его конкретной задачи с учетом того что он physicist-turned-web-developer, ему настрать на стабильность, безопасность, архитектуру... просто хочет что бы код быстро работал и не еб** мозги разницей между let и const

Ну и че это доказывает?

Он там кстати еще и C говном облил по пути. Типо вот Раст не очень а Си это прям совсем пи***. лол

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

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

Процитирую статью

Так вот, для меня очевидно, что goto помогает оптимальней и качественней решить некоторые проблемы.

А бывает и наоборот – goto может породить массу проблем.

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

Ты какую-то другую статью прочитал, он говорит, что с растом знаком нормально, про Ц ничего не говорил

The experience went so well, in fact, that I now feel just as likely to turn to Zig (a language I’ve used for a dozen hours) as to Rust (which I’ve used for at least a thousand hours).

Ну и растоэпитафией закончил

I’ll either use Zig successfully for my embedded hobby projects, one-off WASM helpers, and C API binding needs, or, in struggling to accomplish these tasks, I’ll finally begin to understand and appreciate more of the issues that Rust is protecting me from.

не чокаясь … ))

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

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

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

Там своеобразный чел, он сначала пишет про то что юзает раст тысячу часов а потом выдвигает претензии к let и const

а про Си вот:

While there’s certainly a lot of language complexity in all these solutions, Rust deserves a lot of credit for being more palatable than the traditional approaches. Unlike C’s infamous textual preprocessor macros (#define, #ifdef, etc.), for example, Rust’s macros won’t lead to inexplicable syntax errors on expansion. (And all of the expanded code is type checked!)
Rust’s tooling is much better too — Rust Analyzer is competent enough to understand the feature annotations when jumping around code, something I never could figure out for C.

Ты бы полностью прочитал все что там написано а потом уже можно и отмечать)

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

а чем не устраивает гото?

про «Структурное Программирование» не слышал?

если в языке есть значит надо пользоваться

хехе, в сексшопах есть куклы для траха — будешь пользоваться?

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

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

А вы читали, что я писал? Я ведь и написал что гото в C в некоторых местах бывает полезен(хотя и без него можно обойтись). Мой комментарий:

он пишет что в C\C++ с гото иногда бывает проще чем без него, и то что в самих си/плюсах и без гото выстрелить в ногу проще простого

В расте же есть возможность использовать метки(которых не в с, не в плюсах нет) не только вместе с циклами но и с обычными блоками(как в java), поэтому необходимость в гото отпадает

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

Даже автопарсер не может распарсить это невменяемое количество спецсимволов, а вы хотите чтобы это люди парсили…

В приведенном коде label loop, кстати, ничем не отличается от goto label от слова совсем. Написано только больше букв и спецсимволов и вся разница. Понимания больше не стало, да и пример только обратных переходов, а есть ещё прямые, которые предлагается портянками if/elif/else делать, а самое весёлое что если хотя-бы 2 ветки этого if/elif должны приходить в одну точку, то придётся либо инлайн городить, либо код дублировать.

Q-Master
()
Ответ на: комментарий от Minona

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

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

Да, не заметил, сорри. Ты там еще говорил:

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

Может и не идеальная, но в сравнении с растом - просто супер. Мы тут в другой ветке писали два аналогичных кода: Цпп и Раст, ну объективно, у расто вообще вырвиглазно все смотрится, очень тяжело воспринимается.

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

Я не думаю что это объективно, дело привычки, о чем я в самом начале этой темы и писал, В linux-next добавлена возможность писать драйверы на Rust (комментарий)

А про готу я просто привел пример того что Си так же далек от идеала.

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

TDrive ★★★★★
()

Для справки

Основное место разработки:

Что посмотреть:

AlexVR ★★★★★
()
Ответ на: комментарий от Q-Master

Даже автопарсер не может распарсить это невменяемое количество спецсимволов

Если лор не в состояний понять раст, это проблема лора. Большинство ide поддерживающих раст нормально понимают метки, например простой geany всё нормально подсвечивает.

а вы хотите чтобы это люди парсили

не знаю что такого сложного ты увидел в примере, так-то рустовские метки по читаемости лучше сишных

В приведенном коде label loop, кстати, ничем не отличается от goto label от слова совсем. Написано только больше букв и спецсимволов и вся разница.

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

А вообще раст плох, там нельзя написать так:

goto k;
int a = 0;
int b = 909;
k:
b += 1;
printf("%d ", b);
us976
()
Ответ на: комментарий от mister_VA

О как. Я, признаться, стандарт не читал, надо посмотреть.

То есть получается, что можно в одном месте насовать 4 пробела, в другом два пробелп, в третьем пять пробелов и будет работать? Тогда это фигня какая-то…

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

Инклюзивность же должна быть равной для всех меньшинств и всё такое.

Должна кому? И с чего это вдруг?

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

А какие задачи в написании ядра не решаются без goto и сколько их?

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

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

если есть, то почему нет?

это про куклы? фу-фу-фу...

гото точно такой же инструмент как иф или принт

goto - передача хода хз куда
if - структурный оператор
print - функция печати
сравнение чего-то с чем-то

в обероне, например, тоже нет гото, однако прекрасно пишется ПО для микроконтроллеров.

самоограничиваться из-за глупых предрассудков, запущенных как мем в 90е

это вообще о чем?

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

Инклюзивность же должна быть равной для всех меньшинств

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

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

А какие задачи в написании ядра не решаются без goto и сколько их?

Ну сделай grep goto в исходниках. 160_000+ строк. 90% обработка ошибок с освобождением ресурсов перед выходом.

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

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

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

Значит так, драйвер для клавиатуры

Это не драйвер для клавиатуры. Это драйвер дающий доступ к фичам и настройкам логитеховского приёмопередатчика и соответсвующих мышей и клавиатур.

написан на питоне и ты считаешь что на нем с тем же успехом можно написать драйвер сетевой или видео карты?

А в чём проблема? Конечно можно. Особенно если это не сильно быстрая сетевая или видео карта.

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

где ты в 99-ом дос нашел? у меня на работе уже была 2000 винда и линукс от шляпы.

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

Чувак, еще в 2010-м году, в налоговой инспекции стояла программа учета налогоплательщиков под ДОСом (экран как у нортона), а ИНН печатались на матричном принтере.

Мы говорим за страну, а не за твое ЧП Васян.

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

То есть получается, что можно в одном месте насовать 4 пробела, в другом два пробелп, в третьем пять пробелов и будет работать?

Раньше было можно, сам проверял. Можно и сейчас, только что проверил. Для обозначения блоков в одной проге в одном случае использовал таб, а в другом 3 продела, работает.

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