C++ na Linuxu, tema je oživljena nakon 6 godina

Linux C++

Ponovo je predložena upotreba C++-a u Linuxu

Čini se da uvođenje Rusta kao drugog jezika programiranje u Linux kernelu predstavlja jednu od najvažnijih promjena koji je Linux imao i ne govoreći u obimu karakteristika i funkcionalnosti, ali je označio vrlo važnu polaznu tačku u tome kako su Linus Torvalds i razvojni tim napravili značajan korak ka modernizaciji Linuxa na bolje.

Ovo se može primetiti, od nedavno, na mailing listama Linux kernela oživljena je diskusija koji je započet prije šest godina, šaljivo predstavljajući 1. april 2018.

I ponovo je stavljeno na sto. pitanje “izvodljivosti usvajanja modernog C++ koda u Linux kernelu”, nadilazeći tradicionalnu upotrebu jezika C sa fragmentima asemblera i promocijom Rust jezika.

Prvobitni prijedlog pokrenut je 2018. od strane inženjera Red Hata kao šala za poznatu prvoaprilsku proslavu, u kojoj mnogi iskorištavaju priliku da prave zezanciju zajednici i tada je bilo tako, pošto je navodno izdala set od 45 zakrpa koje su uključivale korištenje šablona, ​​nasljeđivanje klasa i preopterećenje C++ funkcija.

Po mom mišljenju, C++14 je “minimalna” verzija koja ima razumnu podršku za metaprogramiranje i ima većinu bez tipova iz prethodnih verzija (C++11 je imao većinu, ali C++14 popunjava neke ključne dijelove koji nedostaju). Međutim, po mom mišljenju, C++20 je zaista najveća promjena igre; Iako su prethodne verzije mogle izvršiti mnoge SFINAE hakove, također su davale apsolutno beskorisne poruke o grešci.

Radimo dosta metaprogramiranja u jezgru Linuxa, implementiranog koristeći često zaista užasne makro trikove. Ovo je takođe praktično nemoguće otkloniti. Uzmimo primjer hakova tipa uaccess.h, od kojih sam neke dizajnirao i napisao. U C++, različita cast i case iskazi mogu se podijeliti u zasebne instance predloška, ​​a uz malo domišljatosti, stvari kao što su pokazivači korisničkog prostora naspram pokazivača korisničkog prostora kernela također se mogu striktno primijeniti, kao i već označeni pokazivači korisničkog prostora, naspram onih koji nisu, da ne spominjemo jednostavno rukovanje slučajem 32-bitnih tipova korisničkog prostora u 64-bitnom kernelu i primjenu endian konverzije.

Sada, skoro nakon 6 godina ovoga, Hans Peter Anvin, ključni programer Intel kernela i kreator projekata kao što su syslinux, klibc i LANANA, je preuzeo inicijativu za nastavak rasprave. Prema Anvinu, od 1999. jezici C i C++ su doživjeli značajan napredak u svom razvoju, a jezik C++ se pokazao prikladnijim od C za razvoj kernela operativnog sistema.

Anvin spominje te funkcije koje su prethodno zahtijevale posebne ekstenzije iz GCC, sada se može lako implementirati u standardnom C++, i u mnogim slučajevima, korištenje C++ će poboljšati infrastrukturu bez potrebe za potpunom promjenom koda.

Pored toga, Predlaže se korištenje najmanje C++ 14 specifikacije, koji uključuje alate za metaprogramiranje, a ohrabruje se upotreba C++ 20 specifikacije, koja uvodi podršku za koncepte koji mogu smanjiti učestalost grešaka.

Tvrdi se da je C++ poželjniji od Rusta, budući da se potonji značajno razlikuje u sintaksi od jezika C, nije uobičajen za trenutne programere kernela i ne dozvoljava postepeno prepisivanje koda. U slučaju jezika C++, moguće je postepeno prevesti dijelove koda jezika C, slično kao što se C kod može prevesti kao C++.

Iako je jezgro Linuxa prvenstveno C kod s različitim dijelovima napisanim u asembleru i rastućim radom oko podrške za Rust u Linux kernelu, još uvijek je nejasno da li postoji dovoljna težina da to postane stvarnost, o mogućnosti da se vidi C kod Linux kernela konvertovano u C++ u budućnosti.

konačno ako jesi zainteresovani da saznaju više o tome, detalje možete provjeriti u sljedeći link.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.