В Linux 6.19 появится поддержка Microsoft C Extensions — спустя 20 лет после первого предложения
Новости
Впервые о подобном попросили еще в 2007 году
965 открытий5К показов
Уже в следующем релизе ядра Linux появится то, чего не было все время существования проекта: поддержка Microsoft C Extensions.
Два патча с этой функцией уже добавлены в ветку kbuild-next, которая отвечает за сборочную систему ядра. И, по всей видимости, они попадут в окно слияния Linux 6.19.
Что изменится
Патчи включают глобальный флаг компиляции -fms-extensions для GCC и Clang.
Эта опция активирует нестандартные расширения C, поддерживаемые компилятором Microsoft Visual C/C++. Например, возможность анонимно встраивать структуры и объединения (struct/union) друг в друга.
Для разработчиков ядра это значит, что можно будет писать «более элегантный код» и в некоторых случаях даже экономить место в стеке.
Почему это важно
Ранее предложения включить -fms-extensions всплывали в рассылках разработчиков ядра не раз. Первые упоминания датируются еще 2007 годом. Но все это время они так и не доходили до релиза.
Теперь же, когда патчи уже в kbuild-next, их шансы попасть в мейнлайн выше, чем когда-либо.
Разработчик Расмус Виллемоэс, предложивший изменение, объясняет:
«Каждый раз, когда обсуждается включение -fms-extensions, выясняется, что код можно написать и без него. И получается «не слишком ужасно». Но если, как говорит Линус, просто стиснуть зубы и включить этот флаг раз и навсегда, он будет доступен всякий раз, когда ему найдется применение. И отдельным примерам не придется оправдывать его использование».
Что думает Линус Торвальдс
Сам Торвальдс, судя по его последним комментариям в рассылке, не возражает против включения Microsoft C Extensions в Linux 6.19.
Это довольно символично: ядро, десятилетиями противопоставлявшее себя экосистеме Microsoft, теперь официально допускает поведение компилятора из Visual Studio.
Что это даст разработчикам
- возможность использовать вложенные структуры без явных имен;
- немного чище и компактнее код в ряде подсистем;
- унификацию сборки под GCC и Clang;
- потенциальное упрощение кроссплатформенных драйверов и библиотек.
Не всем идея нравится — часть разработчиков считает неправильным позволять «поведение Microsoft» в коде ядра Linux.
Но если патчи пройдут ревью, то начиная с Linux 6.19 в ядре впервые официально появится поддержка расширений языка C из Visual Studio — шаг, о котором 15 лет назад в рассылке ядра даже не мечтали.
965 открытий5К показов



