Publikimi i Rust 1.88. Sistemi operativ Munal dhe mjeti rsched në Rust

ËshtĂ« publikuar rilizimi i gjuhĂ«s sĂ« programimit tĂ« pĂ«rgjithshĂ«m Rust 1.88, e cila Ă«shtĂ« zhvilluar fillimisht nga projekti Mozilla, por tani po zhvillohet nĂ«n mbĂ«shtetje tĂ« njĂ« organizate jo-fitimprurĂ«se tĂ« pavarur, Rust Foundation. Gjuha fokusohet nĂ« sigurimin e punĂ«s me kujtesĂ« dhe ofron mjete pĂ«r arritjen e njĂ« paralelizmi tĂ« lartĂ« nĂ« ekzekutimin e detyrave, duke kaluar pa pĂ«rdorimin e mbledhĂ«sit tĂ« plehrave dhe runtime-it (runtime Ă«shtĂ« i kufizuar nĂ« inicializimin bazĂ« dhe mbĂ«shtetje pĂ«r bibliotekĂ«n standarde).

Metodat e punës me kujtesën në Rust e çlirojnë zhvilluesin nga gabimet gjatë manipulimit me treguesit dhe e mbrojnë atë nga problemet që lindin për shkak të punës me kujtesën në nivel të ulët, si qasja në një zonë kujtese pas çlirimit të saj, dereferencimi i treguesve null, dalja jashtë kufijve të buffers etj. Për shpërndarjen e bibliothekave, sigurimin e ndërtimit dhe menaxhimin e varësive, projekti zhvillohet me menaxherin e paketave Cargo. Për mbështetje të bibliothekave, ekziston një repository crates.io.

Puna e sigurt me kujtesën sigurohet në Rust gjatë kompilimit përmes verifikimit të referencave, ndjekjes së pronësisë së objekteve, llogaritjes së kohëzgjatjes së jetës së objekteve (fushave të dukshmërisë) dhe vlerësimit të saktësisë së qasjes në kujtesë gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete për mbrojtjen nga tejkalimet e numrave të plotë, kërkon inicializimin e detyrueshëm të vlerave të variablave para përdorimit, trajton më mirë gabimet në bibliotekën standarde, aplikon konceptin e referencave dhe variablave të pandryshueshëm (immutable) si standard dhe ofron tipizimin e fortë statik për të minimizuar gabimet logjike.

Novitetet kryesore:

  • ËshtĂ« shtuar mundĂ«sia pĂ«r tĂ« specifikuar disa shprehje "let" brenda blloqeve kushtore "if" dhe "while" duke pĂ«rdorur operatorin "&&" (logjike dhe). Shprehjet "let" mund tĂ« kombinohen me shprehje kushtore booleane. Variablat e shpallura nĂ« shprehjet let mund tĂ« pĂ«rdoren nĂ« shprehjet kushtore pasuese, si dhe brenda blloqeve "if" dhe "while". if let Channel::Stable(v) = release_info() && let Semver { major, minor, .. } = v && major == 1 && minor == 88 {
  • ËshtĂ« shtuar mbĂ«shtetje pĂ«r shkruarjen e funksioneve "naked", tĂ« cilat shenjohet me atributin "#[unsafe(naked)]" dhe pĂ«rmbajnĂ« brenda njĂ« thirrje "naked_asm!". Funksionet e krijuara nĂ« kĂ«tĂ« mĂ«nyrĂ« nuk kanĂ« epilog dhe prolog tĂ« gjeneruar nga kompajleri, gjĂ« qĂ« i lejon zhvilluesit tĂ« kontrollojĂ« plotĂ«sisht kodin asamble qĂ« lidhet me funksionin (funksioni "naked" pĂ«rmban vetĂ«m instruksionet asamble tĂ« treguara nga zhvilluesi dhe nuk pĂ«rfshin menaxhues special pĂ«r argumentet dhe vlerat e rikthimit qĂ« shtohen nga kompajleri). Funksionet "naked" konsiderohen si njĂ« alternativĂ« mĂ« tĂ« pĂ«rshtatshme pĂ«r funksionet e pĂ«rcaktuara nĂ« bllokun "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" ); }
  • NĂ« gjuhĂ«n e predikateve, qĂ« aplikohet nĂ« atributet e kompilimit kushtor "cfg" dhe "cfg_attr" (tĂ« cilat lejojnĂ« pĂ«rfshirjen ose çaktivizimin e pjesĂ«ve tĂ« kodit nĂ« varĂ«si tĂ« kushteve tĂ« caktuara), Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r literalet booleane "true" dhe "false", tĂ« cilat janĂ« identifikuar me konfiguracionet qĂ« janĂ« gjithmonĂ« aktive ose gjithmonĂ« tĂ« çaktivizuara. KĂ«to literale gjithashtu mund tĂ« pĂ«rdoren nĂ« makron "cfg!" dhe tabelat "[target]" nĂ« manifestet dhe konfigurimet pĂ«r Cargo. Shprehjet cfg(true) dhe cfg(false) mund tĂ« pĂ«rdoren nĂ« vend tĂ« cfg(all()) dhe cfg(any()) pĂ«r njĂ« shprehje mĂ« tĂ« qartĂ« tĂ« qĂ«llimeve tuaja.
  • Menaxheri i paketave Cargo pĂ«rfshin njĂ« aktivizim automatik tĂ« mbledhĂ«sit tĂ« mbeturinave pĂ«r pastrimin e caches nĂ« katalogun e pĂ«rdoruesit. Paketat qĂ« ruheshin mĂ« parĂ« nĂ« cache me varĂ«si tĂ« shkarkuara nuk pastruan, duke çuar nĂ« njĂ« rritje tĂ« pandĂ«rprerĂ« tĂ« konsumit tĂ« hapĂ«sirĂ«s disku. Mekanizmi i aktivizuar i mbledhjes sĂ« mbeturinave do tĂ« fshijĂ« automatikisht skedarĂ«t crate tĂ« shkarkuar qĂ« nuk janĂ« pĂ«rdorur pĂ«r mĂ« shumĂ« se 3 muaj, si dhe skedarĂ«t crate lokalĂ« qĂ« nuk janĂ« pĂ«rdorur pĂ«r mĂ« shumĂ« se njĂ« muaj. Pastrimi i caches nuk aktivizohet kur pĂ«rdoren opsionet '—offline' ose '—frozen' nĂ« crage.
  • NjĂ« grup i ri API u kalua nĂ« kategorinĂ« e stabilizuar, pĂ«rfshirĂ« stabilizimin e metodave dhe implementimeve tĂ« trait-Ă«ve:
    • 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
  • Priznaku «const» aplicohet nĂ« funksione:
    • NonNull::replace
    • ::replace
    • std::ptr::swap_nonoverlapping
    • Cell::replace
    • Cell::get
    • Cell::get_mut
    • Cell::from_mut
    • Cell::as_slice_of_cells
  • U ndihmua njĂ« nivel tĂ« parĂ« tĂ« mbĂ«shtetjes pĂ«r platformĂ«n e synuar i686-pc-windows-gnu.

Gjithashtu, mund të përmenden ngjarjet e lidhura me Rust:

  • Projekti Munal OS zhvillon njĂ« sistem operativ eksperimental, i shkruar nĂ« Rust dhe i bazuar nĂ« konceptin unikernel. NĂ« Munal OS nuk pĂ«rdoret shumĂ«llojshmĂ«ri e ndĂ«rlikuar, hartimi i faqeve tĂ« memories dhe hapĂ«sira virtuale adresash (pĂ«rdoret ndarja e memories nga UEFI). Ngritja dhe aplikacionet ekzekutohen nĂ« tĂ« njĂ«jtĂ«n hapĂ«sirĂ« adresash sipas modelit tĂ« sigurisĂ« tĂ« ndĂ«rtuar mbi sandbox-izolimin WASM (pjesĂ« e saj Ă«shtĂ« motori wasmi pĂ«r ekzekutimin e aplikacioneve nĂ« formĂ«n e kodit tĂ« WebAssembly).

    Sistemi operativ është i pajisur me ndërfaqe grafike dhe mbështet menaxhimin përmes tastierës dhe mausit. Për zhvillimin e aplikacioneve grafike përdoret një toolkit i vetë-ndërtuar me një bibliotekë widgetesh. Për ndërveprimin në rrjet ofrohen një stek TCP dhe një drejtues pajisje rrjeti. Midis aplikacioneve të disponueshme për Munal OS: një shfletues web me mbështetje të bazuar për HTML dhe HTTPS, një editor teksti dhe një terminal për ekzekutimin e kodit në Python. Kodi është i hapur nën licencën MIT.

    Publikimi i Rust 1.88. Sistemi operativ Munal dhe mjeti rsched në Rust
  • LĂ«shimi i kernelit Asterinas 0.15.2, i shkruar nĂ« Rust dhe qĂ« ofron ABI, i pĂ«rputhshĂ«m me kernelin Linux. Kernel-i mbĂ«shtet arkitekturat x86-64 dhe RISC-V, dhe implementon 206 nga 368 thirrjet sistemike tĂ« Linux. NĂ« zhvillimin e kernelit kanĂ« marrĂ« pjesĂ« 45 zhvillues, kryesisht nga universitete tĂ« ndryshme kineze. Kernel-i Ă«shtĂ« ndĂ«rtuar duke pĂ«rdorur arkitekturĂ«n "framekernel", nĂ« tĂ« cilĂ«n komponentĂ«t e kernelit vendosen nĂ« njĂ« hapĂ«sirĂ« tĂ« pĂ«rbashkĂ«t adresash, dhe siguria arrihet nĂ« nivelin e ndarjes logjike tĂ« kodit tĂ« sigurt dhe kodit, ku nuk pĂ«rjashtohet ndodhia e problemeve me sigurinĂ«. TĂ« gjitha thirrjet sistemike, sistemet e skedarĂ«ve dhe drejtuarĂ«sit implementohen nĂ« nivelin e ShĂ«rbimeve OS dhe nuk mund tĂ« pĂ«rfshijnĂ« blloqe tĂ« pasigurta. Kodi shpĂ«rndahet nĂ«n licencĂ«n MPL 2.0.
  • PĂ«r kernelin Linux Ă«shtĂ« pĂ«rgatitur njĂ« mjet rsched, qĂ« lejon analizimin e statistikave pĂ«r funksionimin e planifikuesit tĂ« detyrave. NĂ« praktikĂ«, mjeti lejon vlerĂ«simin e vendimeve tĂ« planifikuesit tĂ« lidhura me ofrimin e burimeve pĂ«r proceset, si dhe ndjekjen e vonesave qĂ« ndodhin gjatĂ« planifikimit. PĂ«r mbledhjen e tĂ« dhĂ«nave nĂ« kernel pĂ«rdoret nĂ«n sistemi BPF, ndĂ«rsa mjeti qĂ« punon nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit Ă«shtĂ« shkruar nĂ« Rust. Autori i mjetit Ă«shtĂ« Chris Mason, krijuesi dhe arkitekti kryesor i sistemit tĂ« skedarĂ«ve Btrfs.
  • Kompania Collabora njoftoi pĂ«r zhvillimin e njĂ« varianti tĂ« mjeteve Coccinelle pĂ«r gjuhĂ«n Rust. Coccinelle fillimisht Ă«shtĂ« destinacion pĂ«r automatizimin e kĂ«rkimit dhe transformimit tĂ« kodit nĂ« gjuhĂ«n C nĂ« kernelin Linux. Transformimet formohen nĂ« formĂ«n e rregullave qĂ« ngjajnĂ« me patches tĂ« abstrahuara, tĂ« pa lidhura me njĂ« pozicion tĂ« veçantĂ« nĂ« kod.
  • Zhvilluesit e GNOME prezantuan njĂ« bibliotekĂ« pĂ«r ngarkimin e imazheve glycin, tĂ« shkruar nĂ« Rust dhe qĂ« siguron dekodimin e imazheve duke pĂ«rdorur izolimin e sandbox-it. MbĂ«shtetet dorĂ«zimi i pĂ«rmbajtjes sĂ« dekoduar pĂ«rmes gdk::Textures dhe nxjerrja e metadata. Ofrohen mbĂ«shtetje pĂ«r pĂ«rdorimin e glycin nĂ« GTK4, si dhe njĂ« backend pĂ«r tĂ« angazhuar glycin nĂ« bibliotekĂ«n GdkPixbuf, e cila pĂ«rdoret nĂ« GNOME pĂ«r ngarkimin e imazheve. Glycin Ă«shtĂ« tashmĂ« i angazhuar nĂ« shikuesin e imazheve Loupe, i ofruar nĂ« GNOME si defolt. Gjithashtu, backend-i pĂ«r GdkPixbuf ofron mundĂ«sinĂ« pĂ«r tĂ« pĂ«rdorur glycin nĂ« GNOME Shell, gjeneratorĂ«t e miniaturave dhe aplikacione tĂ« ndryshme GNOME, pa bĂ«rĂ« ndryshime nĂ« kĂ«to programe.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster