Lançimi i Rust 1.94. Eksperimentime me Rust në bërthamën FreeBSD. DB Turso dhe CAD vcad në Rust

ËshtĂ« publikuar versioni i ri i gjuhĂ«s programuese Rust 1.94, e krijuar fillimisht nga projekti Mozilla, por qĂ« tani zhvillohet nĂ«n kujdesin e organizatĂ«s sĂ« pavarur jofitimprurĂ«se Rust Foundation. Gjuha Ă«shtĂ« e pĂ«rqendruar te puna e sigurt me memorien dhe ofron mjete pĂ«r arritjen e paralelizmit tĂ« lartĂ« nĂ« ekzekutimin e detyrave, pa pĂ«rdorur garbage collector dhe runtime (runtime kufizohet te inicializimi bazĂ« dhe mirĂ«mbajtja e bibliotekĂ«s standarde).

Metodat e punës me memorie në Rust janë të orientuara për të eliminuar gabimet gjatë manipulimit të treguesve dhe për të mbrojtur nga problemet që lindin nga puna me nivel të ulët me memorinë, siç janë akseset në zona memorien pas lirimit të saj, dereferencimi i treguesve null, tejkalimi i kufijve të bufeve etj. Për shpërndarjen e bibliotekave, sigurinë e ndërtimit dhe menaxhimin e varësive, projekti zhvillohet me ndihmën e menaxherit të paketave Cargo. Mbështetet një depo për bibliotekat, 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:

  • NĂ« tipin slice Ă«shtĂ« shtuar metoda array_windows, e cila krijon njĂ« iterator pĂ«r kalimin mbi prerje (slice) me “dritare” tĂ« madhĂ«sisĂ« fikse qĂ« zhvendosen nga njĂ« element nĂ« çdo hap. Ndryshe nga metoda windows e disponueshme mĂ« parĂ«, metoda array_windows punon me madhĂ«si konstante tĂ« dritares dhe nĂ« çdo iterim kthen njĂ« referencĂ« te njĂ« array me madhĂ«si fikse (&[T; N]) nĂ« vend tĂ« njĂ« slice me madhĂ«si tĂ« papĂ«rcaktuar (&[T]). MeqĂ« madhĂ«sia e array Ă«shtĂ« e njohur paraprakisht nga kompileri, pĂ«r tĂ« rritur performancĂ«n mund tĂ« shmanget kontrolli i kufijve tĂ« array nĂ« çdo fazĂ« tĂ« iterimit. let slice = [0, 1, 2, 3]; let mut iter = slice.array_windows(); assert_eq!(iter.next().unwrap(), &[0, 1]); assert_eq!(iter.next().unwrap(), &[1, 2]); assert_eq!(iter.next().unwrap(), &[2, 3]); assert!(iter.next().is_none());
  • NĂ« skedarĂ«t e konfigurimit tĂ« menaxherit tĂ« paketave Cargo (.cargo/config.toml) Ă«shtĂ« zbatuar direktiva «include», e cila lejon futjen nĂ« vend tĂ« pĂ«rmbajtjes sĂ« skedarĂ«ve tĂ« tjerĂ«. include = [ «frodo.toml», «samwise.toml», ] include = [ { path = «required.toml» }, { path = «optional.toml», optional = true }, ]
  • NĂ« skedarĂ«t me manifestet dhe nĂ« skedarĂ«t e konfigurimit Ă«shtĂ« shtuar mbĂ«shtetja pĂ«r versionin e ri tĂ« gjuhĂ«s sĂ« markup-it TOML 1.1, ku Ă«shtĂ« shtuar mbĂ«shtetja pĂ«r tabela inline shumĂ«linjĂ«she, sekuencat escape «\xHH» pĂ«r futjen e paraqitjes heksadecimale tĂ« bajteve dhe «\e» pĂ«r zĂ«vendĂ«simin e «\u001B», si edhe mundĂ«sia pĂ«r tĂ« lĂ«nĂ« presjen pas elementit tĂ« fundit dhe pĂ«r tĂ« mos specifikuar sekondat nĂ« vlerat e kohĂ«s. serde = { version = «1.0», features = [«derive»] } tani mund tĂ« zĂ«vendĂ«sohet me serde = { version = «1.0», features = [«derive»], }
  • NjĂ« grup i ri API u kalua nĂ« kategorinĂ« e stabilizuar, pĂ«rfshirĂ« stabilizimin e metodave dhe implementimeve tĂ« trait-Ă«ve:
    • ::array_windows
    • ::element_offset
    • LazyCell::get
    • LazyCell::get_mut
    • LazyCell::force_mut
    • LazyLock::get
    • LazyLock::get_mut
    • LazyLock::force_mut
    • impl TryFrom for usize
    • std::iter::Peekable::next_if_map
    • std::iter::Peekable::next_if_map_mut
    • Funksione tĂ« integruara pĂ«r instruksionet x86 avx512fp16
    • Funksione tĂ« integruara pĂ«r instruksionet AArch64 NEON fp16
    • f32::consts::EULER_GAMMA
    • f64::consts::EULER_GAMMA
    • f32::consts::GOLDEN_RATIO
    • f64::consts::GOLDEN_RATIO
  • Priznaku «const» aplicohet nĂ« funksione:
    • f32::mul_add
    • f64::mul_add
  • Platforma riscv64im-unknown-none-elf Ă«shtĂ« kaluar nĂ« nivelin e tretĂ« tĂ« mbĂ«shtetjes. Niveli i tretĂ« pĂ«rfshin mbĂ«shtetje bazĂ«, por pa testim tĂ« automatizuar, publikim tĂ« build-eve zyrtare dhe verifikim tĂ« mundĂ«sisĂ« sĂ« kompilimit tĂ« kodit.

Gjithashtu mund të theksohet projektet dhe ngjarjet e shpallura së fundmi të lidhura me Rust:

  • Ayrton Muñoz, i cili mĂ« parĂ« realizoi mbĂ«shtetjen pĂ«r platformĂ«n Sony PlayStation 1 nĂ« kompajlerin Rust dhe u mor me portimin e FreeBSD nĂ« kompjuterĂ« me çipa Apple Silicon, ka zbatuar pĂ«r FreeBSD mundĂ«sinĂ« e krijimit tĂ« komponentĂ«ve tĂ« kernelit dhe driverĂ«ve tĂ« pajisjeve nĂ« gjuhĂ«n Rust. PĂ«r testim Ă«shtĂ« propozuar njĂ« grup KPI wrappers (Kernel Programming Interface), qĂ« lejon pĂ«rdorimin e kodit Rust nĂ« kernelin e FreeBSD, si dhe janĂ« krijuar, duke pĂ«rdorur kĂ«to wrappers, driveri i zĂ«rit virtio (virtio_snd), driveri HID DockChannel pĂ«r tastierĂ«n nĂ« M2 MacBook dhe disa driverĂ« tĂ« nivelit tĂ« ulĂ«t pĂ«r nĂ«nsistemet e kompjuterĂ«ve Mac me çipa Apple Silicon.

    Theksohet se puna pĂ«r Rust wrappers po zhvillohet qĂ« nga fundi i vitit 2024. NĂ« kĂ«to wrappers deri tani Ă«shtĂ« zbatuar vetĂ«m njĂ« pjesĂ« e C-KPI dhe ato konsiderohen ende jo stabile, por me kalimin e kohĂ«s niveli i stabilitetit pritet tĂ« afrohet me atĂ« tĂ« ndĂ«rfaqes analoge pĂ«r gjuhĂ«n C. Driveri virtio_snd, i propozuar si shembull, Ă«shtĂ« i pĂ«rshtatshĂ«m pĂ«r riprodhimin e muzikĂ«s nĂ« QEMU. Supozohet se nĂ« vitin 2026 Rust wrappers do tĂ« jenĂ« stabilizuar mjaftueshĂ«m qĂ« zhvilluesit e interesuar tĂ« mund tĂ« nisin t’i pĂ«rdorin pĂ«r shkrimin e kodit.

  • Benny Siegert, i cili merr pjesĂ« nĂ« zhvillimin e NetBSD, u pĂ«rpoq tĂ« argumentojĂ« arsyet pse mbĂ«shtetja pĂ«r gjuhĂ«n Rust nuk do tĂ« shfaqet nĂ« kernelin e NetBSD: NetBSD mbĂ«shtet arkitektura pĂ«r tĂ« cilat Rust nuk Ă«shtĂ« i disponueshĂ«m; mirĂ«mbajtja e toolchain-it Rust qĂ« ndodhet nĂ« pkgsrc kĂ«rkon pĂ«rpjekje tĂ« mĂ«dha dhe mbĂ«shtetet vetĂ«m nga disa zhvillues; mbĂ«shtetja e Rust nĂ« kernel kĂ«rkon pĂ«rfshirjen e kompajlerit Rust nĂ« sistemin bazĂ«; gjatĂ« bootstrap-it tĂ« Rust nĂ« NetBSD pĂ«rdoret versioni i mĂ«parshĂ«m i paketĂ«s binare, gjĂ« e papranueshme pĂ«r distribucione tĂ« vetĂ«qĂ«ndrueshme qĂ« shpĂ«rndahen nĂ« kod burimor; ciklet e publikimit tĂ« Rust nuk pĂ«rputhen me ciklin e zhvillimit tĂ« NetBSD dhe me mbĂ«shtetjen e degĂ«ve tĂ« mĂ«parshme (pĂ«r shembull, dega NetBSD 9, e publikuar nĂ« vitin 2020, vazhdon tĂ« mbĂ«shtetet, dhe nĂ« kĂ«to kushte do tĂ« nevojitej shpĂ«rndarja dhe mirĂ«mbajtja e njĂ« kompajleri Rust gjashtĂ«vjeçar).
  • ËshtĂ« publikuar versioni 0.5 i Turso, njĂ« DBMS e integrueshme nĂ« aplikacione, e shkruar nĂ« Rust dhe e pĂ«rputhshme me SQLite nĂ« nivelin e dialektit SQL, formatit tĂ« skedarĂ«ve tĂ« bazĂ«s sĂ« tĂ« dhĂ«nave dhe C API. NdĂ«r veçoritĂ« e avancuara veçohen mekanizmi CDC (Change data capture) pĂ«r gjurmimin nĂ« kohĂ« reale tĂ« ndryshimeve nĂ« bazĂ«n e tĂ« dhĂ«nave, pĂ«rdorimi i io_uring pĂ«r hyrje/dalje asinkrone nĂ« Linux, mbĂ«shtetja pĂ«r kĂ«rkim vektorial, prania e shprehjes ALTER pĂ«r ndryshimin e skemĂ«s sĂ« bazĂ«s sĂ« tĂ« dhĂ«nave, mundĂ«sia e enkriptimit tĂ« tĂ« dhĂ«nave nĂ« bazĂ«n e tĂ« dhĂ«nave, mĂ«nyra e llogaritjeve inkrementale dhe konstrukti «BEGIN CONCURRENT».
  • Projekt pĂ«r ofrimin e mundĂ«sisĂ« sĂ« pĂ«rdorimit tĂ« bibliotekĂ«s standarde Rust nĂ« programe qĂ« ekzekutohen nĂ« anĂ«n e GPU-sĂ«.
  • Emuko — emulator RISC-V, i shkruar nĂ« Rust, qĂ« mund tĂ« ngarkojĂ« Linux, mbĂ«shtet JIT-kompilimin dhe mund tĂ« ruajĂ« e rikthejĂ« snapshot-et e gjendjes.
  • RustConn (flatpak) — ndĂ«rfaqe grafike pĂ«r menaxhimin e lidhjeve tĂ« jashtme tĂ« rrjetit me hoste tĂ« tjerĂ«, me mbĂ«shtetje pĂ«r SSH, RDP, VNC, SPICE, Telnet, Serial, Kubernetes, Zero Trust dhe SFTP. Kodi Ă«shtĂ« shkruar nĂ« Rust duke pĂ«rdorur GTK4 dhe Wayland.
  • ËshtĂ« prezantuar dega e re e projektit zlib-rs 0.6, e cilĂ«suar si versioni i parĂ« stabil, plotĂ«sisht i pĂ«rputhshĂ«m me zlib C API dhe i pĂ«rshtatshĂ«m pĂ«r zĂ«vendĂ«simin transparent tĂ« zlib. Projekti synon krijimin e njĂ« alternative tĂ« sigurt pĂ«r bibliotekĂ«n e kompresimit tĂ« tĂ« dhĂ«nave zlib. Zhvillimi po ecĂ«n duke pasur parasysh projektin zlib-ng, i cili zhvillon njĂ« variant tĂ« zlib me performancĂ« tĂ« lartĂ«.
  • ËshtĂ« prezantuar projekti vcad, qĂ« zhvillon njĂ« sistem parametrik CAD, tĂ« shkruar nĂ« Rust dhe tĂ« integrueshĂ«m me AI-agentĂ« pĂ«rmes protokollit MCP. MbĂ«shteten modelimi 3D, simulimi, puna me skica 2D, montimi me komponentĂ«, importi nĂ« formatin STEP dhe eksporti nĂ« formatet STL/GLB/STEP/DXF.
  • ËshtĂ« publikuar njĂ« sistem i njohjes sĂ« tĂ« folurit, i shkruar nĂ« Rust dhe qĂ« pĂ«rdor modelin AI Mistral Voxtral Mini 4B Realtime si edhe framework-un e machine learning Burn. Projekti Ă«shtĂ« i orientuar drejt njohjes sĂ« tĂ« folurit nĂ« kohĂ« reale pĂ«r krijimin e transkriptimit gjatĂ« transmetimit nĂ« rrjedhĂ«.
  • ËshtĂ« publikuar versioni 0.22 i paketĂ«s sĂ« mjeteve c2rust, e destinuar pĂ«r pĂ«rkthimin e kodit C (C99) nĂ« njĂ« paraqitje unsafe nĂ« Rust, tĂ« afĂ«rt nĂ« strukturĂ« me kodin burimor nĂ« C. Korniza funksionale e pĂ«rftuar mund tĂ« pĂ«rdoret mĂ« pas pĂ«r kalim gradual nĂ« Rust idiomatik dhe pĂ«r eliminimin e blloqeve unsafe.

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