Rust 1.97 vĂ€ljaanne. Rustis kirjutatud Zinnia tuum ja P2P-sĂŒsteem Iroh vĂ”tme aadressimisega

Avalikustati programmeerimiskeele Rust 1.97 versioon, mille projekti algatas Mozilla, kuid mida arendatakse nĂŒĂŒd sĂ”ltumatu mittetulundusĂŒhingu Rust Foundation toetusel. Keele fookuses on mĂ€luhalduse turvalisus ja see pakub vahendeid ĂŒlesannete kĂ”rge paralleelsuse saavutamiseks, ilma et oleks vaja prĂŒgikoristajat ja runtime'i (runtime piirdub pĂ”hialustuse ja standardraamatukogu hooldamisega).

Rust'i mĂ€lu töötlemise meetodid on suunatud pointerite manipuleerimise vigade vĂ€ltimisele ja probleemide kaitsmisele, mis tulenevad madala taseme mĂ€lu töötlemisest, nagu juurdepÀÀs vabastatud mĂ€lupiirkondadele, nullpointerite de-referentseerimine, mĂ€lupuhvri ĂŒletamine jne. Raamatukogude levitamiseks, ehituste tagamiseks ja sĂ”ltuvuste haldamiseks arendatakse pakihaldurit Cargo. Raamatukogude majutamiseks toetatakse repotites 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:

  • Vaikimisi on sisse lĂŒlitatud uus funktsioonide, globaalsete muutujate ja andmestruktuuride nimekaunistamise (mangling) skeem genereeritud objekti- ja kĂ€ivitusfailides (-Csymbol-mangling-version=v0). Nimed kaunistatakse konfliktide vĂ€ltimiseks erinevate programmide sidumisel, lisades spetsiifilise konteksti, nĂ€iteks mooduli tee ja crate-paketi nimi.

    Varem kasutatud nimekaunistamise skeem, mis pĂ”hines Itanium ABI-l, sisaldas selliseid puudusi nagu genereerimise parameetrite asendamine arusaamatute hash'idega ja olemasolu kompilatsiooniosades, mis ei kasutanud Itanium ABI-d, mis nĂ”udis Rust'ile spetsiifiliste nime dekooderite kasutamist. Rust 1.97 versioonis on vaikimisi kasutusele vĂ”etud skeem, mis on spetsiaalselt vĂ€lja töötatud Rust'ile ja millel puuduvad eelnevalt mainitud puudused. Vana skeem kavatsetakse eemaldada ĂŒhe jĂ€rgmise vĂ€ljaande kĂ€igus.

  • Pakendihaldur cargo sisaldab vĂ”imalust hallata kompilatori hoiatusete genereerimise reaktsiooni ehituse kĂ€igus. Lisatud keskkonnamuutuja CARGO_BUILD_WARNINGS, mis vĂ”ib vĂ”tta kolme vÀÀrtust: warn (vaikimisi) — kuvab hoiatused ekraanile; allow — varjab hoiatuste vĂ€ljundit; deny — kĂ€sitleb hoiatuste tĂ”rgetena, mis peatavad ehituse.

    Varasemates versioonides tuli ehituse lĂ”petamiseks pĂ€rast hoiatuse kuvamist mÀÀrata RUSTFLAGS'ile "-Dwarnings", kuid RUSTFLAGS'i muutmisel pidas pakendihaldur cargo ehitust uueks, mitte arvestades vahemĂ€lu andmeid ja koostas kogu projekti nullist. Konfiguratsiooni ĂŒleviimine cargo poole kĂ”rvaldas vahemĂ€lu lĂ€htestamise ja tĂ€ieliku uuesti koostamise vajaduse, kui muudeti hoiatuste töötlemise reĆŸiimi, ning lihtsustas hoiatuste töötlemise kĂ€sitlemist vigadena pideva integratsiooni sĂŒsteemides.

  • Kogumine sisaldab vaikimisi kompilatari genereeritud sĂ”numite kuvamist. SĂ”numid kuvatakse hoiatusena spetsiaalse lint-reegli „linker_messages” kaudu, mis ei kuulu standardsete „hoiatused” rĂŒhma. Sellega seoses filtreerib rustc sĂ”numid, mis on tĂŒĂŒpilised valehĂ€ired vĂ”i normaalne kĂ€itumine, jĂ€ttes hoiatused, mis vĂ”ivad viidata probleemidele, nagu vananenud valikute ja soovimatute seadete hoiatused. Varem nĂ€idati kompilandi teavet ainult siis, kui see lĂ”ppes veaga, muidu olid kĂ”ik sĂ”numid varjatud. Vanade kĂ€itumiste taastamiseks saab Cargo.toml faili lisada: [lints.rust] linker_messages = „allow”
  • Uus hulk API-d on viidud stabiilsuse tasemele, sealhulgas on stabiliseeritud meetodid ja tĂŒĂŒbispetsiifikatsioonide rakendused:
    • Vaikimisi RepeatN jaoks
    • Koopia jaoks ffi::FromBytesUntilNulError
    • Saada std::fs::File jaoks UEFI
    • ::isolate_highest_one
    • ::isolate_lowest_one
    • ::highest_one
    • ::lowest_one
    • ::bit_width
    • NonZero::isolate_highest_one
    • NonZero::isolate_lowest_one
    • NonZero::highest_one
    • NonZero::lowest_one
    • NonZero::bit_width
  • MĂ€rgis „const” on rakendatud meetodis char::is_control.

Lisaks vĂ”ib mainida hiljuti kuulutatud projekte ja sĂŒndmusi, mis on seotud Rustiga:

  • Projekt zinnia arendab modulaarselt Unixilaadset tuuma, mis on kirjutatud Rusti keeles ja levitatakse GPLv2 litsentsi alusel. Tuum toetab POSIX-liideseid ja teatud laiendusi BSD ja Linuxist, nagu epoll ja timerfd. Joonistamiseks ja sisendi korraldamiseks on saadaval DRM (Direct Rendering Manager) ja evdev draiverid. Rakendatud funktsionaalsus on piisav X-serveri kĂ€itamiseks töölaudade keskkonnas Xfce. serverilt Weston Waylandi baasil. Toetatakse laadimist nii QEMU emulaatoris kui ka reaalses riistvaras, nĂ€iteks ThinkPad E14 G7 sĂŒlearvutil.
  • Esitatud on kommunikatsiooniraamatukogu iroh 1.0, mis vĂ”imaldab seadistada vĂ”rguĂŒhendusi rakenduste vahel erinevates hostides, kasutades krĂŒptograafilisi vĂ”tmeid. IP-aadresse (nĂ€idatakse vĂ”tit, millega ĂŒhendada, ja Iroh leiab sellega seotud hosti ning loob krĂŒpteeritud ĂŒhenduse QUIC-protokolli abil). Kui vĂ”imalik, luuakse otse P2P-ĂŒhendused, kuid kui see ei ole vĂ”imalik, pöördutakse tagasi relay'de kaudu, mida kasutatakse ka hostide avastamiseks vĂ”tmete abil. Saate kĂ€ivitada oma relay vĂ”i ĂŒhendada toetatud kogukonna avalike relay'dega.

    Laialdaste vĂ”imaluste hulka kuulub: Multipath QUIC tugi pakettide saatmiseks samaaegselt mitmete marsruutide kaudu, töö vĂ”imalus NAT'i taga, staatilise konfiguratsiooni reĆŸiim kohalike seadmete ĂŒhendamiseks ilma internetiĂŒhenduseta, vĂ”imalus kompileerida vahefail WASM-ks, et seda saaks kasutada brauseris, toimetamise enda transpordiviiside loomise tugi nĂ€iteks Bluetoothi, WiFi Aware vĂ”i LoRa kaudu. Kood on kirjutatud Rust'i keeles ja selle levitamine toimub Apache-2.0 ja MIT litsentside alusel. Saadaval on Python, Node.js, Kotlin ja Swift armatuur.

  • Serveri JavaScripti platvormi Bun looja avaldas artikli, milles analĂŒĂŒsitakse projekti ĂŒleviimist keelest Zig keelde Rust, kasutades AI mudelit Claude Fable. Toodud on vĂ€lja, et Bun 1.3.14 on viimane versioon Zig-ilt ja jĂ€rgmine versioon Bun 1.4.0 on juba Rust'is. Tehtud testide pĂ”hjal tarbib Rust'i versioon oluliselt vĂ€hem mĂ€lu ning on 2-5% kiirem kui Zig'i versioon. Kagmisne versiooni tĂ€ideviimise faili suurus Rust versioonis on vĂ€henenud 20%.

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