Siideynta luqadda barnaamijka Rust 1.75 iyo unikernel Hermit 0.6.7

Siideynta Rust 1.75 luqadda barnaamijka guud ee ujeeddooyinka, oo uu aasaasay mashruuca Mozilla, laakiin hadda lagu horumariyay hoosta hay'adda madax-bannaan ee aan faa'iido doonka ahayn ee Rust Foundation, ayaa la daabacay. Luqadda waxay diiradda saartaa badbaadada xusuusta waxayna bixisaa siyaabaha lagu gaaro isbarbardhigga shaqada sare iyadoo laga fogaanayo isticmaalka qashinka aruuriyaha iyo wakhtiga runtime (waqtiga runtime wuxuu hoos u dhigayaa bilowga aasaasiga ah iyo dayactirka maktabadda caadiga ah).

Hababka wax ka qabashada xusuusta daxalku waxay horumariyaha ka badbaadiyaan khaladaadka marka la maamulayo tilmaamayaasha oo ay ka ilaaliyaan dhibaatooyinka ka dhasha maaraynta xusuusta heerka hoose ah, sida gelitaanka aagga xusuusta ka dib marka la sii daayo, leexinta tilmaameyaal aan waxba lahayn, dulin xad dhaaf ah, iwm. Si loo qaybiyo maktabadaha, loo bixiyo dhismayaal loona maareeyo ku-tiirsanaanta, mashruucu wuxuu horumariyaa maareeyaha xirmada xamuulka. Kaydka crates.io waxaa lagu taageeraa martigelinta maktabadaha.

Badbaadada xusuusta waxa lagu bixiyaa miridhku wakhtiga la ururinayo iyada oo la eegayo tixraaca, la socodka lahaanshaha shayga, la socodka cimriga shayga (koobyada), iyo qiimaynta saxnaanta gelitaanka xusuusta inta lagu jiro fulinta koodka. Daxalku sidoo kale wuxuu bixiyaa difaac ka dhan ah qulqulka isugeynta, wuxuu u baahan yahay bilawga qasabka ah ee qiyamka doorsooma ka hor intaan la isticmaalin, wuxuu si fiican u maareeyaa khaladaadka maktabadda caadiga ah, wuxuu dabaqaa fikradda tixraacyada aan bedeli karin iyo doorsoomayaasha si caadi ah, wuxuu bixiyaa qorid adag oo adag si loo yareeyo khaladaadka macquulka ah.

Hal-abuurka ugu muhiimsan:

  • Waxaa lagu daray awoodda isticmaalka "async fn" iyo "-> impl Trait" ee sifooyinka gaarka ah. Tusaale ahaan, adigoo isticmaalaya "-> impl Trait" waxaad qori kartaa hab sifo ah oo soo celinaysa cusboonaysiinta: dabeecadda Container {fn items(&self) -> impl Iterator; } impl Container for MyContainer {fn shayga(&self) -> impl Iterator {self.items.iter().cloned()}}

    Waxa kale oo aad samayn kartaa sifooyin addoo isticmaalaya "async fn": sifada HttpService {async fn fetch(&self, url: Url) -> HtmlBody; // waxaa lagu kordhin doonaa: // fn fetch (&self, url: Url) -> impl Future; }

  • API oo lagu daray xisaabinta xad-dhaafka byte marka loo eego tilmaamayaasha. Markaad la shaqaynayso tilmaame qaawan ("* const T" iyo "* mut T"), hawlgallada ayaa laga yaabaa in loo baahdo si loogu daro tilmaame. Markii hore, tan waxaa suurtagal ah in la isticmaalo dhismo sida " :: ku dar (1)", iyada oo lagu daray tirada bytes ee u dhiganta cabbirka "size_of :: ()". API-ga cusub waxa uu fududeeyaa hawlgalkan oo waxa uu suurtogal ka dhigayaa in la maareeyo xad-dhaafka byte-ka iyada oo aan marka hore noocyada loo tuurin "* const u8" ama "*mut u8".
    • tilmaame::byte_ku dar
    • tilmaame::byte_offset
    • tilmaame::byte_offset_ka yimid
    • tilmaame::byte_sub
    • tilmaame :: duubid_byte_ku dar
    • tilmaame :: duubid_byte_offset
    • tilmaame :: duubid_byte_sub
  • Shaqada sii socota si kor loogu qaado waxqabadka isku-duwaha rustc. Waxaa lagu daray BOLT optimizer-ka, kaas oo ku socda marxaladda isku xidhka kadib oo isticmaala macluumaadka astaanta fulinta ee horay loo sii diyaariyay. Isticmaalka BOLT wuxuu kuu ogolaanayaa inaad dedejiso fulinta compiler ilaa 2% adigoo bedelaya qaabka librusc_driver.so code-ka maktabadda si aad si hufan u isticmaasho kaydiyaha processor-ka.

    Waxaa ku jira dhismaha rustc compiler leh "-Ccodegen-units=1" doorashada si loo horumariyo tayada tayaynta ee LLVM. Tijaabooyinka la sameeyay waxay muujinayaan korodhka waxqabadka marka laga hadlayo "-Ccodegen-units=1" oo la dhisay ku dhawaad ​​1.5%. Kor-u-qaadista lagu daray waxaa loo sahlay si toos ah oo keliya x86_64-unknown-linux-gnu platform.

    Hagaajinta hore loo sheegay waxaa tijaabiyay Google si loo yareeyo waqtiga la dhisayo qaybaha aaladaha Android ee ku qoran Rust. Isticmaalka "-C codegen-units=1" marka la dhisayo Android waxay noo ogolaatay inaan hoos u dhigno cabbirka qalabka 5.5% oo aan kordhinno waxqabadkeeda 1.8%, halka waqtiga dhismaha qalabka laftiisa uu ku dhawaad ​​labanlaabmay.

    Awood u yeelashada isku xirka qashinka aruurinta ("-gc-sections") waxay keentay faa'iidada waxqabadka ilaa 1.9%, awood u yeelashada isku xirka waqtiga-waqtiga (LTO) ilaa 7.7%, iyo hagaajinta profile ku salaysan (PGO) ilaa 19.8%. Ugu dambeyntii, hagaajinta ayaa lagu dabaqay iyadoo la adeegsanayo utility BOLT, taas oo suurtogal ka dhigtay in la kordhiyo xawaaraha dhismaha ilaa 24.7%, laakiin xajmiga qalabka ayaa kordhay 10.9%.

    Siideynta luqadda barnaamijka Rust 1.75 iyo unikernel Hermit 0.6.7

  • Qayb cusub oo API ah ayaa loo raray qaybta xasiloon, oo ay ku jiraan hababka iyo hirgelinta sifooyinka la dajiyay:
    • Atomic*:: ka_ptr
    • FileTimes
    • FileTimesExt
    • File:: set_modified
    • File :: set_times
    • IPAddr:: ku_canonical
    • Ipv6Addr :: u_canonical
    • Ikhtiyaarka:: sida_slice
    • Ikhtiyaarka:: as_mut_slice
    • tilmaame::byte_ku dar
    • tilmaame::byte_offset
    • tilmaame::byte_offset_ka yimid
    • tilmaame::byte_sub
    • tilmaame :: duubid_byte_ku dar
    • tilmaame :: duubid_byte_offset
    • tilmaame :: duubid_byte_sub
  • Sifada "const", taas oo go'aamisa suurtagalnimada in loo isticmaalo xaalad kasta oo aan joogto ahayn, ayaa loo adeegsadaa hawlaha:
    • Ipv6Addr :: si_ipv4_mapped
    • Waxaa laga yaabaa Uninit:: u malayn in la akhriyo
    • Waxaa laga yaabaa Uninit :: eber
    • mem:: takoorid
    • mem:: eber
  • Heerka saddexaad ee taageerada waxa loo hirgeliyay csky-unknown-linux-gnuabiv2hf, i586-unknown-netbsd iyo mipsel-unknown-netbsd. Heerka saddexaad waxa uu ku lug leeyahay taageerada aasaasiga ah, laakiin iyada oo aan la helin tijaabo toos ah, daabacaadda dhismo rasmi ah, ama hubinta in koodka la dhisi karo.

Intaa waxaa dheer, waxaan ogaan karnaa nooc cusub oo ah mashruuca Hermit, kaas oo soo saara kernel gaar ah (unikernel), oo ku qoran luqadda Rust, siinta qalabyada lagu dhisayo codsiyada is-xakameysan ee ku socon kara dusha sare ee hypervisor ama qalab qaawan oo aan lahayn lakabyo dheeraad ah. oo aan lahayn nidaamka hawlgalka. Marka la dhiso, codsigu wuxuu si joogto ah ugu xidhan yahay maktabad, taas oo si madax-bannaan u fulisa dhammaan hawlaha lagama maarmaanka ah, iyada oo aan lagu xidhin kernel-ka OS iyo maktabadaha nidaamka. Xeerka mashruuca waxa lagu qaybiyaa Apache 2.0 iyo shatiga MIT. Golaha waxa lagu taageeraa fulinta kaligiis ee codsiyada ku qoran Rust, Go, Fortran, C iyo C++. Mashruucu wuxuu sidoo kale horumarinayaa bootloader u gaar ah kaas oo kuu ogolaanaya inaad bilowdo Hermit adoo isticmaalaya QEMU iyo KVM.

Source: opennet.ru

Add a comment