Vydanie Rust 1.97. Na Rust napísané jadro Zinnia a P2P systém Iroh s adresovaním podľa kľúčov

Bol zverejnený release programovacieho jazyka Rust 1.97, ktorý vznikol v projekte Mozilla, avšak dnes je rozvíjaný pod patronátom nezávislej neziskovej organizácie Rust Foundation. Jazyk sa zameriava na bezpečnú prácu s pamäťou a poskytuje prostriedky na dosiahnutie vysokého paralelizmu vykonávania úloh, pričom sa obchádza bez použitia zberača odpadu a runtime (runtime sa obmedzuje na základnú inicializáciu a údržbu štandardnej knižnice).

Metódy práce s pamäťou v Rust sú zamerané na vylúčenie chýb pri manipulácii s ukazovateľmi a ochranu pred problémami vyplývajúcimi z nízkoúrovňovej práce s pamäťou, ako sú prístup k pamäťovým oblastiam po ich uvoľnení, dereferencovanie nulových ukazovateľov, pretečenie buffera a podobne. Na distribúciu knižníc, zabezpečenie zostavenia a správu závislostí sa vyvíja balíkový manažér Cargo. Na hostenie knižníc sa podporuje repozitár crates.io.

Bezpečné zaobchádzanie s pamäťou je v Rust zabezpečené už pri kompilácii prostredníctvom kontroly odkazov, sledovania vlastníctva objektov, zohľadňovania životnosti objektov (rozsah viditeľnosti) a posudzovania správnosti prístupu k pamäti počas vykonávania kódu. Rust tiež poskytuje prostriedky na ochranu pred celočíselnými pretečeniami, vyžaduje povinnú inicializáciu hodnôt premenných pred použitím, lepšie spracováva chyby v štandardnej knižnici, aplikuje koncept nemennosti (immutable) odkazov a premenných ako predvolené a ponúka silnú statickú typizáciu na minimalizáciu logických chýb.

Hlavné novinky:

  • Predvolene je zapnutá nová schéma dekorovania (mangling) názvov funkcií, globálnych premenných a dátových štruktúr v generovaných objektových a spustiteľných súboroch (-Csymbol-mangling-version=v0). Názvy sa dekorujú na zabránenie konfliktom počas kompilácie rôznych programov, pričom sa pripája špecifický kontext, ako je cesta k modulu a názov crate balíčka.

    Predtým používaná schéma dekorovania názvov, založená na Itanium ABI, mala také nevýhody, ako je nahradenie parametrov generík na nečitateľné hashe a prítomnosť častí kompilátora, ktoré nepoužívali Itanium ABI, čo si vyžadovalo použitie špecifických pre Rust dekodérov názvov. V Rust 1.97 je zapojená na predvolenú schému dekorovania, ktorá bola navrhnutá špeciálne pre Rust a zbavená uvedených nevýhod. Starú schému plánujú odstrániť v jednom z ďalších vydaní.

  • Do balíkového manažéra cargo bola zabudovaná možnosť spravovať reakciu na generovanie varovaní kompilátorom pri kompilácii. Bola pridaná premenná prostredia CARGO_BUILD_WARNINGS, ktorá môže nadobúdať tri hodnoty: warn (predvolene) – výstup varovania na obrazovku; allow – skrytie výstupu varovaní; deny – spracovanie varovaní ako chýb, ktoré zastavia kompiláciu.

    V predchádzajúcich verziách bolo na ukončenie kompilácie po výstupe varovania potrebné zadať „-Dwarnings“ v RUSTFLAGS pre kompilátor, avšak pri zmene RUSTFLAGS balíkový manažér cargo považoval kompiláciu za novú, nezohľadňoval dáta v cache a odznova prekompiloval celý projekt. Presunutie nastavenia na stranu cargo vylúčilo resetovanie cache a potrebu úplnej prekompilácie pri zmene režimu spracovania varovaní, ako aj zjednodušilo začlenenie spracovania varovaní ako chýb v systémoch kontinuálnej integrácie.

  • Pri zostavovaní je predvolene zapnuté zobrazovanie správ, ktoré vypisuje linker. Správy sa zobrazujú vo forme varovaní prostredníctvom špeciálneho lint pravidla „linker_messages”, ktoré nie je súčasťou štandardnej skupiny „warnings”. Rustc pritom filtruje správy, ktoré sú typicky falošnými poplachmi alebo normálnym správaním, a ponecháva len varovania, ktoré môžu naznačovať problémy, ako varovania o zastaraných možnostiach a neželaných nastaveniach. Predtým sa informácie z linkera zobrazovali len pri neúspechu, inak sa všetky správy skrývali. Na obnovenie starého správania do súboru Cargo.toml môžete pridať: [lints.rust] linker_messages = „allow”
  • Do oblasti stabilných bol prenesený nový balík API, vrátane stabilizovaných metód a implementácií traitov:
    • Predvolené pre RepeatN
    • Kopírovať pre ffi::FromBytesUntilNulError
    • Poslať pre std::fs::File pre 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
  • Značka „const” bola použitá v metóde char::is_control.

Dodatočne môžeme spomenúť nedávno oznámené projekty a udalosti týkajúce sa Rust:

  • Projekt zinnia vyvíja modulárne Unix-podobné jadro, napísané v jazyku Rust a distribuované pod licenciou GPLv2. Jadrová architektúra podporuje POSIX rozhrania a niektoré rozšírenia z BSD a Linuxu, ako epoll a timerfd. Na vykreslenie a organizáciu vstupu sú k dispozícii ovládače DRM (Direct Rendering Manager) a evdev. Realizovaná funkcionalita je dostatočná na spustenie desktopového prostredia Xfce pod X serverom a kompozitným servera Weston postaveným na Waylande. Podporuje sa bootovanie ako v emulátore QEMU, tak na reálnom hardvéri, ako je notebook ThinkPad E14 G7.
  • Bol predstavený vydanie komunikačnej knižnice iroh 1.0, ktorá umožňuje nadväzovanie sieťových pripojení medzi aplikáciami na rôznych hostiteľoch s pripojením prostredníctvom kryptografických kľúčov, namiesto IP adresy (uvádza sa kľúč, na ktorý sa treba pripojiť a iroh nájde s ním súvisiaci host a nadviaže šifrované spojenie pomocou protokolu QUIC). Ak je to možné, nadväzujú sa priame P2P pripojenia, ale ak to nie je možné, je vykonaný návrat na prácu cez relé, ktoré sa tiež používajú na objavovanie hostiteľov podľa kľúčov. Je možné spustiť svoj vlastný relé alebo pripojiť sa k verejným relém, ktoré podporuje komunita.

    Medzi rozšírenými možnosťami: podpora Multipath QUIC na súčasnú dodávku paketov cez viaceré trasy, možnosť práce cez NAT, režim statickej konfigurácie na pripojenie k lokálnym zariadeniam bez prístupu na internet, možnosť zostavenia do medzičinného kódu WASM na vykonávanie v prehliadači, podpora vytvárania vlastných transportov, napríklad na pripojenie cez Bluetooth, WiFi Aware alebo LoRa. Kód je napísaný v Rust a distribuuje sa pod licenciami Apache-2.0 a MIT. Dostupné sú obálky pre Python, Node.js, Kotlin a Swift.

  • Autor serverovej JavaScript platformy Bun zverejnil článok s analýzou projektu prepisovania Bun z jazyka Zig na Rust, pričom využil AI model Claude Fable. Uvádza sa, že Bun 1.3.14 bude posledným vydaním na Zig a nasledujúca verzia Bun 1.4.0 už bude na Rust. Podľa vykonaných testov verzia na Rust spotrebováva výrazne menej pamäte a je o 2-5% rýchlejšia ako verzia na Zig. Veľkosť spustiteľného súboru vo verzii na Rust sa zmenšila o 20%.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster