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-битово ядро ​​и прилагането на endian преобразуване.

сега, почти след 6 години от това, Ханс Петер Анвин, ключов разработчик на ядрото на Intel и създател на проекти като syslinux, klibc и LANANA, пое инициативата за продължаване на дискусията. Според Anvin от 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++ в бъдеще.

най-накрая, ако сте заинтересовани да научите повече за това, можете да проверите подробностите в следваща връзка.