Rust 1.47 Programming Language Release

publisearre release 1.47 fan 'e systeemprogrammearringstaal Rust, oprjochte troch it Mozilla-projekt. De taal rjochtet him op ûnthâld feiligens, jout automatyske ûnthâld behear, en jout in middel om te berikken hege taak parallelism sûnder gebrûk garbage samler и runtime (runtime komt del op basis inisjalisaasje en ûnderhâld fan de standert bibleteek).

It automatyske ûnthâldbehear fan Rust elimineert flaters by it manipulearjen fan oanwizers en beskermet tsjin problemen dy't ûntsteane út manipulaasje fan ûnthâld op leech nivo, lykas tagong krije ta in ûnthâldregio nei't it is befrijd, nul-oanwizers dereferences, bufferoverruns, ensfh. In pakketbehearder wurdt ûntwikkele om bibleteken te fersprieden, assemblage te garandearjen en ôfhinklikens te behearjen troch it projekt. Lading. In repository wurdt stipe om bibleteken te hostjen crates.io.

haad ynnovaasjes:

  • Implementearre stipe foar typen arrays willekeurige grutte. Eartiids, troch it ûnfermogen om generike funksjes te definiearjen foar alle heule getalwearden, levere de standertbibleteek ynboude trait-stipe allinich foar arrays oant 32 eleminten yn grutte (de eigenskippen foar elke grutte waarden statysk definieare). Troch de oprjochting fan 'e funksjonaliteit fan konstante generika ("const generics") waard it mooglik om generyske funksjes te definiearjen foar elke arraygrutte, mar se binne noch net opnommen yn 'e stabile taalfunksjes, hoewol se binne ymplementearre yn 'e kompiler en binne no belutsen yn de standert bibleteek foar array trekken fan elke grutte.

    Bygelyks, it folgjende konstruksje yn Rust 1.47 sil de ynhâld fan in array drukke, hoewol it earder soe hawwe resultearre yn in flater:

    fn main() {
    lit xs = [0; 34];

    println!("{:?}", xs);
    }

  • Levere útfier fan koartere spoaren (backtrace), útfier yn needsituaasjes. Eleminten dy't yn 'e measte situaasjes net fan belang binne, mar de útfier rommelje en de oandacht ôfliede fan' e primêre oarsaken fan it probleem, wurde út it spoar útsletten. Om in folsleine spoar werom te jaan, kinne jo de omjouwingsfariabele "RUST_BACKTRACE=fol" brûke. Bygelyks foar de koade

    fn main() {
    panyk!();
    }

    Earder waard it spoar útbrocht yn 23 stadia, mar no sil it werombrocht wurde nei
    3 stappen wêrtroch jo de essinsje direkt kinne begripe:

    thread 'main' yn panyk by 'eksplisite panyk', src/main.rs:2:5
    stack backtrace:
    0: std::panyk::begin_panic
    op /rustc/d…d75a/library/std/src/panicking.rs:497
    1: boarterstún :: main
    at ./src/main.rs:2
    2: kearn::ops::funksje::FnOnce::call_once
    at /rustc/d…d75a/library/core/src/ops/function.rs:227

  • De rustc-kompiler is bywurke om te bouwen mei LLVM 11 (Rust brûkt LLVM as backend foar koade generaasje). Tagelyk wurdt de mooglikheid om te bouwen mei âldere LLVM's, oant ferzje 8, bewarre, mar standert (yn rust-lang/llvm-projekt) brûkt no LLVM 11. LLVM 11 wurdt ferwachte dat se yn 'e kommende dagen frijlitten wurde.
  • Op it Windows-platfoarm biedt de rustc-kompiler stipe foar it ynskeakeljen fan kontrôles fan yntegriteitskontrôles (Control Flow Guard), aktivearre mei de flagge "-C control-flow-guard". Op oare platfoarms wurdt dizze flagge foar no negearre.
  • In nij diel fan API's is oerbrocht nei de stabile kategory, ynklusyf stabilisearre
    Ident::new_raw,
    Range::is_leech,
    RangeInclusive::is_empty,
    Resultaat::as_deref,
    Result::as_deref_mut,
    Vec::lek,
    pointer::offset_from,
    f32::TAU en
    f64 ::wy.

  • It attribút "const", dat de mooglikheid bepaalt om it yn elke kontekst te brûken ynstee fan konstanten, wurdt brûkt yn 'e metoaden:
    • nij foar alle hiele getallen oars as nul;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub en saturating_mul foar alle heule getallen;
    • 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 en is_ascii_types for char
  • Foar FreeBSD belutsen toolkit fan FreeBSD 11.4 (FreeBSD 10 stipet gjin LLVM 11).

Boarne: opennet.ru

Add a comment