Keluaran bahasa pengaturcaraan Rust 1.68

Bahasa pengaturcaraan tujuan umum Rust 1.68, yang diasaskan oleh projek Mozilla tetapi kini dibangunkan di bawah naungan organisasi bebas tanpa untung Rust Foundation, telah dikeluarkan. Bahasa ini memberi tumpuan kepada keselamatan ingatan dan menyediakan cara untuk mencapai keselarian kerja yang tinggi sambil mengelakkan penggunaan pengumpul sampah dan masa jalan (masa jalan dikurangkan kepada permulaan asas dan penyelenggaraan perpustakaan standard).

Kaedah pengendalian memori Rust menyelamatkan pembangun daripada ralat semasa memanipulasi penunjuk dan melindungi daripada masalah yang timbul akibat pengendalian memori peringkat rendah, seperti mengakses kawasan memori selepas ia dibebaskan, membatalkan penunjuk nol, overrun penimbal, dsb. Untuk mengedarkan perpustakaan, menyediakan binaan dan mengurus kebergantungan, projek membangunkan pengurus pakej Kargo. Repositori crates.io disokong untuk mengehos perpustakaan.

Keselamatan memori disediakan dalam Rust pada masa penyusunan melalui semakan rujukan, menjejaki pemilikan objek, menjejaki jangka hayat objek (skop) dan menilai ketepatan akses memori semasa pelaksanaan kod. Rust juga menyediakan perlindungan terhadap limpahan integer, memerlukan permulaan mandatori nilai pembolehubah sebelum digunakan, mengendalikan ralat dengan lebih baik dalam perpustakaan standard, menggunakan konsep rujukan tidak berubah dan pembolehubah secara lalai, menawarkan penaipan statik yang kuat untuk meminimumkan ralat logik.

Inovasi utama:

  • Sokongan untuk protokol Sparse telah distabilkan dalam pengurus pakej Kargo dan repositori crates.io, yang mentakrifkan cara baharu untuk bekerja dengan indeks yang mencerminkan versi tersedia bagi semua pakej yang sedia ada dalam repositori. Protokol baharu membolehkan anda meningkatkan kelajuan bekerja dengan crates.io dengan ketara dan menyelesaikan masalah dengan penskalaan dengan peningkatan lagi dalam bilangan pakej dalam repositori.

    Untuk mengurangkan kelewatan akibat daripada memuat turun indeks penuh, Sparse bukannya mengakses indeks menggunakan Git, memuat turun terus melalui HTTPS hanya data indeks yang diperlukan, meliputi kebergantungan projek tertentu. Perkhidmatan index.crates.io baharu digunakan untuk mengembalikan data indeks. Secara lalai, protokol baharu dirancang untuk digunakan dalam cawangan Rust 1.70, dan sebelum itu, untuk mendayakannya, anda boleh menetapkan pembolehubah persekitaran "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" atau tambah parameter 'protocol = pada "[registries.crates -io]" bahagian fail .cargo/config.toml "jarang"'.

  • Menambahkan makro "pin!", yang membolehkan mencipta struktur Pin<&mut T> daripada ungkapan "T" dengan penyematan setempat keadaannya (tidak seperti Box::pin tidak memperuntukkan memori pada timbunan, tetapi mengikat pada tahap tindanan) .
  • Pengendali ralat peruntukan memori lalai dicadangkan, yang digunakan apabila menggunakan pakej alloc standard. Aplikasi yang hanya mendayakan alloc (tanpa std) kini akan memanggil pengendali "panik!" pada kegagalan peruntukan memori, yang secara pilihan boleh dipintas dengan "#[panic_handler]". Program yang menggunakan perpustakaan std masih akan mencetak maklumat ralat ke stderr dan ranap.
  • Bahagian baharu API telah dialihkan ke kategori stabil, termasuk kaedah dan pelaksanaan ciri telah distabilkan:
    • {core,std}::pin::pin!
    • impl Daripada untuk {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut untuk PathBuf
  • Atribut "const", yang menentukan kemungkinan menggunakannya dalam sebarang konteks dan bukannya pemalar, digunakan dalam fungsi VecDeque::new.
  • Platform Android kini memerlukan sekurang-kurangnya NDK r25 (API 19), i.e. Versi Android minimum yang disokong telah dinaikkan kepada 4.4 (KitKat).
  • Tahap ketiga sokongan untuk platform Sony PlayStation Vita telah dilaksanakan (armv7-sony-vita-newlibeabihf). Tahap ketiga membayangkan sokongan asas, tetapi tanpa ujian automatik, penerbitan binaan rasmi dan menyemak keupayaan untuk membina kod.

Sumber: opennet.ru

Tambah komen