Как стать автором
Обновить

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

Время на прочтение4 мин
Количество просмотров33K

Линус Торвальдс в частном порядке заявил, что продолжит добавлять в свой проект код Rust. Эти действия будут происходить несмотря на возражения многих мейнтейнеров ядра Linux против кода Rust, фактически сделав принятие Rust неизбежным для всех участников сообщества.

Сопровождающий ядра Linux Кристоф Хеллвиг пояснил, что продолжает решительно выступать против Rust в ядре Linux, утверждая, что его внедрение создаёт фрагментацию, неясные языковые правила и дополнительную нагрузку на мейнтейнеров. По его мнению, разработчики некоторых подсистем должны сами решить, что им не нужен код Rust на данный момент, как правило, из‑за проблем с пропускной способностью. Это нормально и ожидаемо.

В то же время Торвальдс в частном порядке уточнил Хеллвигу и другим участникам проекта, что обязательно объединит ветки кода с Rust. «Так что на данный момент, как разработчик или сопровождающий Linux, вы должны иметь дело с Rust, хотите вы этого или нет. Сейчас правила таковы, что Линус может заставить вас сделать всё, что захочет. Это, очевидно, его проект, и я думаю, ему нужно очень четко это изложить, включая ожидания для участников», — пояснил Хеллвиг.

Разве мы не оказываем медвежью услугу как раз тем, кто пытается перенести существующую кодовую базу в лучшее, более безопасное пространство, так и разработчикам, занимающимся системным программированием на Rust?

При работе с такой кодовой базой это стало моим худшим кошмаром, потому что постоянно приходится переписывать части с языка A на язык B по причине X, а затем обратно по причине Z. И это без обычного «творческого» процесса Linux, когда мейнтейнеры борются друг с другом.

Я хотел бы понять, в чём заключается цель этого «эксперимента» Rust: если мы хотим исправить существующие проблемы с безопасностью памяти, нам нужно сделать это для существующего кода и найти способы его модернизации. В последнее время в это было вложено много работы, и нам нужно сделать гораздо больше. Но это также показывает, как основных мейнтейнеров отпугивают тривиальные вещи, такие как проверка на переполнение целочисленных значений или принудительная синхронизация компилятора (как в clang thread sanitizer). Как мы собираемся преодолеть разрыв между частью ядра, которая даже не принимает относительно простые правила для улучшения безопасности, и другой, которая применяет даже строгие правила?

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

Что касается меня, то я могу справиться и справляюсь с самим Rust. Лично мне бы хотелось перенести ядро ​​в более безопасную для памяти платформу, но работа с неконтролируемой многоязыковой кодовой базой — это довольно верный способ заставить меня тратить своё свободное время на что-то другое. Я слышал, как несколько других разработчиков также тихо бормочут что-то подобное, но не все столь откровенны.

В августе 2024 года Торвальдс рассказал, что он разочарован тем, как медленно идёт внедрение Rust в ядро Linux. По его мнению, многие разработчики не заинтересованы в изучении Rust. И он добавил, что тоже не использует Rust, но может его читать. «Я ожидал, что обновления будут быстрее, но часть проблемы в том, что старые разработчики ядра привыкли к C и не знают Rust. Они не в восторге от необходимости изучать новый язык, который в некоторых отношениях сильно отличается. Поэтому Rust встретил некоторое сопротивление», — пояснил Торвальдс.

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

В начале сентября 2024 года команда разработчиков проекта по внедрению Rust для ядра Linux потерпела поражение в сражении с разработчиками на С. Лидер Rust для Linux объявил, что уходит из проекта из‑за «нетехнической ерунды» (nontechnical nonsense). Он пояснил, что возглавлял команду уже 4 года, но у него нет того энтузиазма, который был ранее, чтобы продолжать отстаивать место Rust в ядре, которое в основном написано на C.

Некоторые предпочитают Rust, потому что он безопасен для памяти. Безопасный для памяти код устраняет такие проблемы, как переполнение буфера и зависшие указатели, уменьшая количество ошибок в ПО, и имеет меньше уязвимостей в безопасности системы, которыми могут воспользоваться хакеры. Безопасность памяти — это главный аргумент Rust, и это одна из причин, по которой этот язык так активно продвигают его сторонники. Это также одна из причин, по которой некоторые разработчики и мейнтейнеры хотят, чтобы Linux был написан на Rust, однако эти усилия последнее время встречают всё больше сопротивления.

Теги:
Хабы:
Всего голосов 34: ↑33 и ↓1+39
Комментарии212

Другие новости

Работа

Ближайшие события