Линус Торвальдс представит его в конце августа. Поговорим об изменениях — инженеры удалили устаревший IDE-драйвер, сделали шаги для принятия Rust в качестве официального инструмента разработки и обновили сетевые компоненты.
Сброс балласта
Из ядра уберут legacy-драйвер, обеспечивающий работу устройств с интерфейсом IDE/PATA — оптических дисководов, жестких дисков и «флоповодов». Кодовая база сократится на 41 тыс. строк. Команда давно планировала удалить код, связанный с работой IDE. Инженеры считают, что стандарт устарел и его поддержка не имеет смысла — тот же SATA предлагает более высокую скорость обмена данными и возможность «горячей замены» накопителей — поэтому еще два года назад они пометили соответствующий драйвер флагом deprecated и прекратили развитие.
Продолжить работу со старыми устройствами можно будет благодаря библиотеке libATA. Она остается частью ядра и реализует API драйверов ATA. По словам Кристофа Хеллвига, который занимается развитием kernel 5.14, libATA использует большинство дистрибутивов, и у остальных не должно возникнуть сложностей с переходом. Однако стоит отметить, что в библиотеке нет драйверов для семейства микропроцессоров m68k, хотя эту ситуацию планируют исправить силами комьюнити.
Старые драйвера не единственное, что могут «вырезать» из ядра. Идут разговоры о прекращении поддержки процессоров, давно не получавших обновления. В список на удаление попали десятки чипов, в том числе ARM Footbridge и MIPS Cobalt.
Время «ржавчины»
Еще одно нововведение — признание Rust официальным инструментом разработки ядра (наравне с C). В kernel 5.14 появятся необходимые обновления. Инициативу продвигает Google — по словам его представителей, язык сократит число ошибок памяти, которые составляют 70% баг-фиксов в открытых проектах.
Также стоит отметить, что в Linux будет поддержка ARM и RISC-V благодаря компоненту rustc_codgen_gcc. Это — генератор кода GCC для компилятора rustc. Последний выполняет компиляцию Rust-кода, а GCC — backend-компиляцию, что дает возможность работать с новыми архитектурами. Участники сообщества уже предлагают внедрить аналогичную функциональность на уровне языка, однако такой подход может привести к конфликту лицензий. Дело в том, что Rust использует MIT License и Apache v2, а GCC — GPLv3. Хотя представитель The Rust Foundation в треде на GitHub сообщил, что лицензии совместимы, поэтому можно предположить, что разработчики языка предпримут шаги в этом направлении.
Сетевые улучшения
По словам Линуса Торвальдса, в kernel 5.14 упор был сделан на работу с драйверами, поэтому будет добавлена поддержка новых сетевых компонентов. Среди них — модем M.2 для мобильных компьютеров от Intel, адаптер MikroTik 10G/25G, а также модули Qualcomm QCN9074 и WCN6855.
Еще разработчики модифицировали сетевой код ядра: расширили возможности генератора трафика pktgen — на 23% для одного потока и на 44% для двух потоков — и оптимизировали работу с Wi-Fi на частоте 6 ГГц. В прошлом году Федеральная комиссия по связи США открыла этот диапазон для беспроводных сетей.
Kernel 5.14 должен повысить производительность гостевых Linux-систем на гипервизоре Hyper-V и реализовать NVMe/TCP. По оценке сайта Phoronix, который освещает темы, связанные с развитием дистрибутивов Linux, последнее обновление может сократить нагрузку на CPU примерно на 15%. Также разработчики выпустили некоторое количество баг-фиксов. Среди них — исправление ошибок, связанных с общими папками в VirtualBox. В целом до релиза новой версии ядра остается месяц, за это время разработчики реализуют другие изменения, которые подготовят фундамент для дальнейшей оптимизации и развития ядра.
Материалы о работе провайдеров у нас на сайте:
У нас в блоге на Хабре:
Протокол IPFS — будущее интернета или еще одна «проходная» технология
Что почитать об инфраструктуре провайдеров, протоколах и системах связи
Комментарии (27)
NeoCode
02.08.2021 23:23+2Вообще, необходимость удаления кода ввиду отсутствия поддержки это печально и указывает на недостаточный уровень модульности ядра. Если код один раз написан в соответствии с некоторым интерфейсом ядра, отлажен и работает — то зачем его вообще поддерживать?
chv
03.08.2021 09:45+2Изменчивость интерфейса ядра для модулей — это осознанное архитектурное решение в Linux. Именно по этой причине на самом деле нужные модули стараются держать внутри ядра, что делает процесс разработки гибче.
lealxe
03.08.2021 09:48+1Потому что не собор, а базар. В NetBSD, насколько я понимаю, обычно происходит, как вы описываете. Поэтому, имея меньше всего пользователей и разработчиков из *BSD, она до сих пор как-то ковыляет.
rafuck
03.08.2021 02:10+5Также стоит отметить, что в Linux будет поддержка ARM и RISC-V благодаря компоненту rustc_codgen_gcc…
Непонятно, причем тут поддержка ARM и RISC-V. Во-первых, Linux и так поддерживает ARM. Во-вторых, это относится только к rust-коду, при чем тут Linux в целом? В третьих, данный компонент предназначен для того, чтобы код на rust можно было скомпилировать для платформ, поддерживаемых GCC. В общем, этот абзац, на мой взгляд, можно совсем выкинуть из заметки, кроме предложения о том, что в ядро скоро может будет писать на rust.
pdragon
03.08.2021 09:02-7А это не снизит производительность? Ну типа Раст или как его там, все таки си довольно низкоуровневый и оптимизированный годами, а эти ваши хипстерские новомодные языки не пойми что.
red75prim
03.08.2021 10:16+8Первый раз за 30 лет в ядро добавляют поддержку нового языка. Я хотя бы из любопытства посмотрел, что же это за такой хипстерский язычок.
tangro
03.08.2021 10:32Раст тоже *может быть* низкоуровневым и оптимизированным. Не факт, что уже таковым является, но теоретически его таким можно сделать. Он не тянет за собой виртуальных машин, сборщиков мусора, в нём нет каких-то фундаментальных ограничений. Всё или уже работает быстро, или может быть оптимизировано и работать быстро в будущем.
pdragon
03.08.2021 13:10-4Тоесть получается чтобы сделать произвольное ядро от generic мне требуется знать 2 языка? Такой 20 лет патчи к ядру делал, а теперь с каждой новой версией будут добавлять новый язык который если не знаешь уволят? Охренительно, я в восторге...
nihlete
03.08.2021 13:46Поддержка раста не такая уж и богатая, есть встраивание в систему сборки и биндинги на C реализацию функций ядра. Linux headers никто разом не выкинул. Написали пример с драйвером для GPIO https://lwn.net/Articles/863459/. Приглашают энтузиастов пробовать разрабатывать собственные драйверы.
а теперь с каждой новой версией будут добавлять новый язык который если не знаешь уволят?
это ваши отношения с работодателем.
tangro
03.08.2021 14:43+4Нет, конечно. Подавляющее большинство кода и ядра, и драйверов всё так же будет на С. Просто в определённых местах, возможно, люди захотят использовать Rust. Вот решит производитель какого-то железа, что ему важно качество продукта и потребует драйвер для него написать на Rust. Ну, в таком случае да, тот, кто 20 лет сидел в танке и писал на одном С, такой проект не получит.
mx-yh
03.08.2021 22:31на мой взгляд, "человек 20 лет писавший на Си", с удовольствием перейдет на Rust при появлении такой возможности.
tangro
04.08.2021 11:30Может быть да, а может быть и нет. Имея за плечами 20 лет на С, можно уже любой проект на С делать с закрытыми глазами, а с Rust дело, возможно, пойдёт, а возможно и нет. Тем, у кого есть 20 лет опыта, уже за 40 лет, не всем в этом возрасте хочется прыгать в незнакомый омут.
IkaR49
03.08.2021 10:35+2Ну, так-то и на расте с помощью ансейф-магии можно получать тот же ассемблерный выход, что и на си, но предлагаю не холливарить на тему "а нафига тогда оно надо".
Главное, что это только добавит возможность писать модули на расте, поэтому производительности существующего кода ничего не будет. А производительность создаваемых расто-модулей будет зависеть только от их разработчиков.
KGeist
03.08.2021 12:32+2В Си из-за aliasing'а (когда разные переменные ссылаются на один тот же участок памяти, часто с разным представлением типов) нет возможности компилятору использовать все возможные агрессивные оптимизации по максимуму, т.к. нет гарантий, что оптимизация не нарушит каких-то инвариантов. Поэтому в теории (и иногда на практике) Rust может быть быстрее Си.
pdragon
03.08.2021 13:16-3Надо будет почитать что за раст такой этот, он что реально лучше чем си в плане оптимизации скорости работы?
Тут голанг не успел появится, расты всякие понапридумывали, вот же молодёжь не усидчивая, раньше было лучше: С С++ C# Java и Python для скриптов автоматизации было за глаза. А потом устроится никуда не получается ибо надо знать или 100500+ языков, но посредственно ибо не обхватить все за такое время или 3-4 и искать полтора объявления.DreamingKitten
03.08.2021 13:46+5И расту и голангу уже более 10 лет.
YouROK
05.08.2021 09:09Хотел написать, офигеть как время быстро летит, недавно ставил go 1.2 на комп для изучения, а тут уже больше 10 лет прошло. Пошел смотреть в вики и там
go 1 — 28 марта 2012 года — Первая официальная версия; зафиксированы библиотеки, внесены изменения в синтаксис.
Так что в следующем году юбилей
gryberg
05.08.2021 07:29"Раньше" у Вас где-то в середине застряло, где-то после "похорон" Perl и до рождения Rust.
Gorthauer87
03.08.2021 12:44Так ведь пока еще не приняли PR с поддержкой Раста и эта эпопея может затянуться. Это же, блин, первый ЯП, кроме Си, на котором можно будет официально писать модули ядра.
Kreastr
03.08.2021 18:18Хм. Вангую боль и страдания пользователям генту, сидящем на старом железе, лет эдак через 5, когда без компилятора раста не получится собрать половину модулей ядра, а собрать раст не получится без 16+ Гб оперативки и 100500 ядер. Надеюсь, что будет вообще хоть какой-то способ собирать линукс без раста дальше. Пусть и не с полным клмплектом драйверов.
DreamingKitten
03.08.2021 21:56+3Не волнуйтесь вы так за нас, в генте есть бинарный дистрибутив раста :)
RarogCmex
03.08.2021 21:58+1Есть dev-lang/rust-bin, прекомпилированный пакет с растом специально для таких, как Вы.
IkaR49
04.08.2021 12:20+1Собираю свои пет проекты на расте на нетбуке с intel atom n280 внутри. Не скажу, что это прям комфортно, но и особой боли не вызывает. Вот современные браузеры - вот они действительно вызывают боль)
AVX
Конец дистрибутивам, ориентированным на старые ПК? Вот как после этого ставить свежий дистрибутив какого-нибудь Puppyrus (или другой) с новым ядром на относительно старое железо? Или всё же этот драйвер в виде модуля оставят?
GrigoryPerepechko
libata же
Chupaka
Опускаемся на две ссылки вглубь и читаем: