Rust is een programmeertaal bedacht door Graydon Hoare en oorspronkelijk ontwikkeld door Mozilla. Het is deels geïnspireerd op de programmeertaal C, maar kent syntactische en semantische verschillen. Het focust op veiligheid en beoogt moderne computersystemen om te verzamelen. Het wordt ingezet door onder andere Cloudflare, OVH, Mozilla, Deliveroo, Coursera, AppSignal en Threema. Versie 1.71.0 is begin deze maand gepubliceerd met de volgende aankondiging:
C-ontwikkel ABI
1.71.0 stabiliseert
C-unwind
(en andere-unwind
suffix ABI-varianten). Het gedrag voor ongedwongen afwikkelen (het typische geval) wordt gespecificeerd in deze tabel van de RFC die deze functie heeft voorgesteld. Samenvatten:
Elke ABI is grotendeels gelijk aan dezelfde ABI zonder
-unwind
behalve dat met-unwind
het gedrag is gedefinieerd als veilig wanneer een afwikkeloperatie (panic
of uitzondering in C++-stijl) de ABI-grens overschrijdt. Voorpanic=unwind
, dit is een geldige manier om uitzonderingen van de ene taal de stapel in een andere taal te laten afwikkelen zonder het proces te beëindigen (zolang de uitzondering wordt opgevangen in dezelfde taal waaruit deze afkomstig is); voorpanic=abort
zal dit het proces meestal onmiddellijk afbreken.
Voor deze initiële stabilisatie, geen verandering wordt gemaakt op de bestaande ABI’s (bijv
"C"
), en eroverheen ontspannen blijft ongedefinieerd gedrag. Een toekomstige release van Rust zal deze ABI’s aanpassen zodat ze overeenkomen met het gedrag dat is gespecificeerd in de RFC als het laatste onderdeel van het stabiliseren van deze functie (meestal afbreken bij de grens). Gebruikers worden aangemoedigd om de nieuwe ABI-varianten voor afwikkelen in hun code te gaan gebruiken om toekomstbestendig te blijven als ze over de ABI-grens moeten afwikkelen.
Debugger-visualisatieattributen
1.71.0 stabiliseert ondersteuning voor een nieuw attribuut,
#[debug_visualizer(natvis_file = "...")]
En#[debug_visualizer(gdb_script_file = "...")]
, waarmee Natvis-beschrijvingen en GDB-scripts in Rust-bibliotheken kunnen worden ingesloten om de debuggeruitvoer te verbeteren bij het inspecteren van gegevensstructuren die door die bibliotheken zijn gemaakt. Rust heeft zelf al enige tijd vergelijkbare scripts ingepakt voor de standaardbibliotheek, maar deze functie maakt het voor bibliotheekauteurs mogelijk om eindgebruikers een vergelijkbare ervaring te bieden. Zie de referentie voor meer informatie over het gebruik.
raw-dylib-koppeling
Op Windows-platforms ondersteunt Rust nu het gebruik van functies uit dynamische bibliotheken zonder dat die bibliotheken tijdens het bouwen beschikbaar hoeven te zijn, met behulp van het nieuwe
kind="raw-dylib”
optie voor#https://tweakers.net/downloads/65196/rust-1710.html
. Dit voorkomt dat gebruikers die bibliotheken moeten installeren (vooral moeilijk voor cross-compilatie), en vermijdt dat stub-versies van bibliotheken in kratten moeten worden verzonden om mee te linken. Dit vereenvoudigt kratten die bindingen bieden aan Windows-bibliotheken. Rust ondersteunt ook binding aan symbolen die door DLL’s worden geleverd door een ordinaal in plaats van een benoemd symbool, met behulp van de nieuwe#[link_ordinal]
attribuut.
Upgrade naar musl 1.2
Als eerder aangekondigd, werkt Rust 1.71 de musl-versie bij naar 1.2.3. De meeste gebruikers zullen niet worden beïnvloed door deze wijziging.
Const-geïnitialiseerd thread locals
Roest 1.59.0 gestabiliseerd
const
geïnitialiseerde thread-lokale ondersteuning in de standaardbibliotheek, wat een meer optimale codegeneratie mogelijk maakt. Tot nu toe werd deze functie echter gemist in release-opmerkingen en documentatie. Merk op dat deze stabilisatie niet maaktconst { ... }
een geldige uitdrukking of syntaxis in andere contexten; dat is een apart en momenteel onstabiel functie.
use std::cell::Cell; thread_local! { pub static FOO: Cell<u32> = const { Cell::new(1) }; }
Gestabiliseerde API’s
Deze API’s zijn nu stabiel in const-contexten:
Andere veranderingen
Bekijk alles wat er is veranderd Roest, LadingEn Clippy.
credit :Source link