Rust 1.88 vĂ€ljaanne. Munal operatsioonisĂŒsteem ja rsched utiliit Rustis

Avaldati universaalse programmeerimiskeele Rust 1.88 versioon, mida arendab Mozilla, kuid praegu jĂ€tkab iseseisev mittetulundusĂŒhing Rust Foundation. Keel keskendub mĂ€lu ohutusele ja pakub vahendeid ĂŒlesannete kĂ”rge paralleelse tĂ€itmise saavutamiseks, vĂ€ltides samal ajal prĂŒgikogu ja kĂ€itusaja (kĂ€itus aeg piirdub pĂ”hialustuse ja standardraamatukogu hooldamisega).

MÀluga töötamise meetodid Rust'is vabastavad arendajad pointerite manipulatsiooni vigadest ja kaitsevad neid probleemide eest, mis tulenevad madala taseme mÀlu haldamisest, nagu mÀlualale pÀrast selle vabastamist juurdepÀÀs, null-pointerite dereferentseerimine, puhverserveri piiridest vÀljumine jne. Raamatukogude levitamiseks, kokkupaneku tagamiseks ja sÔltuvuste haldamiseks arendatakse paketihaldurit Cargo. Raamatukogude majutamiseks toetatakse repoturite crates.io.

MĂ€luhĂŒgieen Rust'is tagatakse kompileerimise ajal viidete kontrollimise, objektide omandi jĂ€lgimise, objektide eluaja (vaateala) arvestamise ja mĂ€lule juurdepÀÀsu korrektuse hindamise kaudu koodi tĂ€itmise ajal. Rust pakub ka vahendeid tĂ€isarvude ĂŒlevoolude vĂ€ltimiseks, nĂ”uab muutujate vÀÀrtuste kohustuslikku initsialiseerimist enne kasutamist, kĂ€sitleb vigu paremini standardraamatukogus, rakendab muutumatuse (immutable) mĂ”istet viidete ja muutujate jaoks vaikimisi ning pakub tugevat staatilist tĂŒĂŒpimist loogiliste vigade vĂ€hendamiseks.

Peamised uuendused:

  • Lisatud on vĂ”imalus mÀÀrata mitu 'let'-avaldiste vĂ€ljendit 'if' ja 'while' tingimuslikes plokkides, kasutades nende ĂŒhendamiseks operaatorit '&&' (loogiline JA). 'Let'-avaldiste vĂ€ljendid vĂ”ivad olla kombineeritud boolsete tingimuslike vĂ€ljenditega. 'Let'-avaldises kuulutatud muutujad on saadaval jĂ€rgnevates tingimuslikes vĂ€ljendites ja ka 'if' ja 'while' plokkides. if let Channel::Stable(v) = release_info() && let Semver { major, minor, .. } = v && major == 1 && minor == 88 {
  • Lisatud toetus 'alasti' funktsioonide kirjutamiseks, mida tĂ€histatakse atribuudiga '#[unsafe(naked)]' ja mis sisaldavad ĂŒhte 'naked_asm!' kutset. Selliselt loodud funktsioonidel puuduvad epiloog ja proloog, mille genereerib kompilaator, mis vĂ”imaldab arendajal tĂ€ielikult kontrollida teenindava assemblerikoodi ĂŒle, mis on funktsiooniga seotud ('alasti' funktsioon sisaldab ainult arendaja mÀÀratud assembleri kĂ€sklusi ega sisalda kompilaatori lisatud argumendi ja tagastatud vÀÀrtuste spetsiaalseid töötlejaid). 'Alasti' funktsioonid peetakse mugavamaks alternatiiviks funktsioonidele, mis on mÀÀratletud plokis 'global_asm!'. #[unsafe(naked)] pub unsafe extern 'sysv64' fn wrapping_add(a: u64, b: u64) -> u64 { core::arch::naked_asm!( 'add rax, rdi, rsi', 'ret' ); }
  • Predikaatide keelde, mida kasutatakse tingimuste kompileerimise atribuutides 'cfg' ja 'cfg_attr' (mis vĂ”imaldavad koodi osi lisada vĂ”i vĂ€lja lĂŒlitada sĂ”ltuvalt mÀÀratud tingimustest), on lisatud toetus boolsete vÀÀrtuste 'true' ja 'false', mis on identifitseeritud konfiguratsioonideks, mis on alati sisse lĂŒlitatud vĂ”i alati vĂ€lja lĂŒlitatud. Neid vÀÀrtusi saab kasutada ka makros 'cfg!' ja tabelites '[target]' manifeetides ja Cargo konfiguratsioonides. VĂ€ljendeid cfg(true) ja cfg(false) vĂ”ib kasutada cfg(all()) ja cfg(any()) asemel, et oma kavatsusi selgemalt vĂ€ljendada.
  • Cargo pakettihalduris on sisse lĂŒlitatud automaatne prĂŒgikoristuse kĂ€ivitamine kasutaja kodukaustas oleva vahemĂ€lu puhastamiseks. Varem vahemĂ€llu salvestatud sĂ”ltuvuspakette ei puhastatud, mis viis pideva ketasarve suurenemiseni. LĂŒlitatud prĂŒgikoristuse mehhanism eemaldab automaatselt vĂ€listest allikatest alla laaditud crate-failid, millele ei ole pöördutud rohkem kui 3 kuu jooksul, ja kohalikult installitud crate-failid, millele ei ole pöördutud rohkem kui kuu jooksul. VahemĂ€lu puhastamine ei toimu, kui crage'is on kasutatud valikuid „—offline” vĂ”i „—frozen”.
  • Uus hulk API-d on viidud stabiilsuse tasemele, sealhulgas on stabiliseeritud meetodid ja tĂŒĂŒbispetsiifikatsioonide rakendused:
    • Cell::update
    • impl Default for *const T
    • impl Default for *mut T
    • mod ffi::c_str
    • HashMap::extract_if
    • HashSet::extract_if
    • hint::select_unpredictable
    • proc_macro::Span::line
    • proc_macro::Span::column
    • proc_macro::Span::start
    • proc_macro::Span::end
    • proc_macro::Span::file
    • proc_macro::Span::local_file
    • ::as_chunks
    • ::as_rchunks
    • ::as_chunks_unchecked
    • ::as_chunks_mut
    • ::as_rchunks_mut
    • ::as_chunks_unchecked_mut
  • MĂ€rgis „const“ on rakendatud funktsioonides:
    • NonNull::replace
    • ::replace
    • std::ptr::swap_nonoverlapping
    • Cell::replace
    • Cell::get
    • Cell::get_mut
    • Cell::from_mut
    • Cell::as_slice_of_cells
  • Eemaldatud on esimese taseme toetus sihtplatvormile i686-pc-windows-gnu.

Tasub mĂ€rkida ka Rustiga seotud sĂŒndmusi:

  • Munal OS projekt arendab katsetavat operatsioonisĂŒsteemi, mis on kirjutatud Rustis ja pĂ”hineb unikernel kontseptsioonil. Munal OS-is ei rakendata tĂ”rjuvat mitmeĂŒlesandelisust, mĂ€lulehekĂŒlgede kaardistamist ega virtuaalset aadressiruumi (kasutatakse UEFI mĂ€lu paigutust). SĂŒdamik ja rakendused töötavad ĂŒhes aadressiruumis ning kasutatakse turvamudelit, mis pĂ”hineb WASMi liivakastisolatsiooni mudelil (sisaldab wasmi mootori rakenduste kĂ€itamiseks WebAssembly bytecode'i kujul).

    OperatsioonisĂŒsteem on varustatud graafilise liidese ja toetab juhtimist klaviatuuri ja hiirega. Graafiliste rakenduste arendamiseks kasutatakse oma tööriistakomplekti koos vidinate raamatukoguga. VĂ”rguga suhtlemiseks pakutakse TCP-stekki ja vĂ”rgu seadme draivereid. Munal OS-i jaoks saadaolevate rakenduste seas on: veebibrauser, millel on alus HTML-i ja HTTPS-i toele, tekstiredaktor ja terminal Pythonis koodi tĂ€itmiseks. Kood on avatud MIT litsentsi all.

    Rust 1.88 vĂ€ljaanne. Munal operatsioonisĂŒsteem ja rsched utiliit Rustis
  • Ilmus Asterinas 0.15.2 tuum, mis on kirjutatud Rustis ja pakub Linuxi tuumaga ĂŒhilduvat ABI. Tuum toetab x86-64 ja RISC-V arhitektuure ning rakendab 206 368-st Linuxi sĂŒsteemikutsest. Tuuma arenduses osaleb 45 arendajat, peamiselt erinevatest Hiina ĂŒlikoolidest. Tuum on ĂŒles ehitatud 'framekernel' arhitektuurile, kus tuuma komponendid paiknevad ĂŒhises aadressiruumis ja turvalisus saavutatakse loogilise eristamise tasemel turvalise koodi ja potentsiaalsete turvaprobleemidega koodi vahel. KĂ”ik sĂŒsteemikutsed, failisĂŒsteemid ja draiverid rakendatakse OS Services tasemel ja ei tohi sisaldada unsafe-blokke. Kood jagatakse MPL 2.0 litsentsi alusel.
  • Linuxi tuuma jaoks on ette valmistatud rsched tööriist, mis vĂ”imaldab analĂŒĂŒsida ĂŒlesannete planeerimise statistikat. Praktiliselt vĂ”imaldab tööriist hinnata planeerija otsuseid, mis on seotud ressursside jaotamisega protsessidele, samuti jĂ€lgida planeerimisega seotud viivitusi. Andmete kogumiseks tuumas kasutatakse BPF-sĂŒsteemi, samas kui kasutajaruumi tööriistakast on kirjutatud Rustis. Tööriista autor on Chris Mason, Btrfs failisĂŒsteemi looja ja peamine arhitekt.
  • EttevĂ”te Collabora teatas Coccinelle tööriista variandi arendamisest Rusti keele jaoks. Coccinelle mĂ”eldakse algselt code'i automaatseks otsimiseks ja muutmiseks C keeles Linuxi tuumas. Muutused mÀÀratakse reeglite vormis, mis meenutavad abstraktseid patĆĄi, mis ei ole seotud konkreetse positsiooniga koodis.
  • GNOME'i arendajad esitlesid glycin nime kandvat teegi, mis on kirjutatud Rustis ja pakub piltide dekodeerimist sandox-isoleerituna. Toetatakse dekodeeritud sisu edastamist lĂ€bi gdk::Textures ja metainformatsiooni vĂ€ljavĂ”tmist. Pakutakse kĂ€ituskihti glycin'i kasutamiseks GTK4-s ning backend'i glycin'i integreerimiseks GdkPixbuf teeki, mida kasutatakse GNOME'is piltide laadimiseks. Glycin on juba integreeritud GNOME'i vaikepildivaatajas Loupe. Samuti annab GdkPixbuf'i backend vĂ”imaluse kasutada glycin'i GNOME Shellis, miniatuuride generaatorites ja ĂŒldistes GNOME rakendustes, ilma nende programmide muutmist nĂ”udmata.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster