Rust 1.37 Programlingvo-Eldono

eldonita eldono de la sistemo de programlingvo Rusto 1.37, fondita de la projekto Mozilla. La lingvo temigas memorsekurecon, disponigas aŭtomatan memoradministradon, kaj disponigas rimedon por atingi altan taskan paralelecon sen uzado de rubkolektanto aŭ rultempo.

La aŭtomata memoradministrado de Rust liberigas la ellaboranton de montrilo-manipulado kaj protektas kontraŭ problemoj ekestiĝantaj de malaltnivela memormanipulado, kiel ekzemple post-liberaj memoraliroj, nulaj montriloj dereferences, bufrotranspaso, kaj similaĵo. Pakaĵmanaĝero estas evoluigita por distribui bibliotekojn, certigi kunigon kaj administri dependecojn per la projekto. kargo, permesante al vi akiri la bibliotekojn necesajn por la programo per unu klako. Deponejo estas subtenata por gastigi bibliotekojn kestoj.io.

Ĉefa novigoj:

  • En la rustc-kompililo provizita subteno por optimumigo bazita sur kodaj profilaj rezultoj (PGO, Profile-Guided Optimization),
    permesante al vi generi pli optimuman kodon bazitan sur la analizo de statistikoj akumulitaj dum la ekzekuto de la programo. Por generi profilon, la flago "-C profile-generate" estas provizita, kaj por uzi la profilon dum asembleo - "-C profile-use" (komence, la programo estas kunmetita kun la unua flago, funkcias ĉirkaŭe kaj post kreado). la profilon, ĝi estas rekunmetita kun la dua flago);

  • Dum la ekzekuto de la komando "ŝarĝo-kuro", kiu estas konvena uzi por rapide provi konzolajn aplikaĵojn, la kapablo aŭtomate elekti ruleblan dosieron estis aldonita se estas pluraj ruleblaj dosieroj en la pakaĵo. La defaŭlta dosiero por esti ekzekutita estas determinita per la defaŭlta direktivo en la sekcio [pakaĵo] kun pakaj parametroj, kio ebligas al vi eviti eksplicite specifi la dosiernomon per la flago "-bin" ĉiufoje kiam vi ruliĝas "ŝarĝo-run";
  • La komando "kargovendisto", antaŭe provizita kiel aparta pako. La komando ebligas al vi organizi laboron kun loka kopio de dependecoj - post ekzekuto de "ŝarĝa vendisto", ĉiuj fontkodoj de la dependecoj de la projekto estas elŝutitaj de crates.io al loka dosierujo, kiu tiam povas esti uzata por laboro sen aliri kestojn. io (post ekzekuto de la komando, sugesto por ŝanĝi la agordon estas montrita por uzi la dosierujon por konstruoj). Ĉi tiu funkcio jam estas uzata por organizi la liveron de la rustc-kompililo kun pakado de ĉiuj dependecoj en unu arkivo kun la liberigo;
  • Nun eblas krei ligilojn al enum-opcioj uzante tipajn kaŝnomojn (ekzemple, en la korpo de la funkcio “fn increment_or_zero(x: ByteOption) vi povas specifi “ByteOption::None => 0”), tajpu kalkulkonstruaĵojn (‹ MiaTipo‹.. ››::opcio => N) aŭ Mem-aliroj (en blokoj c &mem oni povas specifi “Mem::Kvarono => 25”);
  • Aldonita la kapablo krei nenomitajn konstantojn en makrooj. Anstataŭ difini la elementonomon en "const", vi nun povas uzi la "_" signon por dinamike elekti neripetantan identigilon, evitante nomkonfliktojn kiam denove vokas la makroon;
  • Aldonita la eblo uzi la atributon "#[repr(align(N))" kun enumoj uzante sintakson similan al difinado de AlignN‹T› strukturo kun vicigo kaj poste uzante AlignN‹MyEnum›;
  • Nova parto de la API estis movita al la stabila kategorio, inkluzive de la BufReader::buffer, BufWriter::buffer, kaj
    Ĉelo::from_mut,
    Cell::kiel_tranĉo_de_ĉeloj,
    DoubleEndedIterator::nth_back,
    Opcio::xor
    {i,u}{8,16,64,128,grandeco}::inversaj_bitoj, Envolvado::inversaj_bitoj kaj
    tranĉaĵo::kopiu_ene.

Aldone, ĝi povas esti notita komenco de testado la projekto Async-std, kiu ofertas nesinkronan varianton de la Rust-norma biblioteko (pordo de la std-biblioteko, en kiu ĉiuj interfacoj estas ofertitaj en nesinkrona versio kaj estas pretaj por uzi kun la async/wait-sintakso).

fonto: opennet.ru

Aldoni komenton