Rilis Bahasa Pemrograman Rust 1.68

Rilis bahasa pemrograman tujuan umum Rust 1.68, yang didirikan oleh proyek Mozilla, tetapi sekarang dikembangkan di bawah naungan organisasi nirlaba independen Rust Foundation, telah diterbitkan. Bahasa berfokus pada keamanan memori dan menyediakan sarana untuk mencapai paralelisme pekerjaan yang tinggi sambil menghindari penggunaan pengumpul sampah dan runtime (runtime dikurangi menjadi inisialisasi dasar dan pemeliharaan perpustakaan standar).

Metode penanganan memori Rust menyelamatkan pengembang dari kesalahan saat memanipulasi pointer dan melindungi dari masalah yang muncul karena penanganan memori tingkat rendah, seperti mengakses area memori setelah dibebaskan, dereferencing null pointer, buffer overruns, dll. Untuk mendistribusikan pustaka, menyediakan build, dan mengelola dependensi, proyek mengembangkan manajer paket Cargo. Repositori crates.io didukung untuk hosting perpustakaan.

Keamanan memori disediakan di Rust pada waktu kompilasi melalui pemeriksaan referensi, melacak kepemilikan objek, melacak masa pakai objek (cakupan), dan menilai kebenaran akses memori selama eksekusi kode. Rust juga memberikan perlindungan terhadap integer overflow, membutuhkan inisialisasi wajib dari nilai variabel sebelum digunakan, menangani kesalahan dengan lebih baik di perpustakaan standar, menerapkan konsep referensi dan variabel yang tidak dapat diubah secara default, menawarkan pengetikan statis yang kuat untuk meminimalkan kesalahan logis.

Inovasi utama:

  • Manajer paket Cargo dan repositori crates.io telah menstabilkan dukungan untuk protokol Sparse, yang mendefinisikan cara baru bekerja dengan indeks yang mencerminkan versi yang tersedia dari semua paket yang ada di repositori. Protokol baru ini memungkinkan Anda meningkatkan kecepatan bekerja dengan crates.io secara signifikan dan memecahkan masalah penskalaan dengan pertumbuhan lebih lanjut dalam jumlah paket di repositori.

    Untuk mengurangi penundaan yang disebabkan oleh pengunduhan indeks penuh, Sparse alih-alih mengakses indeks menggunakan Git melibatkan pengunduhan langsung melalui HTTPS hanya data indeks yang diperlukan, yang mencakup dependensi proyek tertentu. Layanan baru, index.crates.io, digunakan untuk menyediakan data indeks. Secara default, protokol baru direncanakan untuk digunakan di cabang Rust 1.70, dan sebelum itu, untuk mengaktifkannya, Anda dapat mengatur variabel lingkungan "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" atau menambahkan parameter 'protocol =' ke "[registries. crates-io]" bagian dari file .cargo/config.toml 'jarang'.

  • Menambahkan makro β€œpin!”, yang memungkinkan Anda membuat struktur Pin<&mut T> dari ekspresi β€œT” dengan penyematan lokal pada statusnya (tidak seperti Box::pin, ia tidak mengalokasikan memori pada heap, namun mengikat pada tingkat tumpukan).
  • Penangan kesalahan alokasi memori default telah diusulkan, digunakan saat menggunakan paket alokasi standar. Aplikasi yang hanya mengaktifkan alokasi (tanpa std) sekarang akan memanggil pengendali β€œpanic!” ketika alokasi memori gagal, yang secara opsional dapat disadap menggunakan β€œ#[panic_handler]”. Program yang menggunakan perpustakaan std akan terus mencetak informasi kesalahan ke stderr dan crash.
  • Bagian baru dari API telah dipindahkan ke kategori stabil, termasuk metode dan penerapan sifat yang telah distabilkan:
    • {inti,std}::pin::pin!
    • impl Dari untuk {f32,f64}
    • std::jalur::MAIN_SEPARATOR_STR
    • impl DerefMut untuk PathBuf
  • Atribut β€œconst”, yang menentukan kemungkinan menggunakannya dalam konteks apa pun alih-alih konstanta, digunakan dalam fungsi VecDeque::new.
  • Untuk bekerja pada platform Android, setidaknya diperlukan NDK r25 (API 19), mis. Versi Android minimum yang didukung telah dinaikkan menjadi 4.4 (KitKat).
  • Dukungan tingkat ketiga telah diterapkan untuk platform Sony PlayStation Vita (armv7-sony-vita-newlibeabihf). Tingkat ketiga melibatkan dukungan dasar, tetapi tanpa pengujian otomatis, penerbitan versi resmi, atau pemeriksaan apakah kode dapat dibuat.

Sumber: opennet.ru

Tambah komentar