Rust 1.44 Programming Language Version

pibliye lage langaj pwogramasyon sistèm lan Rouye 1.44, ki te fonde pa pwojè Mozilla. Lang lan konsantre sou sekirite memwa, bay jesyon memwa otomatik, epi li bay zouti pou reyalize gwo paralelis nan travay san yo pa itilize yon pèseptè fatra ak ègzÊkusion.

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. Yon manadjè pake ap devlope pou distribye bibliyotèk, asire asanble ak jere depandans pa pwojè a. Chaj, ki pèmèt ou jwenn bibliyotèk ki nesesè pou pwogram nan nan yon sèl klike sou. Yon depo sipòte pou òganize bibliyotèk kès.io.

Nan tèks la nan anons la nan nouvo lage a, devlopè yo Rust te patisipe nan politik epi yo te refize pibliye yon revizyon konplè sou chanjman yo nan Rust 1.44 kòm yon siy solidarite ak manifestan kont vyolans lapolis, ki endike ke pwoblèm sa a pi enpòtan. pase echanj konesans teknik. Debaz inovasyon:

  • Manadjè pake kago a entegre kòmandman "pye bwa kago", ki montre yon graf depandans tankou pye bwa. Opsyon "—duplicates" ("cargo tree -d") te ajoute tou, ki pèmèt ou evalye depandans nan diferan vèsyon menm pake a.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── amonyak v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── log v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── log v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [depandans-konstriksyon] │ │ │ └── version_check v0.1.5
    ...

  • Pou aplikasyon ki pa mare nan yon std ("#![no_std]"), sipò pou teknik pwogram asynchrone ki baze sou fonksyon "async", blòk mouvman async { ... } ak operatè ".await" la te aplike, ki fè li pi fasil yo ekri moun kap okipe yo ki pa bloke koule kòmand prensipal.
  • Yo te ajoute sipò pou yon konplo definisyon yerachi modil ekstansib nan analizeur la. Pou egzanp, konstriksyon sa a pa pral pwodui yon erè, malgre absans aktyèl la nan modil "foo/bar/baz.rs" (konstriksyon an se toujou semantik envalid epi li ka lakòz yon erè, men chanjman yo ka wè ak analize nan nivo konpilasyon macro ak kondisyonèl):

    #[cfg(FO)] mod foo {
    mod bar {
    mod baz;
    }
    }

  • Konpilateur rustc la te ajoute kapasite pou itilize drapo "-C codegen-units" nan mòd incrĂŠmentielle. Yo te retravay aplikasyon catch_unwind pou li pa gen okenn enpak sou pèfòmans si pwosesis dewoulman an enfim epi pa gen okenn eksepsyon yo jete.
  • Yo bay sipò Nivo 64 pou platfòm aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos ak x64_XNUMX-apple-tvos. Twazyèm nivo a enplike sipò debaz, men san tès otomatik ak piblikasyon bati ofisyèl yo.
  • Yon nouvo pòsyon API yo te transfere nan kategori ki estab, ki gen ladan estabilize
    PathBuf::with_capacity,
    PathBuf::kapasite,
    PathBuf::clear,
    PathBuf::rezèv,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    Layout::align_to,
    Layout::pad_to_align,
    Layout::etalaj ak
    Layout::pwolonje.
  • Fonksyon pwolonje nan bibliyotèk estanda a:
    • Te ajoute yon varyant espesyal "vec![]" ki dirèkteman reflete nan Vec::new(), ki pèmèt "vec![]" yo dwe itilize nan kontèks olye pou yo konstan.
    • Yo te ajoute yon aplikasyon (impl) nan karakteristik nan konvèti::Infallible Hash.
    • OsString aplike endikasyon entelijan DerefMut и IndexMut, retounen "&mut OsStr".
    • Te ajoute sipò pou Unicode 13.
    • Aplike nan String Soti nan<&mut str>.
    • IoSlice aplike karakteristik la Kopi.
    • Vec aplike Soti nan<[T; N]>.
    • proc_macro::LexError aplike fmt::Display ak Erè.
  • Atribi "const", ki detèmine si li ka itilize nan nenpòt kontèks olye pou yo konstan, yo itilize nan metòd from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes ak to_ne_bytes pou tout kalite nonb antye.
  • Te ajoute sipò pou jenere bibliyotèk estatik nan fòma ".a" olye de ".lib" pou platfòm GNU sou Windows.
  • Kondisyon minimòm pou LLVM yo te ogmante nan LLVM vèsyon 8.

Sous: opennet.ru

Add nouvo kòmantè