Lëshimi i Rust 1.88. Sistema operative Munal dhe utilitari rsched në Rust

ËshtĂ« publikuar versioni i gjuhĂ«s sĂ« programimit tĂ« pĂ«rgjithshĂ«m Rust 1.88, e bazuar nĂ« projektin Mozilla, tani nĂ«n mbikĂ«qyrjen e njĂ« organizate tĂ« pavarur jofitimprurĂ«se, Rust Foundation. Gjuha fokusohet nĂ« sigurinĂ« e punĂ«s me memorien dhe ofron mjete pĂ«r tĂ« arritur njĂ« paralelizm tĂ« lartĂ« nĂ« ekzekutimin e detyrave, duke mos pĂ«rdorur mbledhĂ«sin e plehrave dhe runtime (runtime reduktohet nĂ« inicializimin bazĂ« dhe mbĂ«shtetje tĂ« bibliotekĂ«s standarde).

Metodat e punës me kujtesën në Rust e çlirojnë zhvilluesin nga gabimet gjatë manipulimit të treguesve dhe mbrojnë nga problemet që lindin nga puna me nivel të ulët me kujtesën, siç janë referimi në një zonë kujtese pas çlirimit të saj, dereferimi i treguesve null, tejkalimi i kufijve të tamponëve etj. Për shpërndarjen e biblioteka, për të siguruar ndërtimin dhe menaxhimin e varësive, projekti zhvillon menaxherin e paketave Cargo. Për ruajtjen e bibliotekave, mbështetet depoja crates.io.

Përdorimi i sigurt i memories sigurohet në Rust gjatë kompilimit përmes verifikimit të lidhjeve, gjurmimit të pronësisë së objekteve, përllogaritjes së kohëzgjatjes së objekteve (fushave të dukshmërisë) dhe vlerësimit të saktësisë së qasjes në memorie gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete për mbrojtje nga tejkalimet e numrave të plotë, kërkon inicializim të detyrueshëm të vlerave të variablave para përdorimit, menaxhon më mirë gabimet në bibliotekën standarde, aplikon konceptin e lidhjeve dhe variablave të pandryshueshëm (immutable) si parazgjedhje, dhe ofron tipizim të fortë statik për minimizimin e gabimeve logjike.

TĂ« rejat kryesore:

  • ËshtĂ« shtuar mundĂ«sia pĂ«r tĂ« specifikuar disa shprehje "let" brenda blokjeve kushtore "if" dhe "while" duke pĂ«rdorur operatorin "&&" (logjika AND). Shprehjet "let" mund tĂ« kombinohen me shprehjet kushtore boolean. Variablat e shpallura nĂ« shprehjet let mund tĂ« pĂ«rdoren nĂ« shprehjet kushtore qĂ« pasojnĂ«, si dhe brenda blokjeve "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 shkruhjen e funksioneve "naked" tĂ« shĂ«nuara me atributin "#[unsafe(naked)]" dhe qĂ« pĂ«rmbajnĂ« brenda njĂ« thirrje "naked_asm!". Funksionet e krijuara nĂ« kĂ«tĂ« mĂ«nyrĂ« nuk kanĂ« epilog dhe prolog tĂ« gjeneruar nga kompajleri, duke lejuar zhvilluesin tĂ« kontrollojĂ« plotĂ«sisht kodin ndihmĂ«s assembler tĂ« lidhur me funksionin (funksioni "naked" pĂ«rmban vetĂ«m instruksionet assembler tĂ« pĂ«rcaktuara nga zhvilluesi dhe nuk pĂ«rfshin trajtues tĂ« veçantĂ« pĂ«r argumentet dhe vlerat e kthimit tĂ« shtuar nga kompajleri). Funksionet "naked" konsiderohen si njĂ« alternativĂ« mĂ« tĂ« pĂ«rshtatshme pĂ«r funksionet e pĂ«rcaktuara nĂ« blokun "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, e cila aplikohet nĂ« atributet e kompilimit kushtor "cfg" dhe "cfg_attr" (qĂ« lejojnĂ« pĂ«rfshirjen ose çaktivizimin e pjesĂ«ve tĂ« kodit nĂ« varĂ«si tĂ« kushteve tĂ« caktuara), Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r literalet boolean "true" dhe "false", tĂ« cilat identifikohen me konfigurimet qĂ« janĂ« gjithmonĂ« tĂ« aktivizuara 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 tĂ« shprehur mĂ« qartĂ« qĂ«llimet e tua.
  • NĂ« menaxherin e paketave Cargo Ă«shtĂ« pĂ«rfshirĂ« nisja automatike e mbledhĂ«sit tĂ« plehrave pĂ«r tĂ« pastruar cache-nĂ« nĂ« katalogun e shtĂ«pisĂ« tĂ« pĂ«rdoruesit. Pakot e ruajtura mĂ« parĂ« nĂ« cache me varĂ«si tĂ« shkarkueshme nuk janĂ« pastruar, duke çuar nĂ« rritjen e vazhdueshme tĂ« konsumit tĂ« hapĂ«sirĂ«s disk. Mekanizmi i aktivizuar i mbledhjes sĂ« plehrave do tĂ« fshijĂ« automatikisht skedarĂ«t crate tĂ« shkarkuar nga jashtĂ«, tĂ« cilĂ«ve nuk iu Ă«shtĂ« drejtuar pĂ«r mĂ« shumĂ« se 3 muaj dhe skedarĂ«t crate tĂ« instaluar lokal qĂ« nuk janĂ« pĂ«rdorur pĂ«r mĂ« shumĂ« se njĂ« muaj. Pastrimi i cache nuk aktivizohet kur pĂ«rdoret nĂ« cargo opsionet "--offline" ose "--frozen".
  • NjĂ« sasi e re API Ă«shtĂ« kaluar nĂ« kategorinĂ« stabile, pĂ«rfshirĂ« stabilizimin e metodave dhe implementimeve tĂ« tipazheve:
    • 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
  • T symboli «const» Ă«shtĂ« aplikuar nĂ« funksionet:
    • NonNull::replace
    • ::replace
    • std::ptr::swap_nonoverlapping
    • Cell::replace
    • Cell::get
    • Cell::get_mut
    • Cell::from_mut
    • Cell::as_slice_of_cells
  • ËshtĂ« hequr niveli i parĂ« i mbĂ«shtetjes pĂ«r platformĂ«n e targetit i686-pc-windows-gnu.

Gjithashtu mund të theksohen 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 multitasking i shtypur, mapimi i faqeve tĂ« memories dhe hapĂ«sira virtuale e adresĂ«s (pĂ«rdoret pĂ«rveç ndarjen e memories nga UEFI). BĂ«rthama dhe aplikacionet ekzekutohen nĂ« njĂ« hapĂ«sirĂ« adresimi tĂ« njĂ«jtĂ« duke pĂ«rdorur modelin e sigurisĂ« tĂ« bazuar nĂ« izolimin e sandboxit WASM (pĂ«rfshin motorin wasmi pĂ«r tĂ« ekzekutuar aplikacionet nĂ« formĂ«n e bytecode WebAssembly).

    Sistemi operativ është i pajisur me një ndërfaqe grafike dhe mbështet menaxhimin nëpërmjet tastierës dhe mausit. Për zhvillimin e aplikacioneve grafike përdoret një toolkit i vet, me një bibliotekë widget. Për ndërveprimin në rrjet ofrohen një stak TCP dhe një driver për pajisjen e rrjetit. Ndër aplikacionet e disponueshme për Munal OS janë: shfletues web me mbështetje të bazuar për HTML dhe HTTPS, një redaktor teksti dhe një terminal për ekzekutimin e kodit në Python. Kodi është i hapur nën licencën MIT.

    Lëshimi i Rust 1.88. Sistema operative Munal dhe utilitari rsched në Rust
  • LĂ«shimi i kernelit Asterinas 0.15.2, i shkruar nĂ« Rust dhe qĂ« ofron ABI tĂ« pĂ«rputhshĂ«m me kernelin Linux, u realizua. Ky kernel mbĂ«shtet arkitekturat x86-64 dhe RISC-V, dhe implementon 206 nga 368 thirrjet sistemore tĂ« Linux. NĂ« zhvillimin e kernelit marrin pjesĂ« 45 zhvillues, kryesisht nga universitete tĂ« ndryshme kineze. Kernelit Ă«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 shfaqja e problemeve tĂ« sigurisĂ«. TĂ« gjitha thirrjet sistemore, sistemet e skedarĂ«ve dhe drejtuesit janĂ« implementuar 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 utiliteti rsched, i cili lejon analizimin e statistikave tĂ« funksionimit tĂ« planifikuesit tĂ« detyrave. NĂ« praktikĂ«, utiliteti mundĂ«son vlerĂ«simin e vendimeve tĂ« planifikuesit qĂ« lidhen me ndarjen e burimeve pĂ«r proceset, si dhe monitorimin e vonesave qĂ« ndodhin gjatĂ« planifikimit. PĂ«r mbledhjen e tĂ« dhĂ«nave nĂ« kernel pĂ«rdoret nĂ«n-sistemi BPF, ndĂ«rsa instrumenti qĂ« funksionon nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit Ă«shtĂ« shkruar nĂ« Rust. Autori i utilitetit Ă«shtĂ« Chris Mason, krijuesi dhe arkitekti kryesor i sistemit tĂ« skedarĂ«ve Btrfs.
  • Kompania Collabora njoftoi pĂ«r zhvillimin e njĂ« variante tĂ« instrumentit Coccinelle pĂ«r gjuhĂ«n Rust. Coccinelle Ă«shtĂ« projektuar fillimisht pĂ«r automatizimin e kĂ«rkimit dhe transformimit tĂ« kodit nĂ« gjuhĂ«n C nĂ« kernelin Linux. Transformimet pĂ«rcaktohen nĂ« formĂ«n e rregullave qĂ« ngjajnĂ« me patches tĂ« abstraguara, tĂ« pa lidhura me njĂ« pozitĂ« tĂ« caktuar nĂ« kod.
  • Zhvilluesit e GNOME prezantuan bibliotekĂ«n pĂ«r ngarkimin e imazheve glycin, tĂ« shkruar nĂ« gjuhĂ«n Rust dhe qĂ« ofron dekodimin e imazheve me pĂ«rdorimin e izolacionit sandbox. MbĂ«shtetet transferimi i pĂ«rmbajtjes tĂ« dekoduar pĂ«rmes gdk::Textures dhe nxjerrja e metadatas. Ofruan mbĂ«shtetje pĂ«r pĂ«rdorimin e glycin nĂ« GTK4, si dhe njĂ« backend pĂ«r angazhimin e glycin nĂ« bibliotekĂ«n GdkPixbuf, e cila pĂ«rdoret nĂ« GNOME pĂ«r ngarkimin e imazheve. Glycin tashmĂ« Ă«shtĂ« pĂ«rdorur nĂ« shikuesin e imazheve Loupe, i ofruar si defolt nĂ« GNOME. NĂ« kĂ«tĂ« drejtim, 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

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster