Lëshimi i Rust 1.94. Eksperimentet me Rust në kernelin FreeBSD. DB Turso dhe CAD vcad në Rust

Ësht publikuar lĂ«shimi i gjuhĂ«s sĂ« programimit Rust 1.94, e cila Ă«shtĂ« e bazuar nĂ« projektin Mozilla, por tani po zhvillohet nĂ«n mbĂ«shtetje tĂ« OrganizatĂ«s Jo-FitimprurĂ«se Rust Foundation. Gjuha Ă«shtĂ« e fokusuar nĂ« sigurimin e punĂ«s me memorien dhe ofron mjete pĂ«r tĂ« arritur paralelizm tĂ« lartĂ« nĂ« ekzekutimin e detyrave, ndĂ«rkohĂ« qĂ« shmang pĂ«rdorimin e grumbulluesit tĂ« plehrave dhe runtime (runtime reduktohet nĂ« inicializimin bazĂ« dhe mbĂ«shtetje tĂ« bibliotekĂ«s standarde).

Metodat e punës me memorien në Rust kanë si objektiv të ekskludojnë gabimet gjatë manipulimit të treguesve dhe të mbrojnë nga problemet që lindin për shkak të punës me memorien në nivel të ulët, siç janë qasja në hapësirën e memories pas çlirimit të saj, dereferencimi i treguesve zero, dalja jashtë kufijve të tamponit, etj. Për shpërndarjen e librarive, sigurimin e ndërtimit dhe menaxhimin e varësive, projekti zhvillohet me menaxherin e paketave Cargo. Për mbështetje të librarive, mbahet repozitori 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:

  • NĂ« tipin slice Ă«shtĂ« shtuar metoda array_windows, e cila krijon njĂ« iterator pĂ«r tĂ« kaluar nĂ«pĂ«r sĂ«rĂ« (slice) "dritare" me pĂ«rmasĂ« fikse, duke u zhvendosur njĂ« element nĂ« herĂ«. Ndryshe nga metoda e mĂ«parshme windows, metoda array_windows operon me njĂ« madhĂ«si tĂ« vazhdueshme dritare dhe kthen nĂ« secilĂ«n iteraim njĂ« referencĂ« nĂ« njĂ« array me pĂ«rmasĂ« fikse (&[T; N]) nĂ« vend tĂ« njĂ« sere me madhĂ«si tĂ« pacaktuar (&[T]). Pasi madhĂ«sia e array-it Ă«shtĂ« e njohur fillimisht nga kompilatorin, pĂ«r tĂ« rritur performancĂ«n mund tĂ« kursehet kontrolli i kufijve tĂ« array-it nĂ« çdo fazĂ« itereimi. 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Ă« implementuar direktiva "include", e cila lejon qĂ« nĂ« vend tĂ« pĂ«rfshihet pĂ«rmbajtja e skedareve tĂ« tjera. include = [ "frodo.toml", "samwise.toml", ] include = [ { path = "required.toml" }, { path = "optional.toml", optional = true }, ]
  • NĂ« skedarĂ«t e manifestĂ«ve dhe skedarĂ«t e konfiguracionit Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r versionin e ri tĂ« gjuhĂ«s sĂ« shenjtĂ« TOML 1.1, e cila ka sjellĂ« mbĂ«shtetje pĂ«r tabela tĂ« shumĂ«fishta tĂ« brendshme, sekuenca tĂ« escapes «\xHH» pĂ«r tĂ« futur pĂ«rfaqĂ«simin hexadecimal tĂ« bajtĂ«ve dhe «\e» pĂ«r tĂ« zĂ«vendĂ«suar «\u001B», mundĂ«sinĂ« pĂ«r tĂ« lĂ«nĂ« njĂ« presje nĂ« fund tĂ« elementit tĂ« fundit dhe pĂ«r tĂ« anashkaluar caktimin e sekondave 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Ă« sasi e re API Ă«shtĂ« kaluar nĂ« kategorinĂ« stabile, pĂ«rfshirĂ« stabilizimin e metodave dhe implementimeve tĂ« tipazheve:
    • ::array_windows
    • ::element_offset
    • LazyCell::get
    • LazyCell::get_mut
    • LazyCell::force_mut
    • LazyLock::get
    • LazyLock::get_mut
    • LazyLock::force_mut
    • impl TryFrom pĂ«r usize
    • std::iter::Peekable::next_if_map
    • std::iter::Peekable::next_if_map_mut
    • Funksionet e brendshme pĂ«r instrukcionet x86 avx512fp16
    • Funksionet e brendshme pĂ«r instrukcionet NEON fp16 tĂ« AArch64
    • f32::consts::EULER_GAMMA
    • f64::consts::EULER_GAMMA
    • f32::consts::GOLDEN_RATIO
    • f64::consts::GOLDEN_RATIO
  • T symboli «const» Ă«shtĂ« aplikuar nĂ« funksionet:
    • f32::mul_add
    • f64::mul_add
  • Platforma riscv64im-unknown-none-elf Ă«shtĂ« kaluar nĂ« nivelin e tretĂ« tĂ« mbĂ«shtetjes. Nivelin e tretĂ« pĂ«rfshin mbĂ«shtetje bazĂ«, por pa testim automatizuar, publikimin e mbledhjeve zyrtare dhe verifikimin e mundĂ«sive pĂ«r ndĂ«rtimin e kodit.

Gjithashtu, mund të theksojmë projektet dhe ngjarjet e sapo shpallura që lidhen me Rust:

  • Ayrton Muñoz, i cili nĂ« tĂ« kaluarĂ«n implementoi mbĂ«shtetje pĂ«r platformĂ«n Sony PlayStation 1 nĂ« kompajlerin Rust dhe u angazhua nĂ« portimin e FreeBSD nĂ« kompjuterĂ« me çipa Apple Silicon, krijoi pĂ«r FreeBSD mundĂ«sinĂ« e zhvillimit tĂ« komponenteve tĂ« kernelit dhe driverave tĂ« pajisjeve nĂ« gjuhĂ«n Rust. PĂ«r testim u ofrua njĂ« grup KPI-esh (Kernel Programming Interface), qĂ« lejon pĂ«rdorimin e kodit nĂ« Rust nĂ« kernelin e FreeBSD, si dhe njĂ« driver audio virtio (virtio_snd) i krijuar duke pĂ«rdorur kĂ«to KPI, dhe njĂ« driver HID DockChannel pĂ«r tastierĂ«n nĂ« M2 MacBook, si dhe disa drivera tĂ« nivelit tĂ« ulĂ«t pĂ«r nĂ«n-sistemet e kompjuterĂ«ve Mac me çipa Apple Silicon.

    Vërehet se puna mbi KPI-të e Rust ka nisur në fund të vitit 2024. Në KPI deri më tani është implementuar vetëm një pjesë e C-KPI-së dhe ato pozicionohen si jo të stabilizuara, megjithatë me kalimin e kohës plani është që niveli i stabilitetit të arrijë atë të njëjtin me ndërfaqen për gjuhën C. Driveri virtio_snd i propozuar si shembull është i përshtatshëm për reproduktimin e muzikës në QEMU. Pritet që deri në vitin 2026 KPI-të e Rust të stabilizohen sa mjaftueshëm që zhvilluesit e interesuar të mund të fillojnë t'i përdorin ato për të shkruar kod.

  • Benny Siegert, i angazhuar nĂ« zhvillimin e NetBSD, pĂ«rpiqej tĂ« justifikonte arsyet pse mbĂ«shtetja pĂ«r gjuhĂ«n Rust nuk do tĂ« shfaqet nĂ« bĂ«rthamĂ«n e NetBSD: NetBSD mbĂ«shtet arkitekturĂ«n pĂ«r tĂ« cilat Rust nuk Ă«shtĂ« i disponueshĂ«m; mbajtja e mjetit aktual tĂ« Rust nĂ« pkgsrc kĂ«rkon shumĂ« pĂ«rpjekje dhe Ă«shtĂ« nĂ« pĂ«rputhje me disa zhvillues; mbĂ«shtetja e Rust nĂ« bĂ«rthamĂ« kĂ«rkon pĂ«rfshirjen e kompjilatorit Rust nĂ« sistemin bazĂ«; gjatĂ« bootstrapping-ut tĂ« Rust nĂ« NetBSD, pĂ«rdoret njĂ« version i kaluar i paketĂ«s binaire, e cila nuk Ă«shtĂ« e pranueshme pĂ«r distribuimet e pavarura qĂ« shpĂ«rndahen nĂ« kodin burim; ciklet e formimit tĂ« lĂ«shimeve tĂ« Rust nuk janĂ« kompatibile me ciklin e zhvillimit tĂ« NetBSD dhe mbĂ«shtetjes sĂ« degĂ«ve tĂ« vjetra (p.sh., degĂ«n NetBSD 9, e cila u lĂ«shua nĂ« vitin 2020, vazhdon tĂ« mbĂ«shtetet, nĂ« kĂ«to kushte do tĂ« kĂ«rkohej shpĂ«rndarja dhe mbĂ«shtetje e kompjilatorit Rust me gjashtĂ« vjet tĂ« vjetĂ«r).
  • ËshtĂ« publikuar rregullimi i bazĂ«s sĂ« tĂ« dhĂ«nave Turso 0.5, e ndĂ«rtuar nĂ« gjuhĂ«n Rust dhe e pĂ«rshtatshme me SQLite nĂ« nivelin e dialektit SQL, formatin e skedarĂ«ve tĂ« bazĂ«s sĂ« tĂ« dhĂ«nave dhe C API. Nga funksionalitetet e pĂ«rmirĂ«suara, Ă«shtĂ« e rĂ«ndĂ«sishme tĂ« pĂ«rmendet mekanizmi CDC (Capture e tĂ« dhĂ«nave tĂ« ndryshuar) pĂ«r ndjekjen e ndryshimeve nĂ« bazĂ«n e tĂ« dhĂ«nave nĂ« kohĂ« reale, pĂ«rdorimi i io_uring pĂ«r hyrje / dalje asinkrone nĂ« Linux, mbĂ«shtetje pĂ«r kĂ«rkimin me vektorĂ«, 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, konstrukti “BEGIN CONCURRENT”.
  • Projekti pĂ«r tĂ« mundĂ«suar pĂ«rdorimin e bibliotekĂ«s standarde Rust nĂ« programe qĂ« ekzekutohen nga GPU.
  • Emuko — njĂ« emulator RISC-V, i shkruar nĂ« Rust, i aftĂ« tĂ« ngarkojĂ« Linux, pĂ«rkrah JIT-kompilimin, duke qenĂ« i aftĂ« tĂ« ruajĂ« dhe rikthejĂ« snapshotet e gjendjes.
  • RustConn (flatpak) — njĂ« ndĂ«rfaqe grafike pĂ«r menaxhimin e lidhjeve tĂ« jashtme me hoste tĂ« tjerĂ«, mbĂ«shtet 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 cila Ă«shtĂ« shĂ«nuar si versioni i parĂ« stabil, plotĂ«sisht i pajtueshĂ«m me API-nĂ« e zlib C dhe i pĂ«rshtatshĂ«m pĂ«r zĂ«vendĂ«simin e qartĂ« tĂ« zlib. Projekti ka si qĂ«llim krijimin e njĂ« ekuivalent tĂ« sigurt tĂ« bibliotekĂ«s sĂ« kompresionit tĂ« tĂ« dhĂ«nave zlib. Zhvillimi po bĂ«het me syrin mbi projektin zlib-ng, i cili zhvillon njĂ« variant me performancĂ« tĂ« lartĂ« tĂ« zlib.
  • ËshtĂ« prezantuar projekti vcad, i cili zhvillon njĂ« sistem parametĂ«rik tĂ« projektimit tĂ« automatizuar (CAD), i shkruar nĂ« Rust dhe i integrueshĂ«m me agjentĂ« AI pĂ«rmes protokollit MCP. Ai mbĂ«shtet modelimin 3D, simulimin, punĂ«n me skica 2D, ndĂ«rtimin e komponenteve, importimin nĂ« formatin STEP dhe eksportimin nĂ« formatet STL/GLB/STEP/DXF.
  • ËshtĂ« publikuar njĂ« sistem njohjeje tĂ« fjalĂ«s, i shkruar nĂ« Rust dhe qĂ« pĂ«rdor modelin AI Mistral Voxtral Mini 4B Realtime dhe kornizĂ«n e mĂ«simit tĂ« makinerive Burn. Projekti Ă«shtĂ« orientuar pĂ«r njohjen e zĂ«rit nĂ« kohĂ« reale pĂ«r tĂ« formuar transkriptime gjatĂ« transmetimit tĂ« drejtpĂ«rdrejtĂ«.
  • HapĆĄi lĂ«shimi i instrumenteve c2rust 0.22, tĂ« destinuara pĂ«r tĂ« pĂ«rkthyer kodin C (C99) nĂ« njĂ« pĂ«rfaqĂ«sim tĂ« papĂ«rshtatshĂ«m nĂ« Rust, i afĂ«rt me strukturĂ«n e kodit origjinal nĂ« C. Strukturat e punĂ«s tĂ« marra mund tĂ« pĂ«rdoren mĂ« vonĂ« pĂ«r njĂ« pĂ«rkthim tĂ« ngadaltĂ« nĂ« Rust idiomatik dhe pĂ«r tĂ« eliminuar blloqet e papĂ«rshtatshme.

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