Na liście mailingowej deweloperów jądra Linux wznowiono rozpoczętą sześć lat temu dyskusję na temat możliwości zastosowania nowoczesnego kodu w C++ w jądrze Linux, obok obecnego wykorzystania języka C z wstawkami asemblerowymi oraz promowania języka Rust. Początkowo temat rozwoju jądra w C++ został poruszony w 2018 roku przez inżyniera z Red Hat, który 1 kwietnia, w żartach, opublikował zestaw 45 poprawek do wykorzystania szablonów, dziedzicznych klas i przeciążania funkcji C++ w kodzie jądra.
Z inicjatywą kontynuacji dyskusji wystąpił Hans Peter Anvin, jeden z kluczowych deweloperów jądra w firmie Intel oraz twórca takich projektów jak syslinux, klibc i LANANA. Opracował system automontowania dla jądra Linux, implementację RAID 6, sterownik CPUID i x32 ABI. W opinii Anvina, który jest autorem licznych makr i wstawek asemblerowych w jądrze, od 1999 roku języki C i C++ znacznie posunęły się naprzód w swoim rozwoju, a język C++ stał się lepszy od C i bardziej odpowiedni do tworzenia jąder systemów operacyjnych.
Możliwości, które jeszcze niedawno wymagały szczególnych rozszerzeń GCC, teraz są łatwe do zrealizowania w standardowym C++, a w wielu przypadkach użycie C++ pozwoli poprawić infrastrukturę bez globalnych zmian w kodzie. Minimalnie wspomniano o wykorzystaniu specyfikacji C++14, która zawiera niezbędne narzędzia do metaprogramowania, a pożądana jest specyfikacja C++20, w której dodano wsparcie dla koncepcji zdolnych do wyeliminowania wielu błędów.
Anvin uważa, że C++ jest bardziej preferowane niż Rust, ponieważ ten ostatni zasadniczo różni się od języka C pod względem składni, jest obcy dla obecnych deweloperów jądra i nie pozwala na stopniowe przepisywanie kodu (w przypadku języka C++ można etapowo konwertować kod z C, ponieważ kod C można kompilować jako C++). Na poparcie używania C++ w jądrze wystąpili również Jiri Slaby z firmy SUSE oraz David Howells z Red Hat.
Źródło: opennet.ru
