Rust 1.92 uitgave. Rust-projecten voor GUI, sandbox-isolatie en het maken van firmware.

De release van de programmeertaal Rust 1.92 is gepubliceerd, oorspronkelijk gebaseerd op een project van Mozilla, maar nu ontwikkeld onder de hoede van de onafhankelijke non-profitorganisatie Rust Foundation. De taal is gericht op veilige geheugenverwerking en biedt middelen voor het bereiken van hoge paralleliteit bij de uitvoering van taken, zonder gebruik te maken van een garbage collector en runtime (runtime is beperkt tot basisinitialisatie en ondersteuning van de standaardbibliotheek).

Geheugenmethoden in Rust helpen ontwikkelaars om fouten bij het manipuleren van pointers te voorkomen en beschermen tegen problemen die voortkomen uit laag-niveau geheugenwerk, zoals toegang tot geheugen na vrijgave, derefereren van null pointers, buffer overflows, enz. Voor het verspreiden van bibliotheken, het garanderen van builds en het beheren van projectafhankelijkheden is er een pakketbeheerder genaamd Cargo ontwikkeld. Voor het plaatsen van bibliotheken wordt de repository crates.io ondersteund.

Veilige geheugenwerking in Rust wordt tijdens de compilatie gegarandeerd door middel van referentiecontrole, het bijhouden van eigenaarschap van objecten, het in acht nemen van de levensduur van objecten (scope) en het evalueren van toegangsrechten tot geheugen tijdens de uitvoering van code. Rust biedt ook middelen om integer-overflows te voorkomen, vereist dat waarden van variabelen voor gebruik worden geïnitialiseerd, behandelt fouten beter in de standaardbibliotheek, past het concept van onveranderlijke (immutable) referenties en variabelen als standaard toe en biedt sterke statische type-onderzoek voor het minimaliseren van logische fouten.

Belangrijkste vernieuwingen:

  • De stabilisatie van het type "never", aangeduid met het symbool "!" en gedefinieerd voor berekeningen die nooit waarden retourneren (bijvoorbeeld de functie "exits", de macro "panic!" en oneindige lussen retourneren nooit controle), is voortgezet. In de nieuwe versie zijn de Lint-controles "never_type_fallback_flowing_into_unsafe" en "dependency_on_unit_never_type_fallback" standaard gewijzigd van waarschuwingen naar het genereren van compilerfouten. Deze controles worden geactiveerd wanneer er problemen in de code zijn die zich manifesteren bij het gebruik van het type "never".

    Voorlopige schattingen geven aan dat dergelijke problemen aanwezig zijn in ongeveer 500 crate-pakketten. Het inschakelen van lint-controles zal helpen bij de voorbereiding op de stabilisatie van het type "never", dat momenteel als experimentele functie wordt beschouwd. Lint-controles worden alleen geactiveerd bij de directe bouw van pakketten en zijn niet zichtbaar bij het bouwen van afhankelijkheden. Controles kunnen ook worden uitgeschakeld met de attribuut "#[allow]".

  • Het gedrag van de lint-controle "unused_must_use" is gewijzigd, wat wordt geactiveerd wanneer een geretourneerde waarde van een functie wordt genegeerd, als de functie of het geretourneerde type is gemarkeerd met het attribuut "#[must_use]". In de nieuwe versie is de waarschuwing voor het negeren van geretourneerde waarden met de types Result en ControlFlow stopgezet, waarin de foutstatus wordt vastgesteld door het type zonder waarden ("!" of "Infallible"). Bijvoorbeeld, "fn can_never_fail() -> Result {…}".
  • Het gedrag van de vlag "-Cpanic=abort" is gewijzigd, waarbij standaard unwind-tabellen voor backtrace-generatie zijn ingeschakeld. Om het oude gedrag te herstellen, is er een optie "-Cforce-unwind-tables=no".
  • De controle van de argumenten van het attribuut «#[macro_export]» is aangescherpt. Bij het opgeven van ongeldige attributen wordt nu een foutmelding weergegeven in plaats van een waarschuwing. Problemen met «#[macro_export]» worden niet alleen gecontroleerd tijdens de directe compilatie van het crate-pakket, maar ook bij het bouwen van afhankelijkheden.
  • In veilige code is het nu toegestaan om raw pointers («&raw [mut | const]») naar velden in union-types te verkrijgen.
  • Voor het doelsysteem mips64el-unknown-linux-muslabi64 is ondersteuning voor dynamische koppelingsimplementatie geïmplementeerd.
  • De minimaal ondersteunde versie van de externe LLVM-toolchain is verhoogd naar tak LLVM 20.
  • Een nieuwe lading API's is gestabiliseerd, inclusief gestabiliseerde methoden en implementaties van traits:
    • NonZero::div_ceil
    • Location::file_as_c_str
    • RwLockWriteGuard::downgrade
    • Box::new_zeroed
    • Box::new_zeroed_slice
    • Rc::new_zeroed
    • Rc::new_zeroed_slice
    • Arc::new_zeroed
    • Arc::new_zeroed_slice
    • btree_map::Entry::insert_entry
    • btree_map::VacantEntry::insert_entry
    • impl Extend for proc_macro::TokenStream
    • impl Extend for proc_macro::TokenStream
    • impl Extend for proc_macro::TokenStream
    • impl Extend for proc_macro::TokenStream
  • De eigenschap "const" is toegepast in de functies:
    • ::rotate_left
    • ::rotate_right
  • In de pakketbeheerder Cargo is herhaling van de operatie «git fetch» mogelijk gemaakt in het geval van een fout bij de uitvoering van de eerste aanvraag. Componenten zijn toegevoegd voor integratie met de terminalemulator Ghostty. Er is een nieuw hoofdstuk toegevoegd aan de handleiding over het optimaliseren van het bouwproces.

Daarnaast kunnen de onlangs aangekondigde projecten en evenementen die verband houden met Rust worden vermeld:

  • Het bedrijf Ferrocene heeft de certificering IEC 61508 (SIL 2) ontvangen voor de libcore-bibliotheek, die een subset van aanroepen uit de standaardbasisbibliotheek van Rust omvat. De certificering bevestigt dat de bibliotheek voldoet aan de eisen voor kritieke industriële systemen. Ferrocene is bekend om de ontwikkeling van tools voor het programmeren in Rust voor safety-critical systems en het onderhouden van de FLS (Ferrocene Language Specification), waarop de referentiespecificatie voor de taal Rust is gebaseerd.
  • De release van de Iced 0.14-bibliotheek voor het maken van grafische gebruikersinterfaces met behulp van reactieve programmeerprincipes is gepubliceerd. Iced heeft een architectuur die vertrouwd is voor ontwikkelaars die bekend zijn met de declaratieve interfacebouwtaal Elm. Een complete set widgets wordt aangeboden met de mogelijkheid om asynchrone handlers te maken en de lay-out van interface-elementen aan te passen op basis van de grootte van het venster en het scherm. Er zijn verschillende rendering engines beschikbaar die Vulkan, Metal en DX12 ondersteunen. Onder de grote projecten die Iced gebruiken, valt de desktopomgeving COSMIC.

    In de nieuwe versie zijn de widgets «table», «grid», «sensor», «float» en «pin» toegevoegd, en zijn de mogelijkheden van de widget voor het werken met Markdown-opmaak uitgebreid. Geïmplementeerd zijn: een reactieve weergavemode; scrollbalken die indien nodig verschijnen; een API voor animatiewerk; ondersteuning voor invoermethoden; een headless-modus; de mogelijkheid om wijzigingen aan te brengen zonder de applicatie stop te zetten (hot reloading); parallel decoderen van afbeeldingen; en tools voor het debuggen en profileren van prestaties.

  • Het project Ribir ontwikkelt een bibliotheek voor het maken van multiplatform-applicaties met een grafische interface, waarmee een gemeenschappelijke codebasis voor het creëren van grafische applicaties voor verschillende platforms (Linux, Windows, macOS, met plannen voor Android en iOS) kan worden gebruikt. Beschikbaar zijn een declaratieve interfacebouwtaal op basis van Rust-macro's, meer dan 20 widgets, themasystemen en rendering op basis van wgpu.
  • De utility Island is geïntroduceerd, bedoeld voor het geïsoleerd uitvoeren van applicaties. Voor sandbox-isolatie wordt de Landlock-mechanisme gebruikt. Island stelt gebruikers in staat om regels in TOML-formaat te creëren en deze toe te passen voor isolatie met behulp van Landlock op bestaande uitvoerbare bestanden, zonder dat aanpassingen in de code nodig zijn. In tegenstelling tot Firejail vereist de utility Island geen root-rechten of speciale bevoegdheden.
  • Google heeft een Rust-gebaseerde toolkit genaamd Wasefire gepresenteerd voor het ontwikkelen van beveiligde firmware. Het belangrijkste idee is om afzonderlijke geïsoleerde handlers (applicaties) bovenop de basisomgeving van de firmware (platform) uit te voeren. Firmware ontwikkeling is niet gebonden aan programmeertalen — firmwarecomponenten kunnen worden geleverd in de vorm van WebAssembly met WASI (WebAssembly System Interface) uitbreidingen en worden uitgevoerd met Wasmtime.
  • De versie van de UEFI-firmware Patina 18, geschreven in Rust, is uitgebracht. Patina biedt een vervanging voor de basiscomponenten van UEFI-firmware en kan worden gebruikt voor de geleidelijke migratie van bestaande firmware, geschreven in C, naar het gebruik van de Rust-taal.
  • Het project Brimstone ontwikkelt een nieuwe JavaScript-engine, geheel vanaf nul geschreven in Rust. In zijn huidige toestand ondersteunt deze al meer dan 97% van de mogelijkheden van ECMAScript 2026. De virtuele machine voor het uitvoeren van bytecode is ontwikkeld met het oog op de architectuur van de V8-engine.
  • Het Catten-project ontwikkelt een kernel voor het experimentele besturingssysteem CharlotteOS, geschreven in Rust. De kernel ondersteunt toegangbeheer op basis van 'capability' (vergelijkbaar met Fuchsia) en maakt gebruik van een op Plan 9 geïnspireerde gedistribueerde hiërarchie van bronnen met padadressering via URI.
  • De interactieve shell Fish 4.2.0 (vriendelijke interactieve shell) is uitgebracht. Tak 4.x valt op door de volledige vertaling van de codebasis van C++ naar Rust.
  • Het bedrijf Cloudflare heeft de Rust-bibliotheek tokio-quiche vrijgegeven, voor het integreren van ondersteuning voor de protocollen QUIC en HTTP/3 in asynchrone applicaties gebaseerd op het Tokio-framework.
  • Het Tor-project heeft de uitgaven 1.7 en 1.8 van Arti gepubliceerd, een implementatie van de Tor-toolkit, geschreven in Rust. Wanneer de code van Arti het niveau bereikt waarop deze de C-variant volledig kan vervangen, zijn de Tor-ontwikkelaars van plan Arti status te geven als de belangrijkste implementatie van Tor en geleidelijk de ondersteuning van de C-implementatie stop te zetten.

    In de nieuwe versie is de implementatie van beperkte onion-service-definities met behulp van klantautorisatie ('restricted-discovery') gestabiliseerd. Naast de SOCKS-proxy is ondersteuning voor HTTP-proxy, die de CONNECT-methode gebruikt, toegevoegd. Er is adaptieve timeout-instelling geïmplementeerd op basis van de belasting. Experimentele ondersteuning voor tokio-console is toegevoegd. De ontwikkeling van functionaliteit voor relays en servers directory's (Directory Authority) is voortgezet. De opdracht 'arti hsc ctor-migrate' is toegevoegd voor het overdragen van sleutels van de C-client naar de Arti-sleutelopslag. Instellingen zijn toegevoegd voor het beheren van de start van onion-diensten.

  • De database RustDB is uitgebracht, ontwikkeld in Rust en geïnspireerd door PostgreSQL. Basis SQL-operaties worden ondersteund (CREATE/DROP TABLE/VIEW, INSERT, SELECT, UPDATE, DELETE, SHOW TABLES, EXPLAIN, VACUUM), transacties, MVCC, WAL (Write-Ahead Log), indices en verbinding via een PostgreSQL-compatibele protocol. Bij het schrijven van RustDB is AI gebruikt.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster