Utjefte fan de programmeartaal Rust 1.75 en unikernel Hermit 0.6.7

De algemiene programmeertaal Rust 1.75, oprjochte troch it Mozilla-projekt mar no ûntwikkele ûnder auspysjes fan de ûnôfhinklike non-profit organisaasje Rust Foundation, is frijjûn. De taal rjochtet him op ûnthâld feilichheid en jout de middels te berikken hege baan parallelism wylst it foarkommen fan it brûken fan in garbage collector en runtime (runtime wurdt redusearre ta basis inisjalisaasje en ûnderhâld fan de standert bibleteek).

De metoaden foar ûnthâldbehanneling fan Rust besparje de ûntwikkelder fan flaters by it manipulearjen fan oanwizers en beskermje tsjin problemen dy't ûntsteane troch ûnthâldôfhanneling op leech nivo, lykas tagong krije ta in ûnthâldgebiet nei't it befrijd is, it ferwizen fan nul-oanwizers, buffer-oerrin, ensfh. Om bibleteken te fersprieden, builds te leverjen en ôfhinklikens te behearjen, ûntwikkelet it projekt de Cargo-pakketbehearder. It crates.io repository wurdt stipe foar hosting fan bibleteken.

Unthâld feilichheid wurdt foarsjoen yn Rust op it gearstallen tiid troch referinsje kontrôle, byhâlden fan foarwerp eigendom, byhâlden fan foarwerp lifetimes (omfang), en beoardielje de korrektheid fan ûnthâld tagong by koade útfiering. Rust leveret ek beskerming tsjin oerstreamingen fan heule getal, fereasket ferplichte inisjalisaasje fan fariabele wearden foar gebrûk, behannelet flaters better yn 'e standertbibleteek, tapast standert it konsept fan ûnferoarlike referinsjes en fariabelen, biedt sterke statyske typen om logyske flaters te minimalisearjen.

Wichtichste ynnovaasjes:

  • De mooglikheid tafoege om "async fn" en de notaasje "->impl Trait" te brûken yn privee eigenskippen. Bygelyks, mei "->impl Trait" kinne jo in traitmetoade skriuwe dy't in iterator werombringt: trait Container { fn items(&self) -> impl Iterator; } impl Container foar MyContainer { fn items(&self) -> impl Iterator { self.items.iter().cloned() } }

    Jo kinne ek trekken oanmeitsje mei "async fn": trait HttpService { async fn fetch(&self, url: Url) -> HtmlBody; // sil útwreide wurde nei: // fn fetch(&self, url: Url) -> impl Future; }

  • Added API foar it berekkenjen fan byte offsets relatyf oan pointers. By it wurkjen mei bleate pointers ("* const T" en "* mut T"), kinne operaasjes nedich wêze om in offset ta te foegjen oan 'e pointer. Earder wie it mooglik om in konstruksje te brûken lykas "::add(1)", it tafoegjen fan it oantal bytes dat oerienkomt mei de grutte fan "size_of::()". De nije API ferienfâldiget dizze operaasje en makket it mooglik om byte-offsets te manipulearjen sûnder de typen earst te casten nei "*const u8" of "*mut u8".
    • pointer::byte_add
    • oanwizer::byte_offset
    • oanwizer::byte_offset_from
    • oanwizer::byte_sub
    • pointer::wrapping_byte_add
    • pointer::wrapping_byte_offset
    • pointer::wrapping_byte_sub
  • Trochgean wurk om de prestaasjes fan 'e rustc-kompiler te ferheegjen. De BOLT-optimizer tafoege, dy't rint yn 'e post-link-poadium en brûkt ynformaasje fan in foarôf taret útfieringsprofyl. It brûken fan BOLT lit jo de útfiering fan kompilator mei sawat 2% fersnelle troch de yndieling fan 'e librustc_driver.so-biblioteekkoade te feroarjen foar effisjinter gebrûk fan' e prosessor-cache.

    Ynbegrepen it bouwen fan de rustc-kompiler mei de opsje "-Ccodegen-units=1" om de kwaliteit fan optimalisaasje yn LLVM te ferbetterjen. De útfierde testen litte in ferheging fan prestaasjes sjen yn it gefal fan 'e "-Ccodegen-units=1" build mei sawat 1.5%. De tafoege optimisaasjes binne standert allinich ynskeakele foar it x86_64-unknown-linux-gnu-platfoarm.

    De earder neamde optimalisaasjes waarden troch Google testen om de tiid te ferminderjen dy't it kostet om platfoarmkomponinten te bouwen. Android, skreaun yn Rust. Mei help fan "-C codegen-units=1" by it bouwen Android tastien ús om de grutte fan 'e arkset mei 5.5% te ferminderjen en de produktiviteit mei 1.8% te ferheegjen, wylst de tiid foar it gearstallen fan 'e arkset sels hast ferdûbele waard.

    It ynskeakeljen fan jiskefet yn keppelingstiid ("--gc-seksjes") brocht de prestaasjeswinst oant 1.9%, it ynskeakeljen fan keppeling-tiidoptimalisaasje (LTO) oant 7.7%, en profyl-basearre optimisaasjes (PGO) oant 19.8%. Yn 'e finale waarden optimisaasjes tapast mei it BOLT-hulpprogramma, wat it mooglik makke om de bousnelheid te ferheegjen nei 24.7%, mar de grutte fan 'e toolkit ferhege mei 10.9%.

    Utjefte fan de programmeartaal Rust 1.75 en unikernel Hermit 0.6.7
  • In nij diel fan 'e API is ferpleatst nei de kategory stabile, ynklusyf de metoaden en ymplemintaasjes fan eigenskippen binne stabilisearre:
    • Atoom*::from_ptr
    • FileTimes
    • FileTimesExt
    • File :: set_modified
    • File :: set_times
    • IpAddr::to_canonical
    • Ipv6Addr::to_canonical
    • Opsje :: as_slice
    • Opsje :: as_mut_slice
    • pointer::byte_add
    • oanwizer::byte_offset
    • oanwizer::byte_offset_from
    • oanwizer::byte_sub
    • pointer::wrapping_byte_add
    • pointer::wrapping_byte_offset
    • pointer::wrapping_byte_sub
  • It attribút "const", dat de mooglikheid bepaalt om it yn elke kontekst te brûken ynstee fan konstanten, wurdt brûkt yn 'e funksjes:
    • Ipv6Addr::to_ipv4_mapped
    • MaybeUninit :: assume_init_read
    • MaybeUninit::nulearre
    • mem :: diskriminant
    • mem :: nul
  • It tredde nivo fan stipe is ymplementearre foar de csky-unknown-linux-gnuabiv2hf, i586-unknown-netbsd en mipsel-unknown-netbsd platfoarms. It tredde nivo omfettet basisstipe, mar sûnder automatisearre testen, publikaasje fan offisjele builds, en ferifikaasje fan koade bouwberens.

Derneist is in nije ferzje fan it Hermit-projekt it neamen wurdich. It ûntwikkelt in spesjalisearre kernel (unikernel) skreaun yn Rust, en leveret ark foar it bouwen fan selsstannige applikaasjes dy't kinne rinne op in hypervisor of bleate hardware sûnder ekstra lagen of in bestjoeringssysteem. Tidens de bou is de applikaasje statysk keppele oan in bibleteek dy't ûnôfhinklik alle nedige funksjonaliteit ymplementearret, sûnder bûn te wêzen oan de OS-kernel of systeembibleteken. De koade fan it projekt wurdt ferspraat ûnder de Apache 2.0- en MIT-lisinsjes. It stipet it bouwen fan standalone applikaasjes skreaun yn Rust, Go, Fortran, C en C++. It projekt ûntwikkelt ek in eigen bootloader, wêrtroch Hermit kin wurde lansearre mei QEMU en KVM.

Boarne: opennet.ru

Keapje betroubere hosting foar siden mei DDoS-beskerming, VPS VDS-tsjinners 🔥 Keapje betroubere websidehosting mei DDoS-beskerming, VPS VDS-tsjinners | ProHoster