Rust 1.64 Programméiersprooch Fräisetzung

D'Verëffentlechung vun der Rust 1.64 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:

  • D'Ufuerderunge fir d'Linux-Ëmfeld am Compiler, de Cargo Package Manager an d'libstd Standardbibliothéik sinn erhéicht ginn - d'Mindestfuerderunge fir Glibc goufen vun der Versioun 2.11 op 2.17 erhéicht, an de Linux Kernel vun der Versioun 2.6.32 op 3.2. D'Restriktiounen gëllen och fir Rust Applikatioun Ausféierbar mat libstd gebaut. D'Verdeelungskits RHEL 7, SLES 12-SP5, Debian 8 an Ubuntu 14.04 treffen déi nei Ufuerderungen. Ënnerstëtzung fir RHEL 6, SLES 11-SP4, Debian 7 an Ubuntu 12.04 gëtt gestoppt. D'Benotzer déi Rust-built Ausféierbaren an Ëmfeld mat engem méi alen Linux Kernel benotzen, ginn encouragéiert fir hir Systemer ze upgraden, op eelere Verëffentlechunge vum Compiler ze bleiwen oder hir eege libstd Gabel mat Schichten z'erhalen fir Kompatibilitéit z'erhalen.

    Ënnert de Grënn fir d'Ënnerstëtzung fir eeler Linux Systemer ofzeschléissen sinn limitéiert Ressourcen fir weider Kompatibilitéit mat eeler Ëmfeld z'erhalen. Ënnerstëtzung fir Legacy Glibc erfuerdert d'Benotzung vun Legacy Tools wann Dir an engem kontinuéierleche Integratiounssystem iwwerpréift, vis-à-vis vun ëmmer méi Versiounsufuerderungen an LLVM a Cross-Compilation Utilities. D'Erhéijung vun de Kernel Versioun Ufuerderunge ass wéinst der Fäegkeet fir nei Systemruffen am libstd ze benotzen ouni d'Bedierfnes fir Schichten z'erhalen fir Kompatibilitéit mat eelere Kären ze garantéieren.

  • D'IntoFuture Trait gouf stabiliséiert, wat gläicht IntoIterator, awer ënnerscheet sech vun deem Leschten andeems Dir ".await" benotzt anstatt "for ... in ..." Loops. Wann Dir mat IntoFuture kombinéiert, kann de Schlësselwuert ".await" net nëmmen eng Future Trait erwaarden, awer och all aner Aarte déi an eng Future ëmgewandelt kënne ginn.
  • De Rust-Analyzer-Utility ass an der Sammlung vun Utilitys mat Rust Releases abegraff. D'Utility ass och verfügbar fir d'Installatioun mat Rustup (Rustup Komponent add Rust-Analyzer).
  • De Cargo Package Manager enthält Workspace Ierfschaft fir Duplikatioun vu gemeinsame Feldwäerter tëscht Packagen ze eliminéieren, sou wéi Rust Versiounen a Repository URLen. Och bäigefüügt Ënnerstëtzung fir e puer Zilplattformen gläichzäiteg ze bauen (Dir kënnt elo méi wéi ee Parameter an der "--target" Optioun spezifizéieren).
  • 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:
    • Zukunft :: IntoFuture
    • num::NonZero*::checked_mul
    • num::NonZero*::checked_pow
    • num::NonZero*::saturating_mul
    • num::NonZero*::saturating_pow
    • num::NonZeroI*::abs
    • num::NonZeroI*::checked_abs
    • num::NonZeroI*::overflowing_abs
    • num::NonZeroI*::saturating_abs
    • num::NonZeroI*::unsigned_abs
    • num::NonZeroI*::wrapping_abs
    • num::NonZeroU*::checked_add
    • num::NonZeroU*::checked_next_power_of_two
    • num::NonZeroU*::saturating_add
    • os::unix::process::CommandExt::process_group
    • os::windows::fs::FileTypeExt::is_symlink_dir
    • os::windows::fs::FileTypeExt::is_symlink_file
  • C-kompatibel Typen, virdru stabiliséiert am std :: ffi Modul, goufen am Kär an der Alloc Bibliothéik bäigefüügt:
    • Kär::ffi::CStr
    • core::ffi::FromBytesWithNulError
    • alloc::ffi::CString
    • alloc::ffi::FromVecWithNulError
    • alloc::ffi::IntoStringError
    • alloc::ffi::NulError
  • C Typen, déi virdru stabiliséiert goufen am std :: os :: Raw Modul sinn an de Kär :: ffi an std :: ffi Moduler bäigefüügt (zum Beispill, c_uint an c_ulong Typen goufen fir d'uint an ulong C Typen proposéiert):
    • ffi::c_char
    • ffi::c_double
    • ffi::c_float
    • ffi::c_int
    • ffi::c_laang
    • ffi::c_long
    • ffi::c_schar
    • ffi::c_kuerz
    • ffi::c_uchar
    • ffi::c_uint
    • ffi::c_ulong
    • ffi::c_ulonglong
    • ffi::c_short
  • Low-Level Handler goufen stabiliséiert fir ze benotzen mam Poll Mechanismus (an Zukunft ass et geplangt eng vereinfacht API ze bidden déi d'Benotzung vun nidderegen Niveau Strukturen wéi Pull a Pin net erfuerdert):

    • zukunft::poll_fn
    • Aufgab :: prett!
  • Den Attribut "const", wat d'Méiglechkeet bestëmmt et an all Kontext ze benotzen anstatt Konstanten, gëtt an der Slice :: from_raw_parts Funktioun benotzt.
  • Fir méi kompakt Daten ze späicheren, ass de Gedächtnislayout vun den Ipv4Addr, Ipv6Addr, SocketAddrV4 a SocketAddrV6 Strukture geännert ginn. Et kann e Kompatibilitéitsprobleem mat eenzege Këschtpakete sinn, déi std :: mem :: transmute fir niddereg-Niveau Manipulatioun vu Strukturen benotzen.
  • De Bau vum Rust Compiler fir d'Windows Plattform benotzt PGO Optimisatiounen (Profil guidéiert Optimiséierung), déi et méiglech gemaach huet d'Code Compilation Performance ëm 10-20% ze erhéijen.
  • De Compiler huet eng nei Warnung iwwer onbenotzt Felder a bestëmmte Strukturen ëmgesat.

Zousätzlech kënnt Dir de Statusbericht iwwer d'Entwécklung vun enger alternativer Ëmsetzung vum Rust Sproochkompiler notéieren, virbereet vum gccrs-Projet (GCC Rust) a guttgeheescht fir d'Inklusioun am GCC. No der Integratioun vum Frontend kënnen d'Standard GCC Tools benotzt ginn fir Programmer an der Rust Sprooch ze kompiléieren ouni de Rustc Compiler z'installéieren, gebaut mat LLVM Entwécklungen. Soulaang d'Entwécklung op der Streck ass, an all onerwaart Probleemer ausgeschloss, gëtt de Rust Frontend an d'GCC 13 Verëffentlechung, geplangt fir Mee d'nächst Joer, integréiert. D'GCC 13 Implementatioun vu Rust wäert am Beta Status sinn, nach net als Standard aktivéiert.

Source: opennet.ru

Setzt e Commentaire