LINUX.ORG.RU

Линус Торвальдс пояснил свою позицию в отношении приёма изменений на Rust

 ,


0

7

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

Линус раскритиковал действия Кристофа Хелвига, мэйнтейнера подсистем DMA, KVM, Slab Allocator и архитектуры PowerPC. По мнению Линуса, Кристоф превысил свои полномочия и попытался повлиять на код, который не затрагивал код подсистемы DMA, был реализован в отдельном подкаталоге и не влиял на код, за который отвечает Кристоф. Кристоф попытался контролировать то, для чего используется подсистема DMA, и его действия можно сравнить с попыткой запрета использования DMA в каком-то драйвере, лишь потому, что ему не понравился этот драйвер. Итог: несмотря на то, что сопровождающие отвечают за свой код, они не отвечают за то, кто и как использует результат работы этого кода.

>>> Письмо Линуса

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

★★★★★

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

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

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

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

А вот и зависимость. А если не чинят?

Но ведь чинят.

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

Ждать, пока починят? Вообще за этим должен следить некто главный

Этот «главный» называется CI. Каждый патч проверяется на полную собирабельность ядра. Ни 1 патч, ломающий сборку, никогда включён не будет в обход CI-тестов.

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

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

Интересно, от чего это?

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

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

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

Найти сейчас растовика это вообще не проблема.

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

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

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

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

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

Ни 1 патч, ломающий сборку, никогда включён не будет в обход CI-тестов.

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

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

Найти сейчас растовика это вообще не проблема.

Прям такого, который в ядро может, а не только просмотрщик картинок переписать?

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

(При условии, что при разработке любого проекта, сложнее hello world, люди и так обмазываются valgrind"ами, статическими анализаторами)?

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

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

Прям такого, который в ядро может, а не только просмотрщик картинок переписать?

В ядре нет ничего особо сложного. Там есть специфика вроде контекстов, которая сильно сломала мозг парням из R4L, но они признали реальность и перестали пытаться затолкать это в систему типов. В остальном ядро ничем не отличается от любого другого highload.

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

В ядре есть KASAN и его друзья, которая примерно то же самое делают. Но, кажется, всем очевидно, что лучше ловить в compile time.

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

Вот такое довольно кривое решение и есть реакция на политические требования. Вместо того, что бы решать реальные проблемы с null pointer dereference поднимается лозунг «перепишем все на Rust». При этом сам язык довольно слаб, незрел (хотя, сейчас, вроде, стабилизировался) и синтаксически переусложнен.

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

Вот такое довольно кривое решение и есть реакция на политические требования. Вместо того, что бы решать реальные проблемы с null pointer dereference поднимается лозунг «перепишем все на Rust». При этом сам язык довольно слаб, незрел (хотя, сейчас, вроде, стабилизировался) и синтаксически переусложнен.

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

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

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

А для фанбоев раста вроде вас любое обоснованное сомнение это тревожность и посыл к психотеропевту. У вас же сомнений нет, только вперед, all is hole if you brave enough.

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

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

Возможно это хорошо и рано или поздно деды поймут, что нужно какое-то стабильное апи,

Извините а Вы в курсе как работают к примеру теже контейнеры? И что за ядро юзают 50 разных контейнеров с разными дистрами?

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

Нет хейта к расту.

Ещё как есть.

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

Людьми, которые ваще никакого отношения ни к Rust, ни к ядру не имеют. То есть не здоровые размышления, а бабки у подъезда перетирают как женщина с третьего этажа позволила себе купить новую машину и сколько она за неё сосала. У которых аргументация «ааа мне страшно» и «ааа там плохой синтаксис». И что-то про трансов ещё. Простите, но это цирк, не здоровые размышления.

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

Ведь если часть из них форкнет ядро

А заодно, форкнет и линукс-фандейшн, который платит им ЗП? А саму ЗП получится тогда форкнуть? :)

отзовет свой код из текущего ядра (не в курсе, есть ли такая возможность)

Есть, но неформальная. По правилам этикета, если разработчик просит выбросить его код - код выбрасывается. Но ни в какой лицензии это не сказано, так что формальных способов нет.

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

Это он вам не завидует, тк ЗП вам не линукс-фандейшн платит, а вот ему - да.

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

В ядре есть много чего сложного. Оно, конечно, хайлоад как хайлоад, но довольно плохо понятно, какую функцию и когда можно вызывать и как не попасть под дедлок в общем случае. Не всегда понятно, какой код под каким локом отрабатывает. Вообще, где можно мьютекс, где RCU, а где и спинлока хватит — это тонкий вопрос, который каждый решает ad hoc.

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

Ну есть же хороший статический анализатор в том же clang'e. Да и внешних инструментов в ассортименте.

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

Ну есть же хороший статический анализатор в том же clang’e. Да и внешних инструментов в ассортименте.

Не, нету. Он не ловит почти ничего сложного.

gaylord
()

«Говори, говори...» ©

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

И вот это вот пренебрежение к обоснованным вопросам и вызывает хейт

@alysnix а если ломается руст окружение - то искать их надо во всевозможных голубых устрицах, и шалманах квир-диссидентов.

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

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

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

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

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

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

Литерали любой сишный код с тредами.

Не всегда понятно, какой код под каким локом отрабатывает. Вообще, где можно мьютекс, где RCU, а где и спинлока хватит — это тонкий вопрос, который каждый решает ad hoc.

Это вопросы контекстов, все так. Но для этого есть аннотации и lockdep, __must_hold и друзья.

P.S. И как раз вот эту всю срань Rust очень хорошо упрощает.

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

Ещё как есть.

Говорю за себя, у меня - нет.

Людьми, которые ваще никакого отношения ни к Rust, ни к ядру не имеют. То есть не здоровые размышления, а бабки у подъезда перетирают как женщина с третьего этажа позволила себе купить новую машину и сколько она за неё сосала. У которых аргументация «ааа мне страшно» и «ааа там плохой синтаксис». И что-то про трансов ещё. Простите, но это цирк, не здоровые размышления.

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

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

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

Вы когда-нибудь анализировали результат работы того же Svace на коде ядра? Я, помнится, как-то пару месяцев на это потратил. Местами было очень смешно.

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

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

Зачем? Я же не бабка за забором, стороны конфликта без меня прекрасно справятся.

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

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

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

Ну и пусть несут. Аргумент типа «это мог бы быть буддизм, но наши рыцари несут христианство и мечи у них длиннее».

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

В те же, в какие делается все остальное.

«А что мля если нет?» (с)

Как быть если необходимое изменение в rust коде вызовет каскадные изменения в других частях rust кода и приведет к конфликту интересов? Где та граница когда от «мы сами все у себя перепишем» произойдет переход к «нет, этот новый С код рабочий, но ломает слишком много в раст обвязке, мы не будем ее править, меняйте С код»? И не надо нам рассказывать о святости растофанбоев которые никогда так не сделают. Они драмы и из-за меньшего устраивают.

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

Вы когда-нибудь анализировали результат работы того же Svace на коде ядра? Я, помнится, как-то пару месяцев на это потратил. Местами было очень смешно.

Я Coverity смотрел, PVS Studio смотрел, clang-analyzer смотрел. Оно что-то находит, это правда, но там

a) Очень много false positives, которые надо аккуратно выгонять через exclude.

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

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

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

Это не значит, что патч, ломающий сборку, в обход CI примут в ядро. Это лишь значит, что «крабы» должны будут всё чинить вне зависимости от того, какое их мнение по поводу этих изменений. Маинтайнеру ДМА не придётся им долго объяснять, для чего он делает эти изменения. Он просто должен им сказать «я буду это делать, вот мой патч - жду от вас ответный, с тем, чтобы ваша подсистема с моим патчем работала, и время пошло». Договорённость только в этом.

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

Это не значит, что патч, ломающий сборку, в обход CI примут в ядро. Это лишь значит, что «крабы» должны будут всё чинить вне зависимости от того, какое их мнение по поводу этих изменений. Маинтайнеру ДМА не придётся им долго объяснять, для чего он делает эти изменения. Он просто должен им сказать «я буду это делать, вот мой патч - жду от вас ответный, с тем, чтобы ваша подсистема с моим патчем работала, и время пошло». Договорённость только в этом.

Не утверждал такого, все так как ты и описал.

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

Разумеется форкнуть ядро при желании нет проблем. Кто кому платит - не в курсе, однако допускаю, что разрабам платят их конторы, в частности Кристоф на зарплате в Ред Хат.

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

Они драмы и из-за меньшего устраивают.

Пока что это ты устраиваешь драму из-за гипотетической ситуации, которую сам и выдумал.

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

Это обычная ситуация А что делать, если сломался модуль на це?

А они постоянно ломаются, ибо апи ядра меняется, как флаг на ветру.

И выходов тут два. Или ждут починки модуля или выбрасывают его и выпускают ядро без него. Что тут вообще нового?

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

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

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

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

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

«А что мля если нет?» (с)

Придет Линус и расскажет им, что они неправы. Так же как он это делает какждый merge window уже двадцать лет.

Как быть если необходимое изменение в rust коде вызовет каскадные изменения в других частях rust кода и приведет к конфликту интересов?

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

Где та граница когда от «мы сами все у себя перепишем» произойдет переход к «нет, этот новый С код рабочий, но ломает слишком много в раст обвязке, мы не будем ее править, меняйте С код»? И не надо нам рассказывать о святости растофанбоев которые никогда так не сделают. Они драмы и из-за меньшего устраивают.

Придет Линус и как-то все разрулит. Как обычно.

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

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

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

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

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

Могу говорить только за себя, за php макаку - у меня 0 хейта к расту. Проблема в другом - я вижу обоснованные вопросы (не тут, а в обсуждении разработчиков ядра) которые я бы сам, как архитектор, задал тому кто предложил бы такое внедрение нового языка. И ответы на эти вопросы пока что очень жидкие на мой обезъянний взгляд. Я вижу серьезные проблемы, причем проблемы больше организационного плана, чем технического.

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

то нам неизбежны треш, угар и содомия как норма существования.

тогда не вижу противоречий с тем что

искать их надо во всевозможных голубых устрицах, и шалманах квир-диссидентов.

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

тогда не вижу противоречий с тем что

я тоже не вижу и потому у нас есть свой gaylord.

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

Ну и пусть несут. Аргумент типа «это мог бы быть буддизм, но наши рыцари несут христианство и мечи у них длиннее».

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

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

Не любых, а только ломающих АБИ. Огромная разница.

АБИ - это не то. Ты, видимо, про API. Так ведь в этом-то и была проблема в случае драйвера DMA. Раст подцепился не к внешнему API, а к внутренним вызовам. Про которые никто не обещал, что они должны оставаться неизменными.

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

АБИ - это не то. Ты, видимо, про API. Так ведь в этом-то и была проблема в случае драйвера DMA. Раст подцепился не к внешнему API, а к внутренним вызовам. Про которые никто не обещал, что они должны оставаться неизменными.

Господи, да что вы несете. Нет конечно.

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

Дорогой, я не хочу вдаваться в пустые дискуссии. Как раз модуль в ядре писать надо, мне за это деньги платят. :) Какие там аннотации есть в этом ВАшем Русте мне насрать, если честно, не интересен мне Руст от слова совсем. Пока я лично с кодом на Русте в ядре не пересекался. И компилятор руста для сборки ядра мне, вроде бы, не нужен.

Ну пишут и пишут у себя в мирке, лишь бы остальным не мешали. В этом я с Линусом солидарен.

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

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

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

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