Ġie ppubblikat ir-rilaxx tal-lingwa ta 'programmar tas-sistema Rust 1.57, imwaqqfa mill-proġett Mozilla, iżda issa żviluppat taħt l-awspiċi tal-organizzazzjoni indipendenti mingħajr skop ta' qligħ Rust Foundation. Il-lingwa tiffoka fuq is-sigurtà tal-memorja, tipprovdi ġestjoni awtomatika tal-memorja, u tipprovdi l-mezzi biex tikseb paralleliżmu għoli tal-kompitu mingħajr ma tuża kollettur taż-żibel jew runtime (runtime huwa mnaqqas għal inizjalizzazzjoni bażika u manutenzjoni tal-librerija standard).
Il-ġestjoni awtomatika tal-memorja ta 'Rut telimina l-iżbalji meta timmanipula pointers u tipproteġi kontra problemi li jirriżultaw minn manipulazzjoni tal-memorja ta' livell baxx, bħall-aċċess għal reġjun tal-memorja wara li jkun ġie meħlus, dereferences null pointer, buffer overruns, eċċ. Biex iqassam il-libreriji, jiżgura l-assemblaġġ u jimmaniġġja d-dipendenzi, il-proġett qed jiżviluppa l-maniġer tal-pakkett tat-Tagħbija. Ir-repożitorju crates.io huwa appoġġjat għall-hosting tal-libreriji.
Innovazzjonijiet ewlenin:
- L-użu tal-makro "paniku!" ġie stabbilizzat. f'kuntesti maħluqa waqt il-kumpilazzjoni, bħal dikjarazzjonijiet "const fn". Barra minn hekk, minbarra li tuża "paniku!" dikjarazzjonijiet const jippermettu l-użu tal-makro “assert!”. u xi APIs oħra tal-librerija standard. L-istabilizzazzjoni għadha ma tkoprix l-infrastruttura kollha tal-ifformattjar, għalhekk fil-forma attwali tagħha l-makro "paniku!" jista' jintuża biss ma' kordi statiċi (paniku!(“...")) jew b'valur interpolat wieħed "&str" meta jissostitwixxi (paniku!("{}", a)), li għandu jkun limitat għas-sostituzzjoni ta' "{ }" mingħajr ifformattjar ta' speċifikaturi u tipi oħra. Fil-futur, l-applikabbiltà tal-makros f'kuntesti kostanti se tiġi estiża, iżda l-kapaċitajiet stabbilizzati diġà huma biżżejjed biex iwettqu kontrolli tal-asserzjoni fl-istadju tal-kumpilazzjoni: const _: () = assert!(std::mem::size_of:: () == 64); const _: () = assert!(std::mem::size_of:: () == 8);
- Il-maniġer tal-pakkett tal-Merkanzija jippermetti l-użu ta 'profili b'ismijiet arbitrarji, mhux limitati għal "dev", "rilaxx", "test" u "bank". Pereżempju, biex tippermetti l-ottimizzazzjoni fl-istadju tal-konnessjoni (LTO) biss meta jiġu ġġenerati l-assemblaġġi tal-prodott finali, tista 'toħloq profil ta' "produzzjoni" f'Cargo.toml u żżid il-bandiera "lto = true" miegħu. Madankollu, meta tiddefinixxi l-profili tiegħek, trid tispeċifika profil eżistenti biex tirret is-settings default minnu. L-eżempju hawn taħt joħloq profil ta’ “produzzjoni” li jikkumplimenta l-profil ta’ “rilaxx” billi jinkludi l-bandiera “lto = true”. Il-profil innifsu huwa attivat billi ssejjaħ merkanzija bl-għażla "--profile production", u l-artifacts tal-assemblaġġ jitqiegħdu fid-direttorju "mira/produzzjoni". [profile.production] inherits = "rilaxx" lto = veru
- L-użu ta 'try_reserve għat-tipi Vec, String, HashMap, HashSet u VecDeque ġie stabbilizzat, li jippermettilek li tirriżerva spazju bil-quddiem għal ċertu numru ta' elementi ta 'tip partikolari sabiex titnaqqas il-frekwenza tal-operazzjonijiet ta' allokazzjoni tal-memorja u tevita ħabtiet waqt l-operazzjoni minħabba nuqqas ta 'memorja.
- Huwa permess li jiġu speċifikati macros b'ċingi kaboċċi f'espressjonijiet bħal "m!{ .. }.method()" u "m!{ .. }?".
- L-eżekuzzjoni tal-funzjonijiet File::read_to_end u read_to_string ġiet ottimizzata.
- L-appoġġ għall-ispeċifikazzjoni Unicode ġie aġġornat għall-verżjoni 14.0.
- Espanda n-numru ta 'funzjonijiet immarkati "#[must_use]" biex toħroġ twissija jekk il-valur tar-ritorn jiġi injorat, li jgħin biex jiġu identifikati żbalji kkawżati billi wieħed jassumi li funzjoni se tbiddel il-valuri aktar milli tirritorna valur ġdid.
- Backend sperimentali miżjud għall-ġenerazzjoni tal-kodiċi bl-użu ta 'libgccjit.
- Porzjon ġdid tal-API ġie mċaqlaq għall-kategorija ta 'stabbli, inklużi l-metodi u l-implimentazzjonijiet tal-karatteristiċi ġew stabbilizzati:
- [T; N]::as_mut_slice
- [T; N]::as_slice
- kollezzjonijiet::TryReserveError
- HashMap::try_reserve
- HashSet::try_reserve
- String::try_reserve
- String::try_reserve_exact
- Vec::pprova_riżerva
- Vec::try_reserve_exact
- VecDeque::try_reserve
- VecDeque::try_reserve_exact
- Iterator::map_while
- iter::MapWhile
- proc_macro::hija_disponibbli
- Kmand::get_program
- Kmand::get_args
- Kmand::get_envs
- Kmand::get_current_dir
- CommandArgs
- CommandEnvs
- L-attribut "const", li jiddetermina jekk jistax jintuża fi kwalunkwe kuntest minflok kostanti, jintuża fil-funzjoni hint::unreachable_unchecked.
- It-tielet livell ta' appoġġ ġie implimentat għall-armv6k-nintendo-3ds, armv7-unknown-linux-uclibceabihf, m68k-unknown-linux-gnu, aarch64-kmc-solid_asp3, armv7a-kmc-solid_asp3-eabi u armv7a-kmc- solid_asp3-eabihf pjattaformi. It-tielet livell jinvolvi appoġġ bażiku, iżda mingħajr ittestjar awtomatizzat, pubblikazzjoni ta 'bini uffiċjali, jew verifika jekk il-kodiċi jistax jinbena.
Sors: opennet.ru