Rust 1.47 Programming Language Version

Version 1.47 nan langaj pwogramasyon sistèm Rust, ki te fonde pa pwojè Mozilla a, te pibliye. Lang la konsantre sou sekirite memwa, bay jesyon memwa otomatik, epi li bay mwayen pou reyalize paralèl travay segondè san yo pa itilize yon pèseptè fatra oswa ègzekutabl (se exécution redwi a inisyalizasyon debaz ak antretyen nan bibliyotèk la estanda).

Jesyon otomatik memwa Rust a elimine erè lè w ap manipile endikasyon ak pwoteje kont pwoblèm ki rive nan manipilasyon memwa ki ba, tankou aksè nan yon rejyon memwa apre li fin libere, dereferans pointeur nil, depase tanpon, elatriye. Pou distribye bibliyotèk, asire asanble ak jere depandans, pwojè a ap devlope manadjè pake kago. Repozitwa crates.io sipòte pou hosting bibliyotèk.

Prensipal inovasyon:

  • Aplike sipò pou karakteristik pou etalaj nan gwosè abitrè. Anvan sa, akòz enkapasite pou defini fonksyon jenerik pou tout valè nonb antye relatif, bibliyotèk estanda a te bay sipò karakteristik bati-an sèlman pou etalaj jiska 32 eleman nan gwosè (karakteristik yo pou chak gwosè yo te defini estatik). Mèsi a kreyasyon fonksyonalite konst jenerik, li te vin posib pou defini fonksyon jenerik pou nenpòt gwosè etalaj, men yo poko enkli nan karakteristik ki estab nan lang lan, byenke yo aplike nan konpilatè a epi yo kounye a yo itilize nan bibliyotèk la estanda. pou kalite etalaj nenpòt gwosè.
    Pou egzanp, konstriksyon sa a nan Rust 1.47 pral enprime sa ki nan yon etalaj, byenke deja li ta lakòz yon erè:

fn main() {
kite xs = [0; 34];
println!("{:?}", xs);
}

  • Bay pwodiksyon de tras ki pi kout (backtrace), pwodiksyon nan sitiyasyon ijans. Eleman ki pa enterese nan pifò sitiyasyon, men ki ankonbre pwodiksyon an ak distrè atansyon nan kòz prensipal pwoblèm nan, yo eskli nan tras la. Pou retounen yon tras konplè, ou ka itilize varyab anviwònman an "RUST_BACKTRACE=full". Pou egzanp, pou kòd la

fn main() {
panik!();
}

Anvan sa, trase a te parèt nan 23 etap, men kounye a li pral redwi a 3 etap, sa ki pèmèt ou imedyatman atrab esans lan:

fil 'principal' panike nan 'panik eksplisit', src/main.rs:2:5
pile backtrace:
0: std::panik::begin_panic
nan /rustc/d…d75a/library/std/src/panicking.rs:497
1: lakou rekreyasyon::principal
nan ./src/main.rs:2
2: nwayo::ops::fonksyon::FnOnce::call_once
nan /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Konpilatè rustc la te mete ajou pou konstwi lè l sèvi avèk LLVM 11 (Rust itilize LLVM kòm yon backend pou jenerasyon kòd). An menm tan an, yo kenbe kapasite pou konstwi ak ansyen LLVM, jiska vèsyon 8, men pa default (nan rust-lang/llvm-project) LLVM 11 se kounye a yo te espere lage LLVM 11 la jou.
  • Sou platfòm Windows la, du rustc a bay sipò pou pèmèt kontwòl koule entegrite chèk (Control Flow Guard), aktive lè l sèvi avèk drapo "-C control-flow-guard". Sou lòt platfòm drapo sa a inyore pou kounye a.
  • Yon nouvo pòsyon nan API a te transfere nan kategori ki estab, ki gen ladan estabilize Ident::new_raw, Range::is_empty, RangeInclusive::is_empty, Result::as_deref, Result::as_deref_mut, Vec::leak, pointer::offset_from , f32:: TAU ak f64::TAU.
  • Atribi "const", ki detèmine posiblite pou itilize li nan nenpòt kontèks olye pou yo konstan, yo itilize nan metòd yo:
    • nouvo pou tout nonm antye ki pa zewo;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub ak saturating_mul pou tout nonb antye;
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace ak is_ascii_control pou kalite char ak u8.
  • Pou FreeBSD, yo itilize zouti ki soti nan FreeBSD 11.4 (FreeBSD 10 pa sipòte LLVM 11).

Pran nan opennet.ru

Sous: linux.org.ru

Add nouvo kòmantè