Overslaan en naar de inhoud gaan

Linux-kernel ondergaat moderniseringsslag

Linus Torvalds heeft besloten voor het programmeren aan de kern van het Linux-besturingssysteem over te stappen naar een nieuwe variant van C. Nieuw is relatief, want C11 is inmiddels ook al 12 jaar oud.
Linus
© Linus Torvalds
Linus Torvalds

De kernel van Linux is geschreven in C. Maar C heeft een groot aantal varianten van herzieningen van de standaard uit 1989, die nu wordt aangeduid als C89. Inmiddels is er ook al een C23-herziening in de maak, waarover komend jaar wordt gestemd. Zo modern is de Linux-kernel echter niet. Sterker nog, Linus Torvalds heeft altijd vastgehouden aan de C89-standaard.

Daar komt nu verandering is, meldt ZDNet. Er vindt een overschakeling plaats naar C11 (uit 2011). Maar Linus Torvalds kwam eerst met een minder vergaande opwaardering.

De reden dat de al jarenlange discussie in het team nu toch tot een verandering leidt, is dat Torvalds stuitte op een beveiligingsprobleem dat alleen viel op te lossen door een zijpaadje in te bouwen. Of in de woorden van Torvalds: We hebben historisch gezien geen mogelijkheden om 'C99-style declare variables in loops' te gebruiken. Dus bij ' list_for_each_entry() - en alle anderen' - lekt per definitie altijd de laatste HEAD-entry uit de loop, eenvoudigweg omdat we de interator variable niet in de loop zelf kunnen vastleggen."

Gelijk maar doorstoten

Dus, zegt Torvalds, is de tijd aangebroken om te kijken naar een overgang naar de C99 standaard - die is nog altijd 20 jaar oud maar heeft in ieder geval genoeg mogelijkheden voor het gebruik van 'block-level variable declarations'." De aanpassing is geen dramatische verandering, stelt ZDNet. C89 wordt nog nagenoeg overal ondersteund. Elke C compiler kan overweg met eerdere versies.

Maar daarop gingen gelijk stemmen op om dan maar door te stoten naar de wat recentere versie C11. Volgens Linux kernel developer, Arnd Bergmann is C99 namelijk nooit erg populair geweest. C11 biedt bovendien ondersteuning voor gestandaardiseerde multithreading. Bovendien heeft C11 iets meer beveiligingsmogelijkheden. Daar ging Torvalds in mee en kondigde aan dat C11-code in maart in Linux-kernelversie 5.18 opgenomen kan worden. Het 'merge window' komt eraan, dus zou in maart al C11-code kunnen worden opgenomen. Tenminste, dat is het geval als er geen onverwachte dingen gebeuren als er een overgang plaatsvindt naar een nieuwe versie van de C-standaard, waarschuwt Linux kernel developer en journalist Jonathan Corbet.

Reacties

Om een reactie achter te laten is een account vereist.

Inloggen Word abonnee

Bevestig jouw e-mailadres

We hebben de bevestigingsmail naar %email% gestuurd.

Geen bevestigingsmail ontvangen? Controleer je spam folder. Niet in de spam, klik dan hier om een account aan te maken.

Er is iets mis gegaan

Helaas konden we op dit moment geen account voor je aanmaken. Probeer het later nog eens.

Maak een gratis account aan en geniet van alle voordelen:

Heb je al een account? Log in

Maak een gratis account aan en geniet van alle voordelen:

Heb je al een account? Log in