C++ a Linux, el tema es revifa després de 6 anys

Linux C++

S'ha tornat a proposar ell va usar de C++ a Linux

Tal sembla que la introducció de Rust com a segon llenguatge de programació al Kernel de Linux ha representat un dels canvis més importants que ha tingut Linux i no parlant en l'àmbit de característiques i funcionalitats, sinó que ha marcat un punt de partida molt important com Linus torvalds i l'equip de desenvolupament han fet un pas significatiu cap a la modernització de Linux per bé.

Això es pot notar, ja que fa poc, a les llistes de correu del nucli de Linux s'ha revifat una discussió que va ser iniciada fa sis anys, presentant de broma un 1 d'abril del 2018.

I és que novament s'ha tornat a posar sobre la taula l'assumpte sobre «la viabilitat d'adoptar el codi C++ modern al nucli de Linux», anant més enllà del tradicional ús del llenguatge C amb fragments d'assemblador i la promoció del llenguatge Rust.

La proposta inicial va ser llançada el 2018, per un enginyer de Red Hat a manera de broma per la ja coneguda celebració d'april's fool, en la qual molts aprofiten per crear bromes a la comunitat i en aquell moment va ser així, ja que suposadament havia llançat un conjunt de 45 pegats que incloïen l'ús de plantilles, herència de classes i sobrecàrrega de funcions de C++.

Al meu entendre, C++ 14 és la versió “mínima” que té un suport de metaprogramació raonable i té la majoria sense els tipus de versions anteriors (C++ 11 tenia la majoria, però C++ 14 completa algunes peces clau mancants). No obstant això, al meu entendre, C++20 és realment el canvi de joc més gran; Tot i que les versions anteriors podien executar molts hacks de SFINAE, també donaven missatges derror absolutament inútils.

Fem molta metaprogramació al nucli de Linux, implementada mitjançant trucs de macros sovint realment horribles. Aquests també són pràcticament impossibles de depurar. Prenguem l'exemple dels hacks de tipus uaccess.h, alguns dels quals vaig dissenyar i escriure. A C++, es poden dividir diferents conversions i declaracions de casos en instàncies de plantilla separades i, amb una mica d'enginy, també es poden aplicar estrictament coses com els punters d'espai d'usuari versus els punters d'espai d'usuari del nucli, així com els punters despai dusuari ja marcats, versus aquells que no ho són, sense esmentar el fàcil maneig del cas de tipus despai dusuari de 32 bits en un kernel de 64 bits i laplicació de la conversió endian.

Ara, gairebé després de 6 anys, Hans Peter Anvin, un desenvolupador clau del nucli d'Intel i creador de projectes com syslinux, klibc i LANANA, ha reprès la iniciativa de continuar la discussió. Segons Anvin, des del 1999, els llenguatges C i C++ han experimentat avenços significatius en el seu desenvolupament, i el llenguatge C++ ha demostrat ser més adequat que C per al desenvolupament del nucli de sistemes operatius.

Anvin esmenta que les funcions que abans requerien extensions específiques de GCC, ara es poden implementar fàcilment en C++ estàndard, i en molts casos, l'ús de C++ millorarà la infraestructura sense canviar completament el codi.

A més d'això, es proposa utilitzar almenys l'especificació C++ 14, que inclou eines de metaprogramació, i s'encoratja l'ús de l'especificació C++ 20, que introdueix suport per a conceptes que poden reduir la incidència d'errors.

S'argumenta que C++ és més preferible que el Rust, ja que aquest últim difereix significativament en sintaxi del llenguatge C, és poc comú per als desenvolupadors actuals del nucli i no permet la reescriptura gradual del codi. En el cas del llenguatge C++, és possible traduir parts del codi del llenguatge C gradualment, semblant a com es pot compilar el codi C com a C++.

Si bé, el kernel de Linux és principalment codi C amb diverses parts escrites en assemblador i un treball creixent al voltant del suport de Rust al kernel de Linux, encara no és clar si hi ha prou pes perquè això sigui una realitat, sobre la possibilitat de veure el codi C del nucli de Linux convertit a C++ en el futur.

Finalment si estàs interessat a poder conèixer més sobre això, Pots consultar els detalls al següent enllaç.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: AB Internet Networks 2008 SL
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.