Торвальдс снова зол. Создатель Linux публично раскритиковал форматирование Rust-кода и небрежность разработчиков в pull-request

Торвальдс снова зол. Создатель Linux публично раскритиковал форматирование Rust-кода и небрежность разработчиков в pull-request

Он объяснил, почему rustfmt его бесит.

image

Создатель Linux Линус Торвальдс вновь публично раскритиковал разработчиков, на этот раз обратив внимание на форматирование текста и кода на Rust. Если накануне он заявил, что поддержка big endian для RISC-V в ядре Linux не планируется, то сегодня речь пошла о «безумном» стиле форматирования в Rust и небрежных пояснениях в заявках.

Поводом стало очередное pull-request для DRM-подсистемы, присланное на рассмотрение. Торвальдс отметил, что текст выглядит как «бессистемный набор слов», в котором потерялась исходная структура.

«Заметьте, там есть несколько под-разделов: Alloc, DMA/Scatterlist, DRM и Rust. Но всё это в случайной куче, потому что вы, видимо, просто вставили это в редактор или MUA и потеряли отступы», — написал он.

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

После этого внимание перешло к Rust-коду, который появился в ядре с версии 6.18. Торвальдс отметил, что форматирование директив use вызывает у него серьёзные нарекания.

«Я ненавижу бессмысленную и совершенно безумную проверку rustfmt. Я привёл несколько use crate::xyz; к более аккуратной записи в блоке, чтобы легко добавлять новые строки. Но rustfmtcheck превратил это в сжатую однострочную запись, и я не понимаю, какие вообще у него эвристики», — заявил он.

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

Особенно его возмутила непоследовательность правил: в одних случаях инструмент настаивает на многострочном формате, в других — на компактной записи, что, по его словам, «создаёт путаницу и раздражает».

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

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

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

Полная переписка доступна в LKML.