Rust 1.99.0 julkaistu. Microsoft teki Rustista ensisijaisen kielen

Mozilla-projektin perustama, mutta nyt voittoa tavoittelemattoman Rust Foundationin alaisuudessa kehitetty Rust 1.99 -ohjelmointikieli on julkaistu. Kieli keskittyy muistin turvallisuuteen ja tarjoaa työkaluja tehtävien suorittamisen korkean rinnakkaisuuden saavuttamiseksi ilman roskienkerääjää ja ajonaikaista ympäristöä (ajonaikaista ympäristöä rajoitetaan perusalustukseen ja standardikirjaston ylläpitoon).

Rustin muistinhallintamenetelmät on suunniteltu poistamaan osoittimien käsittelyssä esiintyviä virheitä ja suojaamaan matalan tason muistinhallinnan ongelmilta, kuten muistin käyttämiseltä sen vapauttamisen jälkeen, null-osoittimien viittausten poistamiselta, puskurin ylivuodotuksilta ja niin edelleen. Projektissa kehitetään Cargo-paketinhallintaa kirjastojen jakamiseen, koontien helpottamiseen ja riippuvuuksien hallintaan. Crates.io-arkistoa ylläpidetään kirjastojen isännöintiä varten.

Muistin turvallisuutta tarjotaan Rustissa käännöshetkellä referenssitarkistuksen, objektin omistajuuden, objektien eliniän (laajuuden) kirjaamisen ja muistin käytön oikeellisuuden arvioimisen avulla koodin suorittamisen aikana. Ruoste tarjoaa myös suojan kokonaislukujen ylivuodoilta, vaatii muuttujien arvojen pakollisen alustamisen ennen käyttöä, käsittelee virheet paremmin standardikirjastossa, soveltaa oletusarvoisesti muuttumattomien viitteiden ja muuttujien käsitettä, tarjoaa vahvan staattisen kirjoittamisen loogisten virheiden minimoimiseksi.

Tärkeimmät innovaatiot:

  • Rust sallii nyt variadisten funktioiden luomisen, jotka viedään kutsuun C-projekteista (C ABI). Tällaisten funktioiden parametriluettelon viimeinen elementti voi olla "..."-rakenne, jota Rust käsittelee erityisellä VaList-tyypillä, joka toimii samalla tavalla kuin va_list C:ssä. unsafe extern "C" fn sum(mut args: ...) -> i32 { let a = unsafe { args.next_arg:: () }; olkoon b = epäluotettava { args.next_arg:: () }; a + b } fn foo() -> i32 { epäluotettava { sum(0i32, 2i32) } }
  • Layout::for_value_raw-, mem::size_of_val_raw- ja mem::align_of_val_raw-funktioita on vakautettu, jotta raakaosoittimien kokoa ja tasausta voidaan turvallisesti muuttaa, myös dynaamisesti kokoisia tyyppejä, kuten viipaleita, käytettäessä, ilman dataviittausten luomisen tarvetta.
  • Dokumentaatio suosittelee nyt välttämään sellaisen muistin vapauttamista, johon on staattisesti viitattu määräämättömällä käyttöiällä (&'static) Box::leak-kutsun kautta (vuodon purkaminen edestakaisin), koska tämä toiminto voi johtaa ongelmiin yhteensopimattomuuden vuoksi tulevien kääntäjien optimointien ja vaihdettavien muistin allokointimekanismien kanssa. Staattisen viittauksen luomisen sijaan väliaikaisia ​​omistajuuden siirtoja varten on suositeltavaa käyttää raakoja osoittimia, esimerkiksi Box::into_non_null-kutsun kautta.
  • Uusi osa API:sta on siirretty vakaan luokkaan, mukaan lukien ominaisuuksien menetelmät ja toteutukset on vakautettu:
    • IntoIterator laatikolle<[T; N]>
    • IntoIterator for &Box<[T; N]>
    • IntoIterator for &mut Box<[T; N]>
    • VecDeque::retain_back
    • ydin::ffi::VaList
    • Laatikko::into_non_null
    • Laatikko::from_non_null
    • Vec::osiksi
    • Vec::from_parts
    • ydin::mem::val_raw-koon
    • ydin::mem::align_of_val_raw
    • ydin::alloc::Layout::for_value_raw
    • Merkkijono::from_utf8_lossy_owned
    • merkkijono::FromUtf8Error::into_utf8_lossy
    • FusedIterator StepBy-ohjelmalle
    • std::fs::set_times
    • std::fs::set_times_nofollow
  • Cargo-pakettienhallinnassa on nyt uusi sisäänrakennettu "debug"-profiili, joka on samanlainen kuin "dev"-profiili (debug- ja kehitysominaisuudet on tarkoitus erottaa toisistaan ​​tulevaisuudessa). Inkrementaalinen käännös on oletusarvoisesti poistettu käytöstä CI:tä rakennettaessa.
  • riscv64-unknown-linux-musl-kohdeympäristö on siirretty tukemaan tasoa 2, joka tarjoaa koontitakuun, mutta ei testipaketin läpäisytakuuta.

Lisäksi haluamme nostaa esiin äskettäin julkistettuja Rustiin liittyviä projekteja ja tapahtumia:

  • Microsoft on päivittänyt Rustin Tier 1 -kielelle ja tarjoaa sille täyden tuen yrityksen kaikissa kehitysvaiheissa. Aiemmin Tier 1 -tukea tarjottiin C++:lle, C#:lle ja TypeScriptille. Rustia käytetään jo yli 100 Microsoftin tietovarastossa. Rust-komponentteja käytetään jo muun muassa tuotteissa, kuten Microsoft 365 ja Copilot, ja MSVC-kääntäjälle on kehitetty oma Rust-taustajärjestelmä, rustc_codegen_utc, joka perustuu rustc-kääntäjään.

    Microsoft mainitsee Rustin käytön ensisijaiseksi tavoitteeksi turvallisuuskriittisen koodin vahvistamisen. Microsoft Azuren teknologiajohtajan mukaan noin 70 % kaikista haavoittuvuuksista Windows johtuvat muistinhallintaongelmista, jotka voidaan välttää käyttämällä Rustia.

  • Google on poistanut sen kernelista. Linux Vanha, C-kielellä kirjoitettu Binder IPC -toteutus on vanhentunut ja tilalle on tilalle uusi, Rust-kielellä uudelleenkirjoitettu Binder IPC -ajuri. On huomattava, että 15 vuoden olemassaolon aikana vanha ajuri on kerryttänyt merkittävää teknistä velkaa ja lukuisia komplikaatioita, jotka ovat haitanneet virheiden havaitsemista, ylläpitoa ja uusien ominaisuuksien lisäämistä. Rust-kielellä oleva Binder IPC -ajuri on nimetty pääajuriksi, eikä sitä enää esitetä kokeellisena kehityksenä.
  • Arti 2.7.0, Tor-työkalupakin Rust-toteutus, on julkaistu. Kun Artin koodikanta saavuttaa tason, joka pystyy korvaamaan C-toteutuksen kokonaan, Torin kehittäjät aikovat tehdä Artista ensisijaisen Tor-toteutuksen ja vähitellen luopua C-toteutuksen ylläpidosta. Uusi versio sisältää toiminnallisuuden kehitystä releille ja palvelimia Hakemistoviranomaisen (DA) toiminnallisuus, joka liittyy dokumenttien jäsentämiseen, hakemistopalvelimen peilauksen tukeen ja DNS-liikenteen käsittelyyn. RPC-toteutus kokoonpanomuutoksia ja -tarkistuksia varten on lisätty. Useita haavoittuvuuksia on korjattu – Onion-palvelun järjestelmänvalvojia kehotetaan päivittämään järjestelmänsä kiireellisesti.

Lähde: opennet.ru

Osta luotettava isännöinti sivustoille, joissa on DDoS-suojaus, VPS VDS -palvelimet 🔥 Osta luotettavaa verkkosivustojen hostingia DDoS-suojauksella, VPS VDS -palvelimilla | ProHoster