LINUX.ORG.RU

Кризис при продвижении языка программирования Rust в ядро Linux

 , ,

Кризис при продвижении языка программирования Rust в ядро Linux

2

5

В сообществе разработчиков ядра Linux возникли разногласия по поводу интеграции языка программирования Rust. Кристоф Хелвиг (Christoph Hellwig), мэйнтейнер подсистем DMA, KVM, Slab Allocator и архитектуры PowerPC в ядре Linux, в своё время входивший в управляющий технический комитет организации Linux Foundation и выступавший истцом в связанном с GPL судебном разбирательстве с VMware, отказался подтверждать патчи, связанные с поддержкой разработки драйверов на языке Rust.

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

В качестве причины отказа упомянуто усложнение сопровождения кода при наличии обвязок на других языках и желание сохранить программные интерфейсы к DMA в читаемом виде на языке Си, без размазывания по непонятным обвязкам. Кристоф предложил напрямую обращаться к исходному Си API DMA в каждом драйвере на языке Rust, чтобы не создавать дополнительных абстракций, от которых вынуждены будут зависеть сопровождающие ядра.

Неcмотря на высказанное разработчиками проекта Rust for linux намерение о полностью самостоятельном сопровождении написанной на Rust кодовой базы, на прием патчей было наложено вето.

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

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

>>> Подробности (OpenNet)



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

Функциональный?

Нет. Многие вещи нормально через libusb сделать нельзя. Всё, что касается большой пропускной способности, может стать колом. У меня такое с usb-модемом было.

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

Стабильный?

Не слишком. У libusb есть нюансы.

В userspace можно драйверы писать?

Далеко не все.

Микроядро по всем признакам.

Ну кроме того, что не по всем и не микроядро. А так, да.

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

Нет. Многие вещи нормально через libusb сделать нельзя. Всё, что касается большой пропускной способности, может стать колом. У меня такое с usb-модемом было.

А может никому не надо?

Не слишком. У libusb есть нюансы.

Они у всего есть.

Далеко не все.

Так а может никому не надо?

Ну кроме того, что не по всем и не микроядро. А так, да.

Ваще микроядро. Драйвер в юзерспейске — микроядро. Остальное демагогия.

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

Ваще микроядро. Драйвер в юзерспейске — микроядро. Остальное демагогия.

Ага. Все представленные ОС – микроядра. Так и запишем. Надо Торовалтосу написать, что у него микро.

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

У тебя есть практический опыт в данной области?

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

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

А чем дальше в лес, тем больше оно на это и похоже. Шедулеры можно в us, файловые системы можно, блочные драйверы можно, usb можно. Осталось pci затолкать наружу и у нас получится полноценное окружение.

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

libpciaccess давно есть. Иксовые дрова раньше так и работали, пока не появился DRM и их не затолкали в ядро.

Вопрос не в том что можно. Вопрос в том, чтобы так работало всё. Можно ли в лялексе сейчас вытащить всё в юзеоспейс кроме самых базовых операций? Нет, нельзя.

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

В смысле не взлетел? У меня через него весь third-party софт стоит.

Ты - не все. Большой популярности appimage почему-то не получил. Хотя Торвальдс, в своё время, весьма лестно о нём отзывался.

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

У тебя есть практический опыт в данной области?

Есть немного в плане портов Haiku.

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

Суть в том, что при правильной организации и стандартизации никаких мейнтейнеров вообще не нужно. Это проблема Линукс дистрибутивов так таковых. Чтобы сделать программу под Windows они не нужны, просто выкладываешь бинарник.

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

Ты - не все. Большой популярности appimage почему-то не получил. Хотя Торвальдс, в своё время, весьма лестно о нём отзывался.

А какая мне разница кто считает что он взлетел или не взлетел? Я могу софт поставить? Да.

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

Суть в том, что при правильной организации и стандартизации никаких мейнтейнеров вообще не нужно. Это проблема Линукс дистрибутивов так таковых. Чтобы сделать программу под Windows они не нужны, просто выкладываешь бинарник.

Так это Gnome.

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

Чтобы сделать программу под Windows они не нужны, просто выкладываешь бинарник.

Чем порождаешь рынок антивирусов.

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

Как показывает практика например с XZ Utils и Jia Tan, вирусы можно внедрить и в исходники открытого ПО. Причём нагенерированный нечитабельный человеком говнокод Autotools прекрасно подходит для сокрытия вирусов.

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

Можно ли в лялексе сейчас вытащить всё в юзеоспейс кроме самых базовых операций? Нет, нельзя.

Шины PCI имеют отображение в память, что позволяет работать с ними из юзерспейса. Также можно разрешить доступ процесса к определенным IO портам. Сделать проброс прерываний в юзерспейс и вроде больше ничего и не надо для большинства драйверов.

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

Сделать проброс прерываний в юзерспейс и вроде больше ничего и не надо для большинства драйверов.

А он сделан? Это раз.

Два: в случае лялекса это всё может кончиться очень дерьмовой производительностью. Тащемта, основная часть исследований в микроядрах с середины 80х и до 2000х – это как сделать, чтобы вся эта срань не тормозила.

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

Любой софт? Например раньше в Федоре не любили обновлять Git после релиза очередной федорки, кроме разве что обновления безопасности. Ты можешь снести Git установленный через rpm/dnf и поставить его последнюю версию при помощи appImage?

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

Сделать проброс прерываний в юзерспейс и вроде больше ничего и не надо для большинства драйверов.

Это тоже есть для PCI устройств в ядерном интерфейсе доступном из userland под названием VFIO. Используется например виртуальными машинами для проброса видеокарт.

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

Как показывает практика например с XZ Utils и Jia Tan, вирусы можно внедрить и в исходники открытого ПО. Причём нагенерированный нечитабельный человеком говнокод Autotools прекрасно подходит для сокрытия вирусов.

Ты сейчас сравниваешь неудачную (её очень быстро вскрыли) попытку сделать supply chain attack с вирусным безумием венды. Я не знаю значем, это вообще ортогональные вещи.

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

Любой софт? Например раньше в Федоре не любили обновлять Git после релиза очередной федорки, кроме разве что обновления безопасности. Ты можешь снести Git установленный через rpm/dnf и поставить его последнюю версию при помощи appImage?

Я могу поставить нужную мне вендорную тулзу напрямую с сайта вендора. Мне вплоне достаточно.

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

Два: в случае лялекса это всё может кончиться очень дерьмовой производительностью. Тащемта, основная часть исследований в микроядрах с середины 80х и до 2000х – это как сделать, чтобы вся эта срань не тормозила.

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

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

Я могу поставить нужную мне вендорную тулзу напрямую с сайта вендора. Мне вплоне достаточно.

Захожу сюда https://git-scm.com/downloads/linux и читаю официальный способ установки для Федоры:

# dnf install git (Fedora 22 and later)

Сейчас они поддерживают Git в актуальном состоянии и после релиза очередной федорки, а если вновь перестанут?

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

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

Ну ладно, вот ещё одна строчка, добавляй флаги

#include <stdio.h>

char *get_string() {
  char s1[] = "Hello";
  char *s2 = s1;
  return s2;
}

int main(void) {
  char *s = get_string();
  printf("%s\n", s);
}
vbr ★★★★★
()
Последнее исправление: vbr (всего исправлений: 1)
Ответ на: комментарий от gaylord

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

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

Ждём гугловой фуксии, если они её выпустят когда-нибудь.

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

вирусным безумием венды

Времена, когда в Windows было полно вирусов, уже прошли. Сейчас там добавили разные меры безопасности вроде UAC и Windows Defender.

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

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

И с этими микроядрами кто-то долго и упорно страдал, внося туда оптимизации.

Ждём гугловой фуксии, если они её выпустят когда-нибудь.

Похоже что уже нет. По крайней мере не как замена лялеху в телефоне.

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

Интересный инструмент, простыми трюками обмануть его у меня не получилось. Решил проверить - много ли срабатываний будет в реальных программах, в коде sqlite3 gcc -fanalyzer показал только одно предупреждение, во время работы потреблял до 28ГБ ОЗУ.

clang-tidy выдал 34 предупреждения (не считая предупреждений о том что вместо mem(set|move|cpy) надо использовать mem(set|move|cpy)_s). Если это были ложные срабатывания, то clang-tidy не получится использовать в режиме когда предупреждение считается ошибкой, если срабатывания по делу, то значит авторы sqlite3 недостаточно внимания уделяют качеству кода и тестированию.

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

K-Lite Codec

Зачем оно нужно когда есть VLC?

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

И с этими микроядрами кто-то долго и упорно страдал, внося туда оптимизации.

Ага. А с лялексом – нет.

По твоим словам выходит, что если кто-то способен пришить бабушке член, то она уже дедушка. Но нет, без члена бабушка дедушкой не будет, дедушкой можно стать только по праву рождения. Как бы ни убеждали нас ЛГБТ активисты в виде товарища @Stanson, просравшего стек.

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

Так это как раз показывает, что мейнтейнеры это необходимость, а не паразитизм. И за что их пинать я не понимаю.

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

И за что их пинать я не понимаю.

Пинать их за сам факт создания дистрибутивов. Каждый отдельный дистрибутив не стоит кратного роста числа низкоквалифицированного труда мейнтейнетов. В чём смысл существования например Debian, если в Fedora всё одно и тоже?

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

В чём смысл существования например Debian, если в Fedora всё одно и тоже?

В том оно разное. Отличия RHEL и Арч кардинальные, например.

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

Там везде один и тот же софт. Один и тот же GNOME, KDE, Firefox, Blender, LibreOffice, systemd, pipewire, Mesa3D и т.д.. Там буквально всё одно и тоже, только лежит немного в других местах и используется другой пакетный менеджер. Зачем всё это надо?

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

Там везде один и тот же софт.

Версии ПО/циклы обновлений. Мне было бы все равно каким дистром пользоваться если бы я управлял тем какая версия софта будет накатываться. Вот тут наверное и происходит деление людей, один хотят rolling-release, другие half rolling-release, третьи не хотят глобальных обновлений кроме ролинга браузеров и сикурити патчей.

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

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

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

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

В Windows можно скачать любую версию софта какую захочешь,

Но я так же могу скачать любую версию eclipse, idea, dbeaver, freeplan и пользоваться. Я часто скачиваю бинарные сборки с сайта разработчиков.

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

Софт который мне не слишком важен, например Gimp, LibreOffice ставлю как есть в дистре. Запускаю я его раз в несколько месяцев и пользуюсь от силы 5% функций. Мне не нужны новые фишки, главное чтоб не падало.

Ну еще в ubuntu теперь есть snap и там оперативно обновляются клиенты мессендежров. Меня это устраивает.

Я так понимаю все это теперь есть и в винде? Я windows не видел со времен XP.

Aber ★★★★★
()
Последнее исправление: Aber (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.