C++ на Linux, тема возрождена спустя 6 лет

Linux C ++

Снова предложено использовать C++ в Linux.

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

Это можно отметить, поскольку в последнее время в списках рассылки ядра Linux дискуссия возобновилась который стартовал шесть лет назад, в шутку представив 1 апреля 2018 года.

И его снова положили на стол. вопрос «о возможности внедрения современного кода C++ в ядро ​​Linux», выходя за рамки традиционного использования языка C с фрагментами ассемблера и продвижения языка Rust.

Первоначальное предложение было запущено в 2018 году. инженером Red Hat как шутку для всем известного первоапрельского праздника, на котором многие пользуются возможностью разыграть сообщество и на тот момент оно было именно таким, поскольку якобы выпустили набор из 45 патчей, включающих в себя использование шаблонов, наследование классов и перегрузка функций C++.

По моему мнению, C++14 — это «минимальная» версия, которая имеет разумную поддержку метапрограммирования и в ней отсутствует большинство типов из предыдущих версий (в C++11 их было больше всего, но C++14 заполняет некоторые ключевые недостающие части). Однако, по моему мнению, C++20 действительно меняет правила игры; Хотя предыдущие версии могли выполнять множество взломов SFINAE, они также выдавали абсолютно бесполезные сообщения об ошибках.

Мы много занимаемся метапрограммированием в ядре Linux, реализуя его с использованием зачастую действительно ужасных макро-трюков. Их также практически невозможно отладить. Давайте возьмем пример хаков типа uaccess.h, некоторые из которых я разработал и написал. В C++ различные операторы приведения и случая могут быть разделены на отдельные экземпляры шаблона, и, проявив немного изобретательности, можно строго соблюдать такие вещи, как указатели пользовательского пространства в сравнении с указателями пользовательского пространства ядра, а также уже отмеченные указатели пользовательского пространства в сравнении с теми, которые не являются таковыми. не говоря уже о простой обработке случаев 32-битных типов пользовательского пространства в 64-битном ядре и применении преобразования байтов.

Сейчас почти через 6 лет Ханс Петер Анвин, ключевой разработчик ядра Intel и создатель таких проектов, как syslinux, klibc и LANANA, взял на себя инициативу продолжить дискуссию. По словам Анвина, с 1999 года языки C и C++ значительно продвинулись в своем развитии, и язык C++ оказался более подходящим, чем C, для разработки ядра операционной системы.

Анвин упоминает, что функции, которые ранее требовали определенных расширений из GCC, теперь можно легко реализовать на стандартном C++, и во многих случаях использование C++ улучшит инфраструктуру без необходимости полного изменения кода.

В дополнение к этому, Предлагается использовать как минимум спецификацию C++ 14, который включает в себя инструменты метапрограммирования, а также поощряется использование спецификации C++ 20, которая обеспечивает поддержку концепций, которые могут уменьшить количество ошибок.

Утверждается, что C++ предпочтительнее Rust., поскольку последний существенно отличается по синтаксису от языка C, является редкостью для нынешних разработчиков ядра и не позволяет постепенно переписывать код. В случае языка C++ можно постепенно переводить части кода языка C, аналогично тому, как код C можно скомпилировать как C++.

Хотя ядро ​​Linux в основном представляет собой код C с различными частями, написанными на ассемблере, и ведется работа над поддержкой Rust в ядре Linux, до сих пор неясно, достаточно ли веса для того, чтобы это стало реальностью, относительно возможности увидеть код C ядра Linux. в будущем преобразуется в C++.

наконец, если вы интересно узнать об этом больше, вы можете проверить подробности в по следующей ссылке.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.