Rilis Bahasa Pemrograman Rust 1.37

diterbitkan rilis bahasa pemrograman sistem Karat 1.37, didirikan oleh proyek Mozilla. Bahasa ini berfokus pada keamanan memori, menyediakan manajemen memori otomatis, dan menyediakan sarana untuk mencapai paralelisme tugas yang tinggi tanpa menggunakan pengumpul sampah atau 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:

  • Di kompiler Rustc dijamin dukungan untuk optimasi berdasarkan hasil profil kode (PGO, Profile-Guided Optimization),
    memungkinkan Anda menghasilkan kode yang lebih optimal berdasarkan analisis statistik yang dikumpulkan selama eksekusi program. Untuk menghasilkan profil, flag "-C profile-generate" disediakan, dan untuk menggunakan profil selama perakitan - "-C profile-use" (awalnya, program dirakit dengan flag pertama, dijalankan, dan setelah dibuat profilnya, dipasang kembali dengan bendera kedua);

  • Saat menjalankan perintah "cargo run", yang mudah digunakan untuk menguji aplikasi konsol dengan cepat, kemampuan untuk secara otomatis memilih file yang dapat dieksekusi untuk dijalankan telah ditambahkan jika ada beberapa file yang dapat dieksekusi dalam paket. File default yang akan dieksekusi ditentukan melalui direktif default-run di bagian [paket] dengan parameter paket, yang memungkinkan Anda menghindari penentuan nama file secara eksplisit melalui tanda β€œ-bin” setiap kali Anda menjalankan β€œcargo run”;
  • Perintah "vendor kargo", yang sebelumnya diberikan sebagai paket terpisah. Perintah ini memungkinkan Anda untuk mengatur pekerjaan dengan salinan dependensi lokal - setelah menjalankan "vendor kargo", semua kode sumber dependensi proyek diunduh dari crates.io ke direktori lokal, yang kemudian dapat digunakan untuk bekerja tanpa mengakses peti. io (setelah menjalankan perintah, petunjuk untuk mengubah konfigurasi ditampilkan untuk menggunakan direktori untuk build). Fitur ini sudah digunakan untuk mengatur pengiriman kompiler Rustc dengan pengemasan semua dependensi dalam satu arsip dengan rilis;
  • Sekarang dimungkinkan untuk membuat tautan ke opsi enum menggunakan alias tipe (misalnya, di badan fungsi β€œfn increment_or_zero(x: ByteOption) Anda dapat menentukan β€œByteOption::None => 0”), ketik konstruksi perhitungan (β€Ή MyTypeβ€Ή.. β€Ίβ€Ί::option => N) atau Self accesses (di blok c &self Anda dapat menentukan β€œSelf::Quarter => 25”);
  • Menambahkan kemampuan untuk membuat konstanta tanpa nama di makro. Daripada mendefinisikan nama elemen dalam "const", Anda kini dapat menggunakan karakter "_" untuk secara dinamis memilih pengidentifikasi yang tidak berulang, menghindari konflik nama saat memanggil makro lagi;
  • Menambahkan kemampuan untuk menggunakan atribut "#[repr(align(N))" dengan enum menggunakan sintaksis yang mirip dengan mendefinisikan struktur AlignNβ€ΉTβ€Ί dengan perataan lalu menggunakan AlignNβ€ΉMyEnumβ€Ί;
  • Bagian baru API telah dipindahkan ke kategori stabil, termasuk BufReader::buffer, BufWriter::buffer, dan
    Sel::dari_mut,
    Sel::sebagai_potongan_sel,
    DoubleEndedIterator::nth_back,
    Pilihan::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Pembungkus::reverse_bits dan
    irisan::salin_dalam.

Selain itu, dapat diperhatikan dimulainya pengujian proyek Async-std, yang menawarkan varian asynchronous dari perpustakaan standar Rust (port dari perpustakaan std, di mana semua antarmuka ditawarkan dalam versi async dan siap digunakan dengan sintaks async/await).

Sumber: opennet.ru

Tambah komentar