Rust 1.64 Programming Language Release

Pelepasan bahasa pemrograman tujuan umum Rust 1.64, diadegkeun ku proyék Mozilla, tapi ayeuna dikembangkeun dina naungan organisasi nirlaba bebas Rust Foundation, parantos diterbitkeun. basa museurkeun kana kaamanan memori jeung nyadiakeun sarana pikeun ngahontal paralelisme pakasaban tinggi bari Ngahindarkeun pamakéan a collector sampah na runtime (runtime diréduksi jadi initialization dasar tur pamaliharaan perpustakaan baku).

Métode penanganan memori Rust nyalametkeun pamekar tina kasalahan nalika ngamanipulasi pointer sareng ngajagi tina masalah anu timbul kusabab panangan mémori tingkat rendah, sapertos aksés ka daérah mémori saatos dibébaskeun, dereferencing pointer null, overruns panyangga, jsb. Pikeun ngadistribusikaeun perpustakaan, nyadiakeun ngawangun jeung ngatur kagumantungan, proyék ngamekarkeun manajer pakét Cargo. Repositori crates.io dirojong pikeun perpustakaan hosting.

Kasalametan memori disayogikeun dina Rust dina waktos kompilasi ngaliwatan pamariksaan rujukan, ngalacak kapamilikan obyék, ngalacak umur obyék (skop), sareng ngira-ngira kabeneran aksés mémori nalika palaksanaan kode. Karat ogé nyadiakeun panyalindungan ngalawan overflows integer, merlukeun initialization wajib nilai variabel saméméh pamakéan, handles kasalahan hadé dina perpustakaan baku, nerapkeun konsép rujukan immutable sarta variabel sacara standar, nawarkeun ketak statik kuat pikeun ngaleutikan kasalahan logis.

Inovasi utama:

  • Sarat pikeun lingkungan Linux di kompiler, manajer pakét kargo sareng perpustakaan standar libstd parantos ningkat - syarat minimum pikeun Glibc parantos diangkat tina versi 2.11 ka 2.17, sareng kernel Linux tina versi 2.6.32 ka 3.2. Watesan ogé dilarapkeun ka executable aplikasi Rust diwangun ku libstd. Kit distribusi RHEL 7, SLES 12-SP5, Debian 8 sareng Ubuntu 14.04 nyumponan sarat anyar. Rojongan pikeun RHEL 6, SLES 11-SP4, Debian 7 sareng Ubuntu 12.04 bakal dileungitkeun. Pamaké anu ngagunakeun executables Rust-diwangun dina lingkungan kalawan kernel Linux Ubuntu heubeul didorong pikeun ngamutahirkeun sistem maranéhanana, tetep dina release heubeul tina compiler, atawa ngajaga garpu libstd sorangan kalawan lapisan pikeun ngajaga kasaluyuan.

    Diantara alesan pikeun ngeureunkeun dukungan pikeun sistem Linux anu lami nyaéta sumber daya terbatas pikeun terus ngajaga kasaluyuan sareng lingkungan anu langkung lami. Rojongan pikeun warisan Glibc merlukeun pamakéan parabot warisan nalika mariksa dina sistem integrasi kontinyu, dina nyanghareupan ngaronjatna sarat versi dina LLVM sarta utilitas cross-kompilasi. Kanaékan syarat versi kernel alatan kamampuhan pikeun ngagunakeun panggero sistem anyar dina libstd tanpa kudu ngajaga lapisan pikeun mastikeun kasaluyuan jeung kernels heubeul.

  • Tret IntoFuture geus stabilized, nu nyarupaan IntoIterator, tapi béda ti dimungkinkeun ku ngagunakeun ".await" tinimbang "pikeun ... di ..." loops. Nalika digabungkeun sareng IntoFuture, kecap konci ".await" tiasa ngaharepkeun henteu ngan ukur sipat Kahareup, tapi ogé jinis-jinis sanés anu tiasa dirobih janten Kahareup.
  • Utiliti rust-analyzer kalebet dina kumpulan utilitas anu disayogikeun sareng release Rust. Utiliti oge sadia pikeun instalasi maké rustup (komponén rustup nambahkeun rust-analyzer).
  • Pangatur pakét Cargo kalebet warisan ruang kerja pikeun ngaleungitkeun duplikasi nilai médan umum antara bungkusan, sapertos versi Rust sareng URL gudang. Ogé ditambahkeun rojongan pikeun ngawangun sababaraha platform target sakaligus (anjeun ayeuna bisa nangtukeun leuwih ti hiji parameter dina pilihan "--target").
  • Bagian anyar tina API geus dipindahkeun ka kategori stabil, kaasup métode jeung palaksanaan Tret geus stabilized:
    • kahareup :: IntoFuture
    • num::NonZero*::checked_mul
    • num :: NonZero * :: checked_pow
    • num::NonZero*::saturating_mul
    • num::NonZero*::saturating_pow
    • num::NonZeroI*::abs
    • num::NonZeroI*::checked_abs
    • num::NonZeroI*:: overflowing_abs
    • num::NonZeroI*::saturating_abs
    • num::NonZeroI*::unsigned_abs
    • num::NonZeroI*::wrapping_abs
    • num::NonZeroU*::checked_add
    • num::NonZeroU*::checked_next_power_of_two
    • num::NonZeroU*::saturating_add
    • os :: unix :: prosés :: CommandExt :: process_group
    • os::windows::fs::FileTypeExt::is_symlink_dir
    • os::windows::fs::FileTypeExt::is_symlink_file
  • Jenis C-cocog, saméméhna stabilized dina std:: ffi modul, geus ditambahkeun kana inti jeung perpustakaan alloc:
    • inti::ffi::CStr
    • inti ::ffi::FromBytesWithNulError
    • alloc::ffi::CString
    • alloc::ffi::FromVecWithNulError
    • alloc::ffi::IntoStringError
    • alloc::ffi::NulError
  • Jenis C anu saacanna distabilkeun dina std :: os :: modul atah geus ditambahkeun kana inti :: ffi na std :: modul ffi (contona, tipe c_uint na c_ulong geus diajukeun pikeun uint na ulong tipe C):
    • ffi::c_char
    • ffi::c_double
    • ffi::c_float
    • ffi::c_int
    • ffi::c_long
    • ffi::c_longlong
    • ffi::c_schar
    • ffi::c_short
    • ffi::c_uchar
    • ffi::c_uint
    • ffi::c_ulong
    • ffi::c_ulonglong
    • ffi::c_ushort
  • Pawang tingkat-rendah parantos distabilkeun pikeun dianggo sareng mékanisme Polling (kahareupna direncanakeun pikeun nyayogikeun API saderhana anu henteu meryogikeun panggunaan struktur tingkat rendah sapertos Tarik sareng Pin):

    • hareup::poll_fn
    • tugas:: siap!
  • Atribut "const", nu nangtukeun kamungkinan ngagunakeun eta dina sagala konteks tinimbang konstanta, dipaké dina fungsi nyiksikan::from_raw_parts.
  • Pikeun nyimpen data anu langkung kompak, perenah mémori tina struktur Ipv4Addr, Ipv6Addr, SocketAddrV4 sareng SocketAddrV6 parantos dirobih. Panginten aya masalah kasaluyuan sareng bungkusan peti tunggal anu nganggo std::mem::transmute pikeun manipulasi struktur tingkat rendah.
  • Pangwangunan kompiler karat pikeun platform Windows nganggo optimasi PGO (optimasi dipandu profil), anu ngamungkinkeun pikeun ningkatkeun kinerja kompilasi kode ku 10-20%.
  • Kompiler parantos ngalaksanakeun peringatan énggal ngeunaan widang anu henteu dianggo dina struktur anu tangtu.

Salaku tambahan, anjeun tiasa nyatet laporan status ngeunaan pamekaran palaksanaan alternatif kompiler basa Rust, disiapkeun ku proyék gccrs (GCC Rust) sareng disatujuan pikeun dilebetkeun kana GCC. Saatos ngahijikeun frontend, alat GCC standar tiasa dianggo pikeun nyusun program dina basa Rust tanpa kedah masang kompiler rustc, diwangun nganggo pamekaran LLVM. Salami pamekaran aya dina jalur, sareng ngahalangan masalah anu teu disangka-sangka, payuneun Rust bakal diintegrasikeun kana sékrési GCC 13 anu dijadwalkeun Mei taun payun. Palaksanaan GCC 13 Rust bakal dina status béta, henteu acan diaktipkeun sacara standar.

sumber: opennet.ru

Tambahkeun komentar