Линус Торвальдс представит его в конце августа. Поговорим об изменениях — инженеры удалили устаревший IDE-драйвер, сделали шаги для принятия Rust в качестве официального инструмента разработки и обновили сетевые компоненты.

Unsplash / Dylan Shaw
Unsplash / Dylan Shaw

Сброс балласта

Из ядра уберут 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.

Unsplash / Aleza van der Werff
Unsplash / Aleza van der Werff

Еще разработчики модифицировали сетевой код ядра: расширили возможности генератора трафика pktgen — на 23% для одного потока и на 44% для двух потоков — и оптимизировали работу с Wi-Fi на частоте 6 ГГц. В прошлом году Федеральная комиссия по связи США открыла этот диапазон для беспроводных сетей.

Kernel 5.14 должен повысить производительность гостевых Linux-систем на гипервизоре Hyper-V и реализовать NVMe/TCP. По оценке сайта Phoronix, который освещает темы, связанные с развитием дистрибутивов Linux, последнее обновление может сократить нагрузку на CPU примерно на 15%. Также разработчики выпустили некоторое количество баг-фиксов. Среди них — исправление ошибок, связанных с общими папками в VirtualBox. В целом до релиза новой версии ядра остается месяц, за это время разработчики реализуют другие изменения, которые подготовят фундамент для дальнейшей оптимизации и развития ядра.


Материалы о работе провайдеров у нас на сайте:


У нас в блоге на Хабре:


Комментарии (27)


  1. AVX
    02.08.2021 22:24
    -6

    Из ядра уберут legacy-драйвер, обеспечивающий работу устройств с интерфейсом IDE/PATA

    Конец дистрибутивам, ориентированным на старые ПК? Вот как после этого ставить свежий дистрибутив какого-нибудь Puppyrus (или другой) с новым ядром на относительно старое железо? Или всё же этот драйвер в виде модуля оставят?


    1. GrigoryPerepechko
      02.08.2021 22:49
      +2

      libata же


    1. Chupaka
      02.08.2021 23:19
      +11

      Опускаемся на две ссылки вглубь и читаем:

      Before getting too emotional over your ribbon cables, this is not the removal of IDE support from the Linux kernel. Rather, this is only about the legacy IDE driver. IDE hardware support will remain available in the Linux kernel via the libata layer. The Linux kernel for years has used libATA as its preferred library for supporting ATA controllers and devices. There are libata-based drivers for all the popular hardware of the time while it's just the previous legacy IDE driver that is set to be removed from the kernel in two years time.


  1. NeoCode
    02.08.2021 23:23
    +2

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


    1. vvzvlad
      03.08.2021 00:13
      +4

      Потому что интерфейсы ядра меняются, например.


    1. chv
      03.08.2021 09:45
      +2

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


    1. lealxe
      03.08.2021 09:48
      +1

      Потому что не собор, а базар. В NetBSD, насколько я понимаю, обычно происходит, как вы описываете. Поэтому, имея меньше всего пользователей и разработчиков из *BSD, она до сих пор как-то ковыляет.


  1. rafuck
    03.08.2021 02:10
    +5

    Также стоит отметить, что в Linux будет поддержка ARM и RISC-V благодаря компоненту rustc_codgen_gcc…

    Непонятно, причем тут поддержка ARM и RISC-V. Во-первых, Linux и так поддерживает ARM. Во-вторых, это относится только к rust-коду, при чем тут Linux в целом? В третьих, данный компонент предназначен для того, чтобы код на rust можно было скомпилировать для платформ, поддерживаемых GCC. В общем, этот абзац, на мой взгляд, можно совсем выкинуть из заметки, кроме предложения о том, что в ядро скоро может будет писать на rust.


  1. pdragon
    03.08.2021 09:02
    -7

    А это не снизит производительность? Ну типа Раст или как его там, все таки си довольно низкоуровневый и оптимизированный годами, а эти ваши хипстерские новомодные языки не пойми что.


    1. red75prim
      03.08.2021 10:16
      +8

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


    1. tangro
      03.08.2021 10:32

      Раст тоже *может быть* низкоуровневым и оптимизированным. Не факт, что уже таковым является, но теоретически его таким можно сделать. Он не тянет за собой виртуальных машин, сборщиков мусора, в нём нет каких-то фундаментальных ограничений. Всё или уже работает быстро, или может быть оптимизировано и работать быстро в будущем.


      1. pdragon
        03.08.2021 13:10
        -4

        Тоесть получается чтобы сделать произвольное ядро от generic мне требуется знать 2 языка? Такой 20 лет патчи к ядру делал, а теперь с каждой новой версией будут добавлять новый язык который если не знаешь уволят? Охренительно, я в восторге...


        1. nihlete
          03.08.2021 13:46

          Поддержка раста не такая уж и богатая, есть встраивание в систему сборки и биндинги на C реализацию функций ядра. Linux headers никто разом не выкинул. Написали пример с драйвером для GPIO https://lwn.net/Articles/863459/. Приглашают энтузиастов пробовать разрабатывать собственные драйверы.


          а теперь с каждой новой версией будут добавлять новый язык который если не знаешь уволят?

          это ваши отношения с работодателем.


        1. tangro
          03.08.2021 14:43
          +4

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


          1. mx-yh
            03.08.2021 22:31

            на мой взгляд, "человек 20 лет писавший на Си", с удовольствием перейдет на Rust при появлении такой возможности.


            1. tangro
              04.08.2021 11:30

              Может быть да, а может быть и нет. Имея за плечами 20 лет на С, можно уже любой проект на С делать с закрытыми глазами, а с Rust дело, возможно, пойдёт, а возможно и нет. Тем, у кого есть 20 лет опыта, уже за 40 лет, не всем в этом возрасте хочется прыгать в незнакомый омут.


    1. IkaR49
      03.08.2021 10:35
      +2

      Ну, так-то и на расте с помощью ансейф-магии можно получать тот же ассемблерный выход, что и на си, но предлагаю не холливарить на тему "а нафига тогда оно надо".

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


    1. KGeist
      03.08.2021 12:32
      +2

      В Си из-за aliasing'а (когда разные переменные ссылаются на один тот же участок памяти, часто с разным представлением типов) нет возможности компилятору использовать все возможные агрессивные оптимизации по максимуму, т.к. нет гарантий, что оптимизация не нарушит каких-то инвариантов. Поэтому в теории (и иногда на практике) Rust может быть быстрее Си.


      1. pdragon
        03.08.2021 13:16
        -3

        Надо будет почитать что за раст такой этот, он что реально лучше чем си в плане оптимизации скорости работы?
        Тут голанг не успел появится, расты всякие понапридумывали, вот же молодёжь не усидчивая, раньше было лучше: С С++ C# Java и Python для скриптов автоматизации было за глаза. А потом устроится никуда не получается ибо надо знать или 100500+ языков, но посредственно ибо не обхватить все за такое время или 3-4 и искать полтора объявления.


        1. DreamingKitten
          03.08.2021 13:46
          +5

          И расту и голангу уже более 10 лет.


          1. YouROK
            05.08.2021 09:09

            Хотел написать, офигеть как время быстро летит, недавно ставил go 1.2 на комп для изучения, а тут уже больше 10 лет прошло. Пошел смотреть в вики и там

            go 1 — 28 марта 2012 года — Первая официальная версия; зафиксированы библиотеки, внесены изменения в синтаксис.

            Так что в следующем году юбилей


        1. gryberg
          05.08.2021 07:29

          "Раньше" у Вас где-то в середине застряло, где-то после "похорон" Perl и до рождения Rust.


  1. Gorthauer87
    03.08.2021 12:44

    Так ведь пока еще не приняли PR с поддержкой Раста и эта эпопея может затянуться. Это же, блин, первый ЯП, кроме Си, на котором можно будет официально писать модули ядра.


  1. Kreastr
    03.08.2021 18:18

    Хм. Вангую боль и страдания пользователям генту, сидящем на старом железе, лет эдак через 5, когда без компилятора раста не получится собрать половину модулей ядра, а собрать раст не получится без 16+ Гб оперативки и 100500 ядер. Надеюсь, что будет вообще хоть какой-то способ собирать линукс без раста дальше. Пусть и не с полным клмплектом драйверов.


    1. DreamingKitten
      03.08.2021 21:56
      +3

      Не волнуйтесь вы так за нас, в генте есть бинарный дистрибутив раста :)


    1. RarogCmex
      03.08.2021 21:58
      +1

      Есть dev-lang/rust-bin, прекомпилированный пакет с растом специально для таких, как Вы.


    1. IkaR49
      04.08.2021 12:20
      +1

      Собираю свои пет проекты на расте на нетбуке с intel atom n280 внутри. Не скажу, что это прям комфортно, но и особой боли не вызывает. Вот современные браузеры - вот они действительно вызывают боль)