Opět bylo navrženo použití C++ v Linuxu
Zdá se, že zavedení rzi jako druhého jazyka programování v jádře Linuxu představuje jednu z nejdůležitějších změn že Linux měl, a to nemluvíme v rozsahu vlastností a funkcí, ale znamenalo to velmi důležitý výchozí bod v tom, jak Linus Torvalds a vývojový tým udělali významný krok k modernizaci Linuxu k lepšímu.
To lze poznamenat, protože nedávno na e-mailové konference jádra Linuxu byla obnovena diskuse který byl zahájen před šesti lety, vtipně prezentující 1. duben 2018.
A bylo to znovu položeno na stůl. problém „proveditelnosti přijetí moderního kódu C++ v jádře Linuxu“, přesahující tradiční používání jazyka C s fragmenty assembleru a propagaci jazyka Rust.
Původní návrh byl spuštěn v roce 2018, od inženýra Red Hatu jako vtip na známou aprílovou oslavu, při které mnozí využívají příležitosti k vytváření žertů na komunitu a v té době tomu tak bylo, protože údajně vydala sadu 45 patchů, které zahrnovaly použití šablon, dědění tříd a přetěžování funkcí C++.
Podle mého názoru je C++14 „minimální“ verze, která má rozumnou podporu metaprogramování a má většinu bez typů z předchozích verzí (C++11 jich mělo většinu, ale C++14 doplňuje některé klíčové chybějící části). Nicméně, podle mého názoru, C++20 je opravdu největší herní měnič; Přestože předchozí verze mohly provádět mnoho hacků SFINAE, poskytovaly také naprosto zbytečné chybové zprávy.
V linuxovém jádře provádíme spoustu metaprogramování, implementovaného pomocí často opravdu příšerných makro triků. Ty je také prakticky nemožné odladit. Vezměme si příklad hacků typu uaccess.h, z nichž některé jsem navrhl a napsal. V C++ lze různá přetypování a příkazy case rozdělit do samostatných instancí šablon a s trochou vynalézavosti lze také přísně vynutit věci jako ukazatele uživatelského prostoru versus ukazatele uživatelského prostoru jádra, stejně jako již označené ukazatele uživatelského prostoru oproti těm, které nejsou, nemluvě o snadné manipulaci s případem 32bitových typů uživatelského prostoru v 64bitovém jádře a aplikaci endian konverze.
Nyní, téměř po 6 letech, Hans Peter Anvin, klíčový vývojář jádra Intel a tvůrce projektů, jako jsou syslinux, klibc a LANANA, se chopil iniciativy pokračovat v diskusi. Podle Anvina od roku 1999 zaznamenaly jazyky C a C++ významný pokrok ve svém vývoji a jazyk C++ se ukázal být pro vývoj jádra operačního systému vhodnější než C.
Anvin uvádí, že funkce, které dříve vyžadovaly specifická rozšíření z GCC, lze nyní snadno implementovat ve standardním C++, a v mnoha případech použití C++ zlepší infrastrukturu, aniž by bylo nutné kompletně měnit kód.
Kromě toho Navrhuje se použít alespoň specifikaci C++ 14, která zahrnuje metaprogramovací nástroje a doporučuje se použití specifikace C++ 20, která zavádí podporu konceptů, které mohou snížit výskyt chyb.
Tvrdí se, že C++ je výhodnější než Rust, protože druhý se výrazně liší v syntaxi od jazyka C, je pro současné vývojáře jádra neobvyklý a neumožňuje postupné přepisování kódu. V případě jazyka C++ je možné překládat části kódu jazyka C postupně, podobně jako lze kód C kompilovat jako C++.
Zatímco linuxové jádro je primárně kód C s různými částmi napsanými v assembleru a rostoucí prací kolem podpory Rust v linuxovém jádře, stále není jasné, zda existuje dostatečná váha, aby se to stalo realitou, pokud jde o možnost vidět kód linuxového jádra C v budoucnu převedeny na C++.
konečně jestli jsi zájem dozvědět se o tom více, můžete zkontrolovat podrobnosti v následující odkaz.