In der Mailingliste der Linux-Kernel-Entwickler wurde die vor sechs Jahren begonnene Diskussion über die Möglichkeiten der Verwendung moderner C++-Code im Linux-Kernel wieder aufgenommen, zusätzlich zur derzeitigen Verwendung der Programmiersprache C mit Assembler-Einfügungen und der Förderung der Programmiersprache Rust. Ursprünglich wurde das Thema der Kernel-Entwicklung in C++ 2018 von einem Ingenieur von Red Hat angesprochen, der am ersten April als Scherz ein Set von 45 Patches veröffentlichte, um Vorlagen, abgeleitete Klassen und Methodenüberladung von C++ im Kerncode zu verwenden.
Hans Peter Anvin, einer der Hauptentwickler des Kernels bei Intel und Schöpfer von Projekten wie syslinux, klibc und LANANA, hat die Initiative zur Fortsetzung der Diskussion vorgeschlagen. Anvin hat ein Automount-System für den Linux-Kernel entwickelt, die RAID-6-Implementierung, den CPUID-Treiber und die x32 ABI. Laut Anvin, der zahlreiche Makros und Assembler-Einfügungen im Kernel erstellt hat, haben sich die Programmiersprachen C und C++ seit 1999 erheblich weiterentwickelt, und C++ ist besser geeignet als C für die Entwicklung von Betriebssystemkernen.
Funktionen, für die man früher spezielle GCC-Erweiterungen benötigte, lassen sich nun problemlos in standardisiertem C++ umsetzen. In vielen Fällen ermöglicht die Nutzung von C++, die Infrastruktur zu verbessern, ohne den Code grundlegend zu ändern. Die Verwendung der C++14-Spezifikation wird als Minimum genannt, da sie die erforderlichen Metaprogrammierungswerkzeuge enthält, während die C++20-Spezifikation wünschenswert ist, da sie Unterstützung für Konzepte bietet, die viele Fehler ausschließen können.
Anvin ist der Meinung, dass C++ gegenüber Rust vorzuziehen ist, da letzteres sich erheblich vom C-Syntax unterscheidet, für aktuelle Kernentwickler ungewohnt ist und nicht ermöglicht, den Code schrittweise neu zu schreiben (im Fall von C++ kann C-Code portionsweise in C++ übersetzt werden, da C-Code als C++ kompiliert werden kann). Auch Jiri Slaby von SUSE und David Howells von Red Hat haben sich für die Verwendung von C++ im Kernel ausgesprochen.
Quelle: opennet.ru
