Rust 1.68 Programming Language Release

Die algemene programmeertaal Rust 1.68, wat deur die Mozilla-projek gestig is, maar nou ontwikkel is onder die beskerming van die onafhanklike nie-winsgewende organisasie Rust Foundation, is vrygestel. Die taal fokus op geheueveiligheid en bied die middele om hoë werkparallelisme te bereik terwyl die gebruik van 'n vullisverwyderaar en looptyd vermy word (looptyd word verminder tot basiese inisialisering en instandhouding van die standaardbiblioteek).

Rust se geheue hantering metodes red die ontwikkelaar van foute wanneer wysers gemanipuleer word en beskerm teen probleme wat ontstaan ​​as gevolg van laevlak geheue manipulasie, soos toegang tot 'n geheue area nadat dit vrygestel is, herkenning van nulwysers, buffer oorskryding, ens. Om biblioteke te versprei, bouwerk te verskaf en afhanklikhede te bestuur, ontwikkel die projek die Cargo-pakketbestuurder. Die crates.io-bewaarplek word ondersteun vir die aanbieding van biblioteke.

Geheueveiligheid word tydens samestellingstyd in Rust verskaf deur verwysingskontrolering, tred te hou met objekeienaarskap, tred te hou met objekleeftye (bestekke), en die korrektheid van geheuetoegang tydens kode-uitvoering te assesseer. Roes bied ook beskerming teen heelgetal oorvloei, vereis verpligte inisialisering van veranderlike waardes voor gebruik, hanteer foute beter in die standaard biblioteek, pas die konsep van onveranderlike verwysings en veranderlikes by verstek toe, bied sterk statiese tik om logiese foute te minimaliseer.

Belangrikste innovasies:

  • Die Cargo-pakketbestuurder en die crates.io-bewaarplek het ondersteuning vir die Sparse-protokol gestabiliseer, wat 'n nuwe manier van werk definieer met 'n indeks wat die beskikbare weergawes van alle pakkette wat in die bewaarplek bestaan, weerspieël. Die nuwe protokol laat jou toe om die spoed van werk met crates.io aansienlik te verhoog en skaalprobleme op te los met verdere groei in die aantal pakkette in die bewaarplek.

    Om die vertragings wat veroorsaak word deur die aflaai van 'n volledige indeks te verminder, behels Sparse, in plaas daarvan om toegang tot die indeks te gebruik met Git, direkte aflaai van slegs die nodige indeksdata oor HTTPS, wat die afhanklikhede van 'n spesifieke projek dek. 'n Nuwe diens, index.crates.io, word gebruik om indeksdata te verskaf. By verstek word die nuwe protokol beplan om in die Rust 1.70-tak gebruik te word, en voor dit, om dit te aktiveer, kan jy die omgewingsveranderlike "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" stel of die 'protokol =' parameter by die "[registers. crates-io]" afdeling van die .cargo/config.toml lêer 'sparse'.

  • Het die "pen!"-makro bygevoeg, wat jou toelaat om 'n Pin<&mut T>-struktuur te skep vanaf die uitdrukking "T" met plaaslike vaspen van sy toestand (anders as Box::pin, ken dit nie geheue op die hoop toe nie, maar bind op stapelvlak).
  • 'n Standaardgeheuetoewysingsfouthanteerder is voorgestel wat gebruik word wanneer die standaardtoewysingspakket gebruik word. Toepassings wat net toewysing aktiveer (sonder standaard) sal nou die "paniek!"-hanteerder roep wanneer geheuetoewysing misluk, wat opsioneel onderskep kan word met "#[paniek_hanteerder]". Programme wat die std-biblioteek gebruik, sal voortgaan om foutinligting te druk na stderr en crash.
  • 'n Nuwe gedeelte van die API is na die kategorie stal geskuif, insluitend die metodes en implementering van eienskappe is gestabiliseer:
    • {kern,std}::pen::pen!
    • impl Van vir {f32,f64}
    • std::pad::MAIN_SEPARATOR_STR
    • impl DerefMut vir PathBuf
  • Die “const”-kenmerk, wat die moontlikheid bepaal om dit in enige konteks in plaas van konstantes te gebruik, word in die VecDeque::new funksie gebruik.
  • Om op die Android-platform te werk, word ten minste NDK r25 (API 19) nou benodig, m.a.w. Die minimum ondersteunde Android-weergawe is verhoog na 4.4 (KitKat).
  • Die derde vlak van ondersteuning is geïmplementeer vir die Sony PlayStation Vita-platform (armv7-sony-vita-newlibeabihf). Die derde vlak behels basiese ondersteuning, maar sonder outomatiese toetsing, publisering van amptelike bouwerk, of kontrolering of die kode gebou kan word.

Bron: opennet.ru

Voeg 'n opmerking