2 min Devops

Nieuwe versie Rust kan door onoplettendheid voor problemen zorgen

Nieuwe versie Rust kan door onoplettendheid voor problemen zorgen

Ontwikkelaars doen er goed aan oplettend te zijn wanneer zij overschakelen naar de nieuwe stabiele versie van de programmeertaal Rust: versie 1.84.0. Gelukkig biedt deze versie ook veel nieuwe functionaliteit.

Het ontwikkelteam achter Rust heeft onlangs versie 1.84.0 geïntroduceerd. Deze versie bevat natuurlijk veel nieuwe mogelijkheden, waarover later meer in dit artikel.

Belangrijk is echter dat ontwikkelaars, voordat zij deze nieuwe versie implementeren, alert moeten zijn op de juiste updates. Een naamsverandering in het WebAssembly System Interface (WASI)-doel kan er namelijk toe leiden dat hun toolchains vastlopen.

Ontwikkelaars kunnen een foutmelding krijgen bij het upgraden van Rust omdat het doel wasm32-wasi niet langer beschikbaar is. Dit komt doordat dit doel in de vorige versie, Rust 1.71, is hernoemd naar wasm32-wasip1.

Reden naamsverandering

De reden hiervoor is dat er al een wasm32-wasip2-doel bestond, dat aansluit bij de belangrijkste releases van WASI. Het benoemen van het originele doel wasm32-wasi, toen dit nog in preview was, bleek een vergissing. Deze naam verhulde dat het eigenlijk een snapshot was van een interface die nog steeds in ontwikkeling is.

De oplossing voor het probleem is om de code rustup target remove wasm32-wasi uit te voeren voordat ontwikkelaars naar versie 1.84.0 upgraden.

Ontwikkelaars zijn overigens al in april vorig jaar gewaarschuwd dat deze verandering eraan zat te komen en kregen acht maanden de tijd om naar de nieuwe doelnaam over te stappen.

Nieuwe functionaliteit in Rust

Ondanks deze complicatie biedt versie 1.84.0 interessante nieuwe functionaliteiten. Zo is de minimaal ondersteunde Rust-versie (MSRV) nu stabiel voor de officiële package manager Cargo. Dit is echter niet standaard ingeschakeld. Wanneer een nieuwe versie van een package een nieuwere versie van Rust nodig heeft, kan Cargo deze automatisch negeren.

De nieuwste Rust-versie laat ook vooruitgang zien in de next-generation trait solver voor zogenoemde ‘type’-elementen. Volgens de ontwikkelaars moet deze solver langdurige bugs oplossen, toekomstige verbeteringen in het typesysteem mogelijk maken en de compileertijden verbeteren. De nieuwe solver is nog niet volledig, maar wordt al wel gebruikt voor ‘coherence checking’.

Daarnaast introduceert Rust nieuwe API’s voor strikte ‘provenance checking’ van pointers, bijvoorbeeld bij het converteren van pointers naar integers en vice versa. Tools zoals Miri, die ongedefinieerd gedrag in Rust detecteren, zouden hiervan moeten profiteren. De API’s dragen bovendien bij aan de formele correctheid van Rust-code.

Rust versie 1.84.0 is nu beschikbaar.

Lees ook: Waarom programmeertaal Rust steeds populairder wordt