C++ Linuxissa, aihe herää henkiin 6 vuoden jälkeen

Linux C++

C++:n käyttöä Linuxissa on ehdotettu uudelleen

Ilmeisesti ruosteen käyttöönotto toisena kielenä ohjelmointi Linux-ytimessä on ollut yksi tärkeimmistä muutoksista Linuxilla on ollut, mutta ei puhumattakaan ominaisuuksien ja toimintojen laajuudesta, mutta se on ollut erittäin tärkeä lähtökohta sille, kuinka Linus Torvalds ja kehitystiimi ovat ottaneet merkittävän askeleen kohti Linuxin modernisointia parempaan suuntaan.

Tämä voidaan todeta, koska viime aikoina Linux-ytimen postituslistoilla keskustelu on herännyt eloon joka aloitettiin kuusi vuotta sitten ja esittelee vitsillä 1. huhtikuuta 2018.

Ja se on taas nostettu pöydälle. kysymys "modernin C++-koodin käyttöönotosta Linux-ytimessä", joka menee pidemmälle kuin perinteinen C-kielen käyttö assembler-fragmenttien kanssa ja Rust-kielen edistäminen.

Alkuperäinen ehdotus julkaistiin vuonna 2018, Red Hat -insinöörin toimesta vitsinä tunnettuun aprillipilajuhlaan, jossa monet käyttävät tilaisuutta hyväkseen pilaamiseen yhteisölle ja tuolloin se oli niin, sillä se oli julkaissut 45 patch-sarjan, joka sisälsi mallien käytön, luokkaperinnön ja C++-toimintojen ylikuormitus.

Mielestäni C++14 on "minimiversio", jolla on kohtuullinen metaohjelmointituki ja useimmat ovat ilman aikaisempien versioiden tyyppejä (C++11:ssä oli eniten, mutta C++14 täyttää joitakin keskeisiä puuttuvia palasia). Kuitenkin mielestäni C++20 on todellakin suurin pelin muuttaja; Vaikka aiemmat versiot pystyivät suorittamaan monia SFINAE-hakkereita, ne antoivat myös täysin hyödyttömiä virheilmoituksia.

Teemme Linux-ytimessä paljon metaohjelmointia, joka toteutetaan usein todella kauhistuttavilla makrotemppuilla. Näitä on myös käytännössä mahdotonta korjata. Otetaan esimerkki uaccess.h-tyyppisistä hakkeroista, joista osan suunnittelin ja kirjoitin. C++:ssa eri castit ja case-lauseet voidaan jakaa erillisiin malliinstanssiin, ja pienellä kekseliäisyydellä voidaan myös tiukasti pakottaa esimerkiksi käyttäjätilan osoittimet vs. ytimen käyttäjätilan osoittimet sekä jo merkityt käyttäjätilaosoittimet verrattuna niihin, jotka eivät ole. puhumattakaan 32-bittisten käyttäjätilatyyppien tapauksen helposta käsittelystä 64-bittisessä ytimessä ja endian-muunnoksen soveltamisesta.

nyt, melkein kuuden vuoden jälkeen, Hans Peter Anvin, keskeinen Intel-ytimen kehittäjä ja projektien, kuten syslinux, klibc ja LANANA, luoja, on tehnyt aloitteen jatkaakseen keskustelua. Anvinin mukaan vuodesta 1999 lähtien C- ja C++-kielet ovat edistyneet merkittävästi kehityksessään, ja C++-kieli on osoittautunut sopivammaksi kuin C käyttöjärjestelmän ytimen kehittämiseen.

Anvin mainitsee ominaisuudet, jotka vaativat aiemmin tiettyjä laajennuksia GCC:ltä, voidaan nyt helposti toteuttaa standardissa C++:ssa, ja monissa tapauksissa C++:n käyttö parantaa infrastruktuuria ilman, että koodia tarvitsee muuttaa kokonaan.

Sen lisäksi On suositeltavaa käyttää vähintään C++ 14 -spesifikaatiota, joka sisältää metaohjelmointityökalut, ja C++ 20 -spesifikaatioiden käyttöä rohkaistaan, joka ottaa käyttöön tuen käsitteille, jotka voivat vähentää virheiden esiintymistä.

Väitetään, että C++ on parempi kuin Rust, koska jälkimmäinen poikkeaa syntaksiltaan merkittävästi C-kielestä, on harvinainen nykyisille ytimen kehittäjille eikä salli koodin asteittaista uudelleenkirjoittamista. C++-kielen tapauksessa on mahdollista kääntää osia C-kielikoodista asteittain, samalla tavalla kuin C-koodi voidaan kääntää C++:ksi.

Vaikka Linux-ydin on ensisijaisesti C-koodia, jossa on useita osia, jotka on kirjoitettu kokoonpanossa ja kasvavassa työssä Rust-tuen ympärillä Linux-ytimessä, mutta on edelleen epäselvää, onko sillä tarpeeksi painoarvoa, jotta tämä olisi todellisuutta, mahdollisuudesta nähdä Linux-ytimen C-koodi. muunnetaan C++:ksi tulevaisuudessa.

vihdoin jos olet kiinnostunut tietämään asiasta lisää, voit tarkistaa yksityiskohdat seuraava linkki.


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastaa tiedoista: AB Internet Networks 2008 SL
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.