Rilis Bahasa Pemrograman Rust 1.46

diterbitkan rilis 1.46 dari bahasa pemrograman sistem Karat, 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 menghilangkan kesalahan saat memanipulasi pointer dan melindungi terhadap masalah yang timbul dari manipulasi memori tingkat rendah, seperti mengakses wilayah memori setelah dibebaskan, dereferensi pointer nol, buffer overruns, dll. 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:

  • Kemampuan fungsi yang didefinisikan menggunakan ekspresi β€œconst fn” telah diperluas, yang tidak hanya dapat disebut sebagai fungsi reguler, tetapi juga digunakan dalam konteks apa pun, bukan konstanta. Fungsi-fungsi ini dihitung pada waktu kompilasi, bukan pada waktu proses, sehingga fungsi-fungsi tersebut tunduk pada batasan tertentu, seperti kemampuan untuk membaca hanya dari konstanta.

    Rilis baru ini menghapus larangan penggunaan operator Boolean (β€œ&&” dan β€œ||”) dalam fungsi tersebut, dan memungkinkan penggunaan konstruksi β€œif”, β€œif let”, β€œmatch”,
    "sementara", "sementara biarkan" dan "loop", dan juga menyediakan kemampuan untuk mengkonversi ke irisan (slice, array dinamis) menggunakan ekspresi "&[T]". Penggunaan fitur-fitur ini dalam fungsi β€œconst fn” memungkinkan Anda memindahkan beberapa operasi intensif sumber daya ke tahap kompilasi. Misalnya, penerapan "const-sha1" memungkinkan penghitungan hash SHA-1 pada waktu kompilasi, yang mempercepat pengikatan WinRT untuk Rust hampir 40 kali lipat.

  • Untuk membuat pesan kesalahan lebih informatif, dukungan untuk atribut β€œ#[track_caller]” telah distabilkan, yang berguna untuk fungsi seperti membuka bungkus, yang dapat menyebabkan kepanikan jika jenis yang digunakan salah. Atribut yang ditentukan akan digunakan oleh pengendali panik untuk mencetak lokasi pemanggil dalam pesan kesalahan.
  • Atribut β€œconst”, yang menentukan kemungkinan menggunakannya dalam konteks apa pun alih-alih konstanta, digunakan dalam metode std::mem::forget.
  • Bagian baru API telah dipindahkan ke kategori stabil, termasuk Option::zip dan vec::Drain::as_slice yang distabilkan.
  • Di manajer paket Kargo ditambahkan dukungan untuk variabel lingkungan baru yang disetel saat mengkompilasi paket: CARGO_BIN_NAME (nama file yang dapat dieksekusi yang dihasilkan), CARGO_CRATE_NAME (nama paket), CARGO_PKG_LICENSE (lisensi ditentukan dalam manifes), CARGO_PKG_LICENSE_FILE (jalur ke file lisensi).

Sumber: opennet.ru

Tambah komentar