Rust 1.44 Programming Language Release

diterbitkeun release basa programming sistem Karat 1.44, diadegkeun ku proyék Mozilla. Basa éta museurkeun kana kaamanan mémori, nyayogikeun manajemén mémori otomatis, sareng nyayogikeun alat pikeun ngahontal paralelisme tugas anu luhur tanpa nganggo tukang sampah sareng runtime.

Manajemén mémori otomatis Rust ngaleungitkeun kasalahan nalika ngamanipulasi pointer sareng ngajagi tina masalah anu timbul tina manipulasi mémori tingkat rendah, sapertos ngaksés daérah mémori saatos dibébaskeun, dereferences pointer null, overruns panyangga, jsb. Pangatur pakét dikembangkeun pikeun ngadistribusikaeun perpustakaan, mastikeun ngumpul sareng ngatur kagumantungan ku proyék. kargo, anu ngamungkinkeun anjeun kéngingkeun perpustakaan anu anjeun peryogikeun pikeun program dina hiji klik. Repository dirojong pikeun host perpustakaan crates.io.

Dina téks pengumuman sékrési énggal, pamekar Rust aub dina politik sareng sacara jelas nolak nyebarkeun ulasan lengkep ngeunaan parobahan Rust 1.44 salaku tanda solidaritas sareng demonstran ngalawan kekerasan pulisi, nunjukkeun yén masalah ieu langkung penting. tinimbang bursa pangaweruh teknis. Dasar inovasi:

  • Manajer pakét kargo ngahijikeun paréntah "tangkal kargo", anu ningalikeun grafik kagumantungan sapertos tangkal. Ogé ditambahkeun nyaéta pilihan "-duplikat" ("tangkal kargo -d"), nu ngidinan Anjeun pikeun evaluate kagumantungan dina versi béda tina pakét sarua.

    mdbook v0.3.2 (/Pamaké/src/rust/mdbook)
    ├── amonia v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── log v0.4.8
    │ │ │ └── cfg-lamun 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
    │ │ │ [build-dependencies] │ │ │ └── version_check v0.1.5
    ...

  • Pikeun aplikasi anu henteu kabeungkeut kana std ("#![no_std]"), dukungan pikeun téknik pamrograman Asynchronous dilaksanakeun dumasar kana fungsi "async", blok async move {... } sareng operator ".await", anu mana. simplify nulis non-blocking pawang aliran paréntah utama.
  • Rojongan pikeun skéma definisi hirarki modul extensible geus ditambahkeun kana parser nu. Contona, ngawangun handap moal ngahasilkeun kasalahan, sanajan henteuna sabenerna modul "foo/bar/baz.rs" (konstruksi masih semantically sah sarta bisa ngabalukarkeun kasalahan, tapi parobahanana bisa ditempo sarta parsed di. tingkat kompilasi makro sareng kondisional):

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

  • The rustc compiler geus ditambahkeun kamampuhan pikeun ngagunakeun "-C codegen-units" bandéra dina mode incremental. Palaksanaan catch_unwind geus reworked ambéh teu boga dampak kinerja lamun prosés unwinding ditumpurkeun tur euweuh pengecualian anu dialungkeun.
  • Dukungan Level 64 parantos disayogikeun pikeun platform aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos sareng x64_XNUMX-apple-tvos. Tingkat katilu ngalibatkeun dukungan dasar, tapi tanpa tés otomatis sareng publikasi wangunan resmi.
  • Bagian anyar API parantos dialihkeun kana kategori stabil, kalebet distabilkeun
    PathBuf::with_capacity,
    PathBuf::kapasitas,
    PathBuf:: jelas,
    PathBuf::cadangan,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_uncented,
    Layout::align_to,
    Layout::pad_to_align,
    Layout :: susunan jeung
    Layout:: ngalegaan.

  • Fungsi tambahan tina perpustakaan standar:
    • Ditambahkeun "vec! []" varian husus anu langsung reflected dina Vec :: anyar (), ngamungkinkeun "vec! []" dipaké dina konteks tinimbang konstanta.
    • Hiji palaksanaan (impl) tina tret geus ditambahkeun pikeun ngarobah :: Infallible Hash.
    • OsString implements pointers pinter DerefMut и IndexMut, balik "&mut OsStr".
    • Ditambahkeun dukungan pikeun Unicode 13.
    • Dilaksanakeun dina String Ti<&mut str>.
    • IoSlice implements tret salinan.
    • Vec dilaksanakeun Ti<[T; N]>.
    • proc_macro :: LexError ngalaksanakeun fmt :: Tampilan sareng Kasalahan.
  • Atribut "const", nu nangtukeun kamungkinan ngagunakeun eta dina sagala konteks tinimbang konstanta, dipaké dina from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes jeung to_ne_bytes métode pikeun sakabéh jenis integer.
  • Ditambahkeun dukungan pikeun ngahasilkeun perpustakaan statik dina format ".a" tinimbang ".lib" kanggo platform GNU dina Windows.
  • Sarat minimum pikeun LLVM parantos diangkat kana LLVM versi 8.

sumber: opennet.ru

Tambahkeun komentar