Rust 1.64 programsprÄk release

Utgivningen av Rust 1.64 allmÀnt programmeringssprÄk, grundat av Mozilla-projektet, men nu utvecklat under överinseende av den oberoende ideella organisationen Rust Foundation, har publicerats. SprÄket fokuserar pÄ minnessÀkerhet och ger möjlighet att uppnÄ hög jobbparallellism samtidigt som man undviker anvÀndningen av en skrÀpsamlare och körtid (körtiden reduceras till grundlÀggande initiering och underhÄll av standardbiblioteket).

Rusts minneshanteringsmetoder rÀddar utvecklaren frÄn fel vid manipulering av pekare och skyddar mot problem som uppstÄr pÄ grund av minneshantering pÄ lÄg nivÄ, som att komma Ät ett minnesomrÄde efter att det har frigjorts, avlÀsning av nollpekare, buffertöverskridningar, etc. För att distribuera bibliotek, tillhandahÄlla builds och hantera beroenden utvecklar projektet Cargo package manager. Crates.io-förvaret stöds för vÀrdbibliotek.

MinnessÀkerhet tillhandahÄlls i Rust vid kompilering genom referenskontroll, hÄlla reda pÄ objektÀgande, hÄlla reda pÄ objektlivslÀngder (scopes) och bedöma riktigheten av minnesÄtkomst under kodexekvering. Rust ger ocksÄ skydd mot heltalsspill, krÀver obligatorisk initiering av variabelvÀrden innan anvÀndning, hanterar fel bÀttre i standardbiblioteket, tillÀmpar konceptet med oförÀnderliga referenser och variabler som standard, erbjuder stark statisk typning för att minimera logiska fel.

Huvudsakliga innovationer:

  • Ökade krav pĂ„ miljön Linux I kompilatorn, pakethanteraren Cargo och standardbiblioteket libstd har minimikraven för Glibc höjts frĂ„n version 2.11 till 2.17, och kĂ€rnorna Linux FrĂ„n version 2.6.32 till 3.2. Restriktionerna gĂ€ller Ă€ven för Rust-programkörbara filer byggda med libstd. RHEL 7, SLES 12-SP5 och andra distributioner uppfyller de nya kraven. Debian 8 och Ubuntu 14.04. Stöd för RHEL 6, SLES 11-SP4 kommer att upphöra. Debian 7 och Ubuntu 12.04. För anvĂ€ndare som anvĂ€nder Rust-verktygskedjans körbara filer i miljöer med en Ă€ldre kĂ€rna Linux, rekommenderas det att uppgradera sina system, behĂ„lla Ă€ldre kompilatorutgĂ„vor eller oberoende underhĂ„lla sin egen libstd-gren med mellanlager för att upprĂ€tthĂ„lla kompatibilitet.

    Bland anledningarna till att stödet för gamla upphör Linux-system nÀmner begrÀnsade resurser för att fortsÀtta upprÀtthÄlla kompatibilitet med Àldre miljöer. Stöd för Àldre Glibc krÀver anvÀndning av Àldre verktyg vid incheckning i det kontinuerliga integrationssystemet, med tanke pÄ de ökade versionskraven för LLVM och korskompileringsverktyg. De ökade kraven pÄ kÀrnversioner beror pÄ möjligheten att anvÀnda nya systemanrop i libstd utan behov av mellanhÀnder för att sÀkerstÀlla kompatibilitet med Àldre kÀrnor.

  • IntoFuture-egenskapen har stabiliserats, som liknar IntoIterator men skiljer sig frĂ„n den senare genom att anvĂ€nda ".await" istĂ€llet för "for ... in ..." loopar. NĂ€r det kombineras med IntoFuture kan nyckelordet ".await" inte bara vĂ€nta pĂ„ Future-typen utan Ă€ven andra typer som kan konverteras till Future.
  • Rostanalysverktyget ingĂ„r i samlingen av verktyg som levereras med Rust-releaser. Verktyget Ă€r ocksĂ„ tillgĂ€ngligt för installation med hjĂ€lp av rustup (rustup-komponent lĂ€gg till rostanalysator).
  • Pakethanteraren Cargo stöder nu arv av arbetsytor för att undvika duplicering av vanliga fĂ€ltvĂ€rden, sĂ„som Rust-versioner och URL:er för arkiv, mellan paket. Den lĂ€gger ocksĂ„ till stöd för att bygga för flera mĂ„lplattformar samtidigt (alternativet "--target" tillĂ„ter nu mer Ă€n en parameter).
  • En ny del av API:t har flyttats till kategorin stabil, inklusive metoder och implementeringar av egenskaper har stabiliserats:
    • future::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-kompatibla typer som tidigare stabiliserats i std::ffi-modulen har lagts till i kĂ€rn- och alloc-biblioteket:
    • kĂ€rna::ffi::CSr
    • kĂ€rna::ffi::FromBytesWithNulError
    • alloc::ffi::CString
    • alloc::ffi::FromVecWithNulError
    • alloc::ffi::IntoStringError
    • alloc::ffi::NulError
  • Modulerna core::ffi och std::ffi har uppdaterats med C-typer som tidigare stabiliserats i modulen std::os::raw (till exempel har typerna c_uint och c_ulong föreslagits för C-typerna uint och ulong):
    • ffi::c_char
    • ffi::c_dubbel
    • ffi::c_float
    • ffi::c_int
    • ffi::c_long
    • ffi::c_longlong
    • ffi::c_schar
    • ffi::c_short
    • ffi::c_uchar
    • ffi::c_uint
    • ffi::c_ulong
    • ffi::c_ulonglong
    • ffi::c_short
  • LĂ„gnivĂ„hanterare för anvĂ€ndning med Poll-mekanismen har stabiliserats (i framtiden planeras ett förenklat API som inte krĂ€ver anvĂ€ndning av lĂ„gnivĂ„strukturer som Pull och Pin):
    • framtid::poll_fn
    • uppgift::klar!
  • Flaggan "const", som bestĂ€mmer möjligheten att anvĂ€nda i alla sammanhang istĂ€llet för konstanter, anvĂ€nds i funktionen slice::from_raw_parts.
  • För att lagra data mer kompakt har minneslayouten för strukturerna Ipv4Addr, Ipv6Addr, SocketAddrV4 och SocketAddrV6 Ă€ndrats. Det kan finnas kompatibilitetsbrott med enstaka paket som anvĂ€nder std::mem::transmute för manipulering av struktur pĂ„ lĂ„g nivĂ„.
  • I rust-kompilatorversionen för plattformen Windows PGO-optimeringar (profilstyrd optimering) anvĂ€ndes, vilket möjliggjorde en ökning av kodkompileringsprestandan med 10–20 %.
  • Kompilatorn har en ny varning om oanvĂ€nda fĂ€lt i vissa strukturer.

Dessutom kan vi notera statusrapporten om utvecklingen av en alternativ implementering av Rust-sprÄkkompilatorn, utarbetad av gccrs-projektet (GCC Rust) och godkÀnd för inkludering i GCC. Efter att ha integrerat grÀnssnittet kan standardverktyget GCC anvÀndas för att kompilera Rust-program utan att behöva installera rustc-kompilatorn, byggd med hjÀlp av LLVM-utvecklingar. SÄ lÀnge utvecklingen gÄr enligt plan, och med undantag för oförutsedda problem, kommer Rust-fronten att integreras i GCC 13-utgÄvan som Àr planerad till maj nÀsta Är. Rust-implementeringen i GCC 13 kommer att vara i betastatus och inte aktiverad som standard Ànnu.

KĂ€lla: opennet.ru

Köp pĂ„litlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster