UtgÄvan av Rust 1.97. KÀrna Zinnia och P2P-systemet Iroh som adresseras via nycklar skrivna i Rust.

Utgivningen av programmeringssprÄket Rust 1.97 har offentliggjorts, vilket baserades pÄ projektet Mozilla men som nu utvecklas under skydd av den oberoende ideella organisationen Rust Foundation. SprÄket Àr fokuserat pÄ sÀker minneshantering och tillhandahÄller verktyg för att uppnÄ hög parallellitet i uppgiftsutförande, utan att anvÀnda en garbage collector och runtime (runtime begrÀnsas till grundlÀggande initialisering och underhÄll av standardbiblioteket).

Minneshanteringsmetoderna i Rust syftar till att eliminera fel vid hantering av pekare och skydda mot problem som uppstÄr frÄn lÄg nivÄ minneshantering, sÄsom att referera till minnesomrÄden efter att de har frigjorts, dereferensiering av nullpekare, buffertöverskridningar, etc. För spridning av bibliotek, byggnation och hantering av beroenden utvecklas paketchefen Cargo. För att lagra bibliotek stöds ett repository pÄ crates.io.

SÀker minneshantering sÀkerstÀlls i Rust under kompilering genom att kontrollera referenser, spÄra Àgandeskap över objekt, ta hÀnsyn till livslÀngden av objekt (synlighet) och utvÀrdera korrekt minnesÄtkomst under körning av koden. Rust erbjuder ocksÄ verktyg för att skydda mot heltalsöverflöden, krÀver obligatorisk initialisering av variabelvÀrden innan de anvÀnds, hanterar fel bÀttre i standardbiblioteket, tillÀmpar konceptet av oförÀnderliga (immutable) referenser och variabler som standard och erbjuder stark statisk typning för att minimera logiska fel.

Huvudsakliga nyheter:

  • En ny namngivningsschema (mangling) för funktioner, globala variabler och datastrukturer i de genererade objekt- och exekverbara filerna Ă€r aktiverad som standard (-Csymbol-mangling-version=v0). Namnen dekoreras för att förhindra konflikter under lĂ€nkningen av olika program, genom att bifoga specifik kontext, sĂ„som modulens sökvĂ€g och namnet pĂ„ crate-paketet.

    Det tidigare namndekoreringsschemat, baserat pÄ Itanium ABI, hade brister sÄsom att generics parametrar ersattes med svÄrlÀsta hashvÀrden och delar av kompilatorn som inte utnyttjade Itanium ABI, vilket krÀvde anvÀndning av Rust-specifika namnavkodare. I Rust 1.97 anvÀnds som standard ett dekoreringsschema utvecklat specifikt för Rust som saknar de tidigare nÀmnda bristerna. Det gamla schemat planeras att tas bort i en av de kommande utgÄvorna.

  • Paketförvaltaren cargo har nu inbyggd möjlighet att hantera responsen pĂ„ kompilatorvarningar vid byggnation. En miljövariabel, CARGO_BUILD_WARNINGS, har lagts till och kan ha tre vĂ€rden: warn (standard) — varningarna skrivs ut pĂ„ skĂ€rmen; allow — döljer varningarna; deny — hanterar varningar som fel, vilket stoppar byggprocessen.

    I tidigare versioner var det nödvÀndigt att ange '-Dwarnings' i RUSTFLAGS för kompilatorn för att avsluta byggprocessen efter att en varning hade skrivits ut, men nÀr RUSTFLAGS Àndrades, betraktade paketförvaltaren cargo byggprocessen som ny, vilket innebar att data i cachen inte beaktades och hela projektet kompilerades om frÄn grunden. Att flytta konfigurationen till cargo eliminerade behovet av att rensa cachen och att göra en fullstÀndig omkompilering vid Àndring av varningshanteringslÀget, samt förenklade aktivering av varningshantering som fel i kontinuerliga integrationssystem.

  • Vid byggnation Ă€r visning av meddelanden frĂ„n lĂ€nkaren som standard aktiverat. Meddelandena presenteras som varningar genom en speciell lint-regel 'linker_messages', som inte ingĂ„r i den standardiserade gruppen 'warnings'. Samtidigt filtrerar rustc meddelanden som Ă€r typiska falska positiva eller normalt beteende och lĂ€mnar kvar varningar som kan indikera problem, sĂ„som varningar om förĂ„ldrade alternativ och oönskade instĂ€llningar. Tidigare visades information frĂ„n lĂ€nkaren endast vid ett felaktigt avslutande, medan alla andra meddelanden dolde sig. För att Ă„terstĂ€lla det gamla beteendet kan följande lĂ€ggas till i Cargo.toml: [lints.rust] linker_messages = 'allow'
  • En ny uppsĂ€ttning API har blivit stabiliserad, inklusive stabilisering av metoder och implementeringar av traits:
    • Default för RepeatN
    • Copy för ffi::FromBytesUntilNulError
    • Send för std::fs::File för UEFI
    • ::isolate_highest_one
    • ::isolate_lowest_one
    • ::högsta_ettan
    • ::lĂ€gsta_ettan
    • ::bit_width
    • NonZero::isolera_högsta_ettan
    • NonZero::isolera_lĂ€gsta_ettan
    • NonZero::högsta_ettan
    • NonZero::lĂ€gsta_ettan
    • NonZero::bit_width
  • Egenskapen «const» tillĂ€mpas i metoden char::is_control.

Man kan Àven nÀmna nyligen tillkÀnnagivna projekt och hÀndelser relaterade till Rust:

  • Projektet zinnia utvecklar ett modulĂ€rt Unix-liknande kĂ€rna skrivet i Rust och distribueras under GPLv2-licensen. KĂ€rnan stöder POSIX-grĂ€nssnitt och vissa utvidgningar frĂ„n BSD och Linux, sĂ„som epoll och timerfd. Den implementerade funktionen Ă€r tillrĂ€cklig för att köra skrivbordsmiljön Xfce pĂ„ en X-server och en komposit servern Weston baserat pĂ„ Wayland. Stöd för bĂ„de uppstart i QEMU-emulatorn och pĂ„ verklig hĂ„rdvara, sĂ„som en ThinkPad E14 G7-laptop.
  • Kommunikationsbiblioteket iroh 1.0 har slĂ€ppts, vilket möjliggör att upprĂ€tta nĂ€tverksanslutningar mellan applikationer pĂ„ olika vĂ€rdar med anslutning via kryptografiska nycklar istĂ€llet för IP-adresser (nyckeln som ska anslutas anges och iroh hittar den relaterade vĂ€rden och upprĂ€ttar en krypterad anslutning med anvĂ€ndning av QUIC-protokollet). Direkt P2P-anslutningar upprĂ€ttas om möjligt, men om det inte Ă€r möjligt faller man tillbaka till att arbeta via relĂ€er, som ocksĂ„ anvĂ€nds för att upptĂ€cka vĂ€rdar via nycklar. Det finns möjlighet att köra sitt eget relĂ€ eller ansluta till offentliga relĂ€er som stöds av gemenskapen.

    Bland de utökade funktionerna finns: stöd för Multipath QUIC för att leverera paket samtidigt över flera vÀgar, möjlighet att fungera bakom NAT, statisk konfigurationslÀge för anslutning till lokala enheter utan internetÄtkomst, möjlighet att bygga i mellankod WASM för att köras i webblÀsaren, stöd för att skapa egna transportmedel, till exempel för att ansluta via Bluetooth, WiFi Aware eller LoRa. Koden Àr skriven i Rust och distribueras under licenserna Apache-2.0 och MIT. Wrapper för Python, Node.js, Kotlin och Swift finns tillgÀngliga.

  • Skaparen av JavaScript-serverplattformen Bun har publicerat en artikel som analyserar projektet för att skriva om Bun frĂ„n Zig till Rust med hjĂ€lp av AI-modellen Claude Fable. Det noteras att Bun 1.3.14 kommer att bli den sista utgĂ„van pĂ„ Zig, och nĂ€sta version Bun 1.4.0 kommer redan att vara pĂ„ Rust. Enligt genomförda tester konsumerar versionen pĂ„ Rust betydligt mindre minne och Ă€r 2-5% snabbare Ă€n versionen pĂ„ Zig. Storleken pĂ„ körfilen i versionen pĂ„ Rust har minskat med 20%.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster