Ismét javasolták a C++ használatát Linuxban
Úgy tűnik, hogy a a Rust mint második nyelv bevezetése programozás a Linux Kernelben az egyik legfontosabb változás amelyekkel a Linux rendelkezett, és nem a szolgáltatások és funkcionalitások terén, de nagyon fontos kiindulópontot jelentett abban, hogy Linus Torvalds és a fejlesztőcsapat jelentős lépést tett a Linux jobb modernizálása felé.
Ez megjegyezhető, mivel a közelmúltban Linux kernel levelezőlistákon egy vita újjáéledt amely hat éve indult, viccesen bemutatva 1. április 2018-jét.
És ismét visszakerült az asztalra. „A modern C++ kód átvételének lehetősége a Linux kernelbe”, túllépve a C nyelv hagyományos használatán assembler töredékekkel és a Rust nyelv népszerűsítésével.
Az eredeti javaslat 2018-ban jelent meg, egy Red Hat mérnöktől mint vicc a jól ismert áprilisi bolondok ünnepére, ahol sokan megragadják az alkalmat, hogy csínytevéseket csináljanak a közösségen, és akkoriban ez így is volt, hiszen állítólag egy 45 patch-ből álló készletet adott ki, amiben sablonhasználatot, osztályöröklést és a C++ függvények túlterhelése.
Véleményem szerint a C++14 a „minimális” verzió, amely ésszerű metaprogramozási támogatással rendelkezik, és a legtöbb a korábbi verziók típusai nélkül van (a C++11-ben volt a legtöbb, de a C++14 néhány kulcsfontosságú hiányzó részt pótol). Azonban véleményem szerint a C++20 valóban a legnagyobb játékváltó; Bár a korábbi verziók számos SFINAE-hacket tudtak végrehajtani, teljesen haszontalan hibaüzeneteket is adtak.
Rengeteg metaprogramozást végzünk a Linux kernelben, amelyet gyakran borzalmas makrótrükkökkel valósítunk meg. Ezek hibakeresése is gyakorlatilag lehetetlen. Vegyük például az uaccess.h típusú hackeket, amelyek egy részét én terveztem és írtam. A C++ nyelven a különböző castok és eset-utasítások külön sablonpéldányokra oszthatók, és egy kis találékonysággal olyan dolgokat is szigorúan be lehet kényszeríteni, mint a userspace pointers versus a kernel userspace pointerek, valamint a már megjelölt userspace mutatók, szemben azokkal, amelyek nem. nem beszélve a 32 bites userspace típusok esetének egyszerű kezeléséről egy 64 bites kernelben és az endian konverzió alkalmazásáról.
most, majdnem 6 év után Hans Peter Anvin, kulcsfontosságú Intel kernelfejlesztő és olyan projektek létrehozója, mint a syslinux, a klibc és a LANANA, kezdeményezte a vita folytatását. Anvin szerint 1999 óta a C és C++ nyelvek fejlesztése jelentős fejlődésen ment keresztül, és a C++ nyelv alkalmasabbnak bizonyult az operációs rendszer kernelfejlesztésére, mint a C.
Anvin megemlíti azokat a funkciókat, amelyek korábban speciális bővítményeket igényeltek a GCC-től, most már könnyen implementálható szabványos C++ nyelven, és sok esetben a C++ használata javítja az infrastruktúrát anélkül, hogy teljesen meg kellene változtatni a kódot.
Ezen kívül Javasoljuk, hogy legalább a C++ 14 specifikációt használja, amely metaprogramozási eszközöket tartalmaz, és a C++ 20 specifikáció használata javasolt, amely olyan koncepciók támogatását vezeti be, amelyek csökkenthetik a hibák előfordulását.
Azt állítják, hogy a C++ előnyösebb, mint a Rust, mivel az utóbbi szintaxisában jelentősen eltér a C nyelvtől, nem gyakori a jelenlegi kernelfejlesztők számára, és nem teszi lehetővé a fokozatos kód újraírását. A C++ nyelv esetében lehetőség van a C nyelvi kód egyes részeinek fokozatos lefordítására, hasonlóan ahhoz, ahogy a C kód C++-ként fordítható.
Míg a Linux kernel elsősorban C kódból áll, különféle összeállításban írt részekkel és egyre növekvő munkával a Rust támogatás körül a Linux kernelben, még mindig nem világos, hogy van-e elég súlya ahhoz, hogy ez valóság legyen, a Linux kernel C kódjának megtekintésének lehetőségét illetően. a jövőben C++-ra konvertálják.
végre, ha az vagy érdekelne többet megtudni róla, ellenőrizheti a részleteket a következő link.