Nella mailing list degli sviluppatori del kernel Linux è ripreso un dibattito iniziato sei anni fa sulle prospettive dell'uso del codice moderno in C++ nel kernel Linux, oltre all'attuale utilizzo del linguaggio C con inserimenti in assembly e la promozione del linguaggio Rust. Inizialmente, l'argomento dello sviluppo del kernel in C++ è stato sollevato nel 2018 da un ingegnere di Red Hat, che il primo aprile ha pubblicato come scherzo un insieme di 45 patch per utilizzare template, classi ereditarie e sovraccarico di funzioni C++ nel codice del kernel.
Hans Peter Anvin, uno dei principali sviluppatori del kernel in Intel e creatore di progetti come syslinux, klibc e LANANA, ha proposto di continuare la discussione. Anvin ha sviluppato per il kernel Linux un sistema di automontaggio, un'implementazione RAID 6, il driver CPUID e x32 ABI. Secondo Anvin, che è autore di numerosi macro e inserimenti in assembly nel kernel, i linguaggi C e C++ hanno fatto notevoli progressi dal 1999 e il C++ è diventato più adatto del C per lo sviluppo di kernel di sistemi operativi.
Le funzionalità per le quali recentemente si era costretti a ricorrere a estensioni specifiche di GCC possono ora essere implementate facilmente in C++ standard, e in molti casi l'uso del C++ migliorerà l'infrastruttura senza modifiche globali al codice. Come minimo, viene menzionato l'uso della specifica C++14, che include gli strumenti necessari per la metaprogrammazione, e come auspicabile c'è l'uso della specifica C++20, che introduce il supporto per i concetti in grado di ridurre notevolmente gli errori.
Anvin ritiene che il C++ sia preferibile rispetto al Rust, poiché quest'ultimo differisce notevolmente dal C in termini di sintassi, è sconosciuto agli attuali sviluppatori del kernel e non consente una riscrittura graduale del codice (nel caso del C++, è possibile convertire il codice C in modo parziale, poiché il codice C può essere compilato come C++). A favore dell'uso del C++ nel kernel si sono espressi anche Jiri Slaby di SUSE e David Howells di Red Hat.
Fonte: opennet.ru
