Rust 1.68 Programlingvo-Eldono

La eldono de la ĝeneraluzebla programlingvo Rust 1.68, fondita de la projekto Mozilla, sed nun disvolvita sub la aŭspicioj de la sendependa neprofitcela organizaĵo Rust Foundation, estis publikigita. La lingvo temigas memorsekurecon kaj disponigas la rimedojn por atingi altan laborparalelecon evitante la uzon de rubkolektilo kaj rultempo (rultempo estas reduktita al baza inicialigo kaj prizorgado de la norma biblioteko).

La memormanipulaj metodoj de Rust savas la ellaboranton de eraroj dum manipulado de montriloj kaj protektas kontraŭ problemoj kiuj ekestas pro malaltnivela memortraktado, kiel ekzemple alirado de memorareo post kiam ĝi estis liberigita, dereferencing nulmontriloj, bufrotranspaso, ktp. Por distribui bibliotekojn, provizi konstruaĵojn kaj administri dependecojn, la projekto disvolvas la Cargo-pakaĵmanaĝeron. La deponejo crates.io estas subtenata por gastigado de bibliotekoj.

Memorsekureco estas disponigita en Rust ĉe kompiltempo tra referenckontrolado, konservante trakon de objektoposedo, konservante trakon de objektovivdaŭroj (kampoj), kaj taksante la ĝustecon de memoraliro dum kodekzekuto. Rusto ankaŭ provizas protekton kontraŭ entjeraj superfluoj, postulas devigan inicialigon de variaj valoroj antaŭ uzo, pli bone pritraktas erarojn en la norma biblioteko, aplikas la koncepton de neŝanĝeblaj referencoj kaj variabloj defaŭlte, ofertas fortan senmovan tajpadon por minimumigi logikajn erarojn.

Ĉefaj novigoj:

  • La administranto de pakaĵoj Cargo kaj la deponejo crates.io stabiligis subtenon por la protokolo Sparse, kiu difinas novan manieron labori kun indekso, kiu reflektas la disponeblajn versiojn de ĉiuj pakaĵoj ekzistantaj en la deponejo. La nova protokolo permesas vin signife pliigi la rapidecon labori kun crates.io kaj solvi skalajn problemojn kun plia kresko de la nombro da pakaĵoj en la deponejo.

    Por redukti la malfruojn kaŭzitajn de elŝutado de plena indekso, Sparse anstataŭ aliri la indekson uzante Git implikas rektan elŝuton per HTTPS nur la necesajn indeksajn datumojn, kovrante la dependecojn de aparta projekto. Nova servo, index.crates.io, estas uzata por provizi indeksajn datumojn. Defaŭlte, la nova protokolo estas planita por esti uzata en la branĉo Rust 1.70, kaj antaŭ tio, por ebligi ĝin, vi povas agordi la mediovariablon "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=maldensa" aŭ aldoni la parametron 'protokolo =' al la "[registroj. crates-io]" sekcio de la .cargo/config.toml dosiero 'sparse'.

  • Aldonita la makroo "pinglo!", kiu ebligas al vi krei strukturon Pin<&mut T> el la esprimo "T" kun loka alpinglado de ĝia stato (male al Box::pin, ĝi ne asignas memoron sur la amaso, sed ligas ĉe la staknivelo).
  • Defaŭlta memor-asigna erartraktilo estis proponita, uzita dum uzado de la norma alloc-pakaĵo. Aplikoj kiuj nur ebligas allok (sen std) nun nomos la "paniko!"-prizorganto kiam memora asigno malsukcesas, kiu povas laŭvole esti kaptita uzante "#[panic_handler]". Programoj uzantaj la std-bibliotekon daŭre presis erarajn informojn al stderr kaj kraŝo.
  • Nova parto de la API estis movita al la kategorio de stalo, inkluzive de la metodoj kaj efektivigoj de trajtoj estis stabiligitaj:
    • {kerno,std}::pin::pin!
    • impl De por {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut por PathBuf
  • La atributo "const", kiu determinas la eblecon uzi ĝin en iu ajn kunteksto anstataŭ konstantoj, estas uzata en la funkcio VecDeque::new.
  • Por labori sur la Android-platformo, almenaŭ NDK r25 (API 19) nun estas bezonata, t.e. La minimuma subtenata Android-versio estis altigita al 4.4 (KitKat).
  • La tria nivelo de subteno estis efektivigita por la platformo Sony PlayStation Vita (armv7-sony-vita-newlibeabihf). La tria nivelo implikas bazan subtenon, sed sen aŭtomatigita testado, publikigado de oficialaj konstruaĵoj aŭ kontrolado ĉu la kodo povas esti konstruita.

fonto: opennet.ru

Aldoni komenton