Rilis Bahasa Pemrograman Rust 1.42

diterbitkan rilis bahasa pemrograman sistem Karat 1.42, didirikan oleh proyek Mozilla. Bahasa ini berfokus pada keamanan memori, menyediakan manajemen memori otomatis, dan menyediakan alat untuk mencapai paralelisme tugas yang tinggi tanpa menggunakan pengumpul sampah dan runtime.

Manajemen memori otomatis Rust membebaskan pengembang dari manipulasi penunjuk dan melindungi dari masalah yang timbul dari manipulasi memori tingkat rendah, seperti akses memori setelah bebas, dereferensi penunjuk nol, buffer overruns, dan sejenisnya. Manajer paket sedang dikembangkan untuk mendistribusikan perpustakaan, memastikan perakitan dan mengelola ketergantungan oleh proyek. Muatan, memungkinkan Anda mendapatkan perpustakaan yang diperlukan untuk program dalam satu klik. Repositori didukung untuk menghosting perpustakaan peti.io.

Utama inovasi:

  • Ditambahkan dukungan untuk templat untuk mencocokkan bagian irisan (array dinamis, irisan). Sebelumnya, pencocokan persis diperbolehkan, tetapi sekarang konstruksi bertanda ".." dapat digunakan untuk mencakup elemen array yang tersisa. Misalnya:

    fn foo(kata-kata: &[&str]) {
    mencocokkan kata {

    // memeriksa elemen awal array dan mengabaikannya
    elemen yang mengikutinya
    ["Halo", "Dunia", "!", ..] => println!("Halo Dunia!"),

    // memeriksa dua elemen pertama "Foo" dan "Bar", dan sisanya tidak penting
    ["Foo", "Bar", ..] => println!("Baz"),

    // abaikan semuanya, tapi elemen terakhir harus "!".
    [.., β€œ!”] => println!(β€œ!!!”),

    // di potongan awal kita memasukkan semuanya kecuali elemen terakhir, yang seharusnya β€œz”
    [mulai @ .., "z"] => println!("dimulai dengan: {:?}", mulai),

    // di bagian akhir kita meletakkan semuanya kecuali elemen pertama, yang seharusnya berupa β€œa”.
    ["a", end @ ..] => println!("diakhiri dengan: {:?}", akhir),

    istirahat => println!("{:?}", istirahat),
    }
    }

  • Menambahkan makro baru β€œcocok!”, yang mengambil ekspresi dan pola sebagai masukan, dan mengembalikan β€œbenar” jika pola cocok dengan ekspresi. Templat dapat menggunakan operasi β€œ|”. dan jika".

    cocokkan self.partial_cmp(lainnya) {
    Beberapa(Kurang) => benar,
    _ => salah,
    }

    cocok!(self.partial_cmp(lainnya), Beberapa(Kurang))

    biarkan foo = 'f';
    menegaskan!(cocok!(foo, 'A'..='Z' | 'a'..='z'));

    biarkan bar = Beberapa(4);
    menegaskan!(cocok!(bar, Beberapa(x) jika x > 2));

  • Dalam pesan panik ditampilkan bila digunakan secara tidak benar
    ketik Opsi dan Hasil, sekarang tampilkan nomor baris dengan tautan ke kode yang membuat panggilan bermasalah, bukan tautan ke kode yang mengimplementasikan panggilan di libcore. Misalnya, perubahan memengaruhi panggilan untuk membuka bungkus dan mengharapkan pada Option::None, atau mogok saat menggunakan unwrap_err, ekspektasi, ekspektasi_err, dan metode serupa pada tipe Hasil.

  • Manajer paket Cargo menyediakan substitusi otomatis β€œproc_macro crate” ke dalam blok β€œextern” untuk paket dengan makro prosedural. Perubahan ini memungkinkan direktif "use" diterapkan pada makro prosedural tanpa harus menentukan "extern crate proc_macro;" dalam kode. Misalnya, jika program menggunakan baris β€œuse proc_macro::TokenStream;”, maka kode sekarang akan tetap berfungsi jika β€œextern crate proc_macro;” dihapus darinya.
  • Kemampuan perpustakaan standar telah diperluas. Di iter::Kosong ditambahkan Kirim dan Sinkronkan dukungan untuk nilai T apa pun.
    Pin Panggilan::{map_unchecked, map_unchecked_mut} terkirim dari keharusan mengembalikan nilai tipe untuk implementasi "Berukuran".
    Di io::Kursor dilaksanakan Persamaan Parsial dan Persamaan. Atribut β€œconst” menentukan kemungkinan penggunaan dalam konteks apa pun, bukan konstanta, terapan untuk metode Layout::new.

  • Bagian baru dari API telah dipindahkan ke kategori stabil, termasuk CondVar::wait_ while, CondVar::wait_timeout_ while,
    DebugMap::kunci, DebugMap::nilai,
    Jatuhkan secara manual::ambil,
    ptr::slice_from_raw_parts_mut dan ptr::slice_from_raw_parts.

  • Metode Error::description sudah tidak digunakan lagi.
  • Memberikan dukungan tingkat kedua untuk platform armv7a-none-eabi dan riscv64gc-unknown-linux-gnu. Dukungan untuk perpustakaan standar untuk platform riscv64gc-unknown-linux-gnu telah disediakan.
    Platform Apple 32-bit diturunkan pangkatnya hingga dukungan tingkat ketiga, yang menyiratkan dukungan dasar, tetapi tanpa pengujian otomatis dan publikasi versi resmi. Penurunan dukungan ini disebabkan Apple tidak lagi mendukung platform 32-bit.

Sumber: opennet.ru

Tambah komentar