Rust 1.68 Programméiersprooch Fräisetzung

D'Verëffentlechung vun der Rust 1.68 allgemeng Zweck Programméierungssprooch, gegrënnt vum Mozilla-Projet, awer elo entwéckelt ënner der Regie vun der onofhängeger Asbl Rust Foundation, gouf publizéiert. D'Sprooch konzentréiert sech op d'Erënnerungssécherheet a stellt d'Moyene fir en héije Jobparallelismus z'erreechen, während d'Benotzung vun engem Gerempels a Runtime vermeit (Runtime gëtt op Basisinitialiséierung an Ënnerhalt vun der Standardbibliothéik reduzéiert).

Rust d'Erënnerungsveraarbechtungsmethoden retten den Entwéckler vu Feeler beim Manipulatioun vu Pointer a schützt géint Probleemer déi entstinn wéinst nidderegen Niveau Memory Handhabung, sou wéi Zougang zu engem Erënnerungsberäich nodeems se befreit gouf, Nullpointer ofgeleent, Pufferiwwerschlag, etc. Fir Bibliothéiken ze verdeelen, Builds ze bidden an Ofhängegkeeten ze managen, entwéckelt de Projet de Cargo Package Manager. De crates.io Repository gëtt ënnerstëtzt fir Bibliothéiken ze hosten.

Gedächtnissécherheet gëtt a Rust zur Zesummesetzungszäit zur Verfügung gestallt duerch Referenzprüfung, Verfollegung vum Objektbesëtzer, Verfollegung vun Objektliewenszäiten (Scope), an d'Korrektheet vum Gedächtniszougang wärend der Code Ausféierung bewäerten. Rust bitt och Schutz géint ganz Zuelen Iwwerschwemmungen, erfuerdert obligatoresch Initialiséierung vu variabelen Wäerter virum Gebrauch, handhabt Feeler besser an der Standardbibliothéik, applizéiert d'Konzept vun onverännerleche Referenzen a Variablen als Standard, bitt staark statesch Tippen fir logesch Feeler ze minimiséieren.

Haaptinnovatiounen:

  • De Cargo Package Manager an de crates.io Repository hunn d'Ënnerstëtzung fir de Sparse Protokoll stabiliséiert, deen en neie Wee fir ze schaffen mat engem Index definéiert, deen déi verfügbar Versioune vun alle Packagen, déi am Repository existéieren, reflektéiert. Den neie Protokoll erlaabt Iech d'Geschwindegkeet vun der Aarbecht mat crates.io wesentlech ze erhéijen an d'Skaléierungsproblemer mat weiderem Wuesstum vun der Unzuel vun de Packagen am Repository ze léisen.

    Fir d'Verspéidungen ze reduzéieren, déi duerch den Download vun engem vollen Index verursaacht ginn, Sparse amplaz Zougang zum Index mat Git involvéiert direkten Download iwwer HTTPS nëmmen déi néideg Indexdaten, déi d'Ofhängegkeete vun engem bestëmmte Projet ofdecken. En neie Service, index.crates.io, gëtt benotzt fir Indexdaten ze liwweren. Par défaut ass den neie Protokoll geplangt fir an der Rust 1.70 Branche benotzt ze ginn, a virdru, fir et z'aktivéieren, kënnt Dir d'Ëmfeldvariabel "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" setzen oder de Parameter 'Protokoll =' op d'[Registries. crates-io]" Sektioun vun der .cargo/config.toml Datei 'sparse'.

  • Huet de "Pin!" Makro bäigefüügt, deen Iech erlaabt e Pin<&mut T> Struktur aus dem Ausdrock "T" mat lokaler Pinning vu sengem Staat ze kreéieren (am Géigesaz zu Box :: Pin, allokéiert et net Erënnerung op der Koup, awer bindt um Stackniveau).
  • E Standard Memory Allocation Feeler Handler gouf proposéiert, benotzt wann Dir de Standard Alloc Package benotzt. Uwendungen déi nëmmen Alloc aktivéieren (ouni std) wäerten elo den "Panik!" Handler nennen wann d'Erënnerungsallokatioun feelt, wat optional mat "#[panic_handler]" ofgefaang ka ginn. Programmer déi d'Std-Bibliothéik benotzen, wäerte weider Fehlerinformatioun op stderr drécken a Crash.
  • En neien Deel vun der API gouf an d'Kategorie vum Stall geplënnert, dorënner d'Methoden an d'Implementatioune vun de Charaktere goufen stabiliséiert:
    • {core,std}::pin::pin!
    • impl vun fir {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut fir PathBuf
  • Den Attribut "const", deen d'Méiglechkeet bestëmmt et an all Kontext ze benotzen anstatt Konstanten, gëtt an der VecDeque :: nei Funktioun benotzt.
  • Fir op der Android Plattform ze schaffen, ass elo op d'mannst NDK r25 (API 19) néideg, d.h. Déi minimal ënnerstëtzt Android Versioun gouf op 4.4 (KitKat) erhéicht.
  • Den drëtten Niveau vun der Ënnerstëtzung gouf fir d'Sony PlayStation Vita Plattform implementéiert (armv7-sony-vita-newlibeabihf). Den drëtten Niveau beinhalt d'Basis Ënnerstëtzung, awer ouni automatiséiert Testen, offiziell Builds ze publizéieren oder ze kontrolléieren ob de Code ka gebaut ginn.

Source: opennet.ru

Setzt e Commentaire