Rust 1.65 Programming Language Release

Pelepasan bahasa pemrograman tujuan umum Rust 1.65, 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:

  • Rojongan pikeun Generic Associated Types (GAT) geus ditambahkeun, nu ngamungkinkeun pikeun nyieun tipe aliases pakait sareng tipe séjén, sarta ngidinan tipe constructors pakait sareng Tret. trait Foo {ketik Bar<'x>; }
  • Ekspresi "hayu ... lainna" dilaksanakeun, anu ngamungkinkeun anjeun mariksa kaayaan anu cocog sareng pola langsung di jero ekspresi "hayu" sareng ngajalankeun kode sawenang upami polana henteu cocog. hayu Ok(count) = u64::from_str(count_str) else {panik!("Teu bisa parse integer: '{count_str}'"); };
  • Diidinan nganggo pernyataan putus pikeun kaluar tina blok anu namina sateuacana, nganggo nami blok (label) pikeun nangtukeun blok anu ditungtungan. hayu hasilna = 'block: {do_thing(); lamun condition_not_met () {break 'block 1; } do_next_thing (); lamun condition_not_met () {break 'blok 2; } do_last_thing (); 3};
  • Pikeun Linux, nambihan kamampuan pikeun nyimpen inpormasi debugging sacara misah (split-debuginfo), sateuacana ngan ukur sayogi pikeun platform macOS. Nangtukeun pilihan "-Csplit-debuginfo = unpacked" bakal nyimpen data debuginfo dina format DWARF kana sababaraha file obyék misah kalawan extension ".dwo". Nangtukeun "-Csplit-debuginfo = dipak" bakal nyieun pakét tunggal dina ".dwp" format nu ngawengku sakabéh data debuginfo pikeun proyék nu. Pikeun ngahijikeun debuginfo langsung kana bagian .debug_* objék ELF, anjeun tiasa nganggo pilihan "-Csplit-debuginfo = off".
  • Bagian anyar tina API geus dipindahkeun ka kategori stabil, kaasup métode jeung palaksanaan Tret geus stabilized:
    • std:: backtrace:: backtrace
    • Kabeungkeut::as_ref
    • std::io::read_to_string
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • Atribut "const", anu nangtukeun kamungkinan ngagunakeunana dina konteks naon waé tinimbang konstanta, dianggo dina fungsi <*const T&>::offset_from sareng <*mut T>::offset_from
  • Salaku bagian tina tahap ahir mindahkeun palaksanaan protokol LSP (Language Server Protocol) ka rust-analyzer, palaksanaan Rust Language Server (RLS) anu luntur parantos diganti ku server rintisan anu ngaluarkeun peringatan anu nyarankeun ngalih kana ngagunakeun karat. - analis.
  • Nalika kompilasi, dukungan pikeun panyebaran inline tina kode perantara MIR diaktipkeun, anu nyepetkeun kompilasi bungkusan peti has ku 3-10%.
  • Pikeun ngagancangkeun pangwangunan anu dijadwalkeun, manajer pakét kargo nyayogikeun asihan padamelan anu ngantosan dina antrian.

Salaku tambahan, wawancara ngeunaan panggunaan basa Rust di Volvo pikeun pamekaran komponén pikeun sistem inpormasi otomotif tiasa dicatet. Teu aya rencana pikeun nulis ulang kode anu aya sareng diuji dina Rust, tapi pikeun kode énggal, Rust mangrupikeun pilihan anu dipikaresep pikeun ningkatkeun kualitas kalayan biaya anu langkung handap. Grup kerja anu aya hubunganana sareng karat ogé didamel dina asosiasi otomotif AUTOSAR (AUTomotive Open System ARchitecture) sareng SAE (Society of Automotive Engineers).

Salaku tambahan, David Kleidermacher, VP of Engineering di Google, nyarioskeun ngeunaan tarjamahan Rust tina kode anu dianggo dina platform Android pikeun ngatur konci enkripsi, ogé panggunaan Rust dina palaksanaan DNS liwat protokol HTTPS, dina tumpukan pikeun UWB- chip (Ultra-Wideband) sarta dina kerangka virtualization (Android Virtualization Framework) pakait sareng chip Tensor G2. Pikeun Android, tumpukan anyar pikeun Bluetooth sareng Wi-Fi ogé dikembangkeun, ditulis ulang dina Rust. Strategi umum nyaéta ningkatkeun kaamanan sacara bertahap, mimiti ku mindahkeun komponén parangkat lunak anu paling teu aman sareng penting ka Rust, teras ngalegaan ka subsistem sanés anu aya hubunganana sareng aranjeunna. Taun ka tukang, Rust kalebet dina daptar basa anu diidinan pikeun ngembangkeun platform Android.

sumber: opennet.ru

Tambahkeun komentar