Rust 1.46 dasturlash tilining relizi

nashr etilgan tizim dasturlash tilining 1.46 versiyasini chiqaring zang, Mozilla loyihasi tomonidan asos solingan. Til xotira xavfsizligiga e'tibor qaratadi, xotirani avtomatik boshqarishni ta'minlaydi va axlat yig'uvchidan foydalanmasdan yuqori vazifalar parallelligiga erishish uchun vositalarni taqdim etadi. ish vaqti.

Rust-ning avtomatik xotira boshqaruvi ko'rsatkichlarni boshqarishda xatolarni yo'q qiladi va past darajadagi xotira manipulyatsiyasi natijasida kelib chiqadigan muammolardan himoya qiladi, masalan, bo'shatilgandan so'ng xotira hududiga kirish, null ko'rsatkichni yo'qotish, buferni haddan tashqari oshirib yuborish va hokazo. Kutubxonalarni tarqatish, yig'ishni ta'minlash va loyiha tomonidan bog'liqliklarni boshqarish uchun paket menejeri ishlab chiqilmoqda. yuk, bir marta bosish orqali dastur uchun kerakli kutubxonalarni olish imkonini beradi. Xost kutubxonalar uchun ombor qo'llab-quvvatlanadi crates.io.

asosiy yangiliklar:

  • “const fn” iborasi yordamida aniqlangan funksiyalarning imkoniyatlari kengaytirildi, ularni nafaqat oddiy funksiyalar deb atash mumkin, balki konstantalar o‘rniga istalgan kontekstda ham qo‘llash mumkin. Bu funksiyalar ishlash vaqtida emas, kompilyatsiya vaqtida hisoblab chiqiladi, shuning uchun ular faqat konstantalardan o'qish imkoniyati kabi ma'lum cheklovlarga bo'ysunadi.

    Yangi nashr mantiqiy operatorlardan (“&&” va “||”) foydalanishga taqiqni olib tashlaydi va “if”, “if let”, “match” konstruksiyalaridan foydalanishga ruxsat beradi,
    "while", "while let" va "loop", shuningdek, "&[T]" ifodasi yordamida tilimlarga (slice, dinamik massivlar) aylantirish imkoniyatini beradi. Ushbu funktsiyalardan "const fn" funktsiyalarida foydalanish sizga ba'zi resurs talab qiladigan operatsiyalarni kompilyatsiya bosqichiga o'tkazish imkonini beradi. Masalan, "const-sha1" ning amalga oshirilishi kompilyatsiya vaqtida SHA-1 xeshlarini hisoblash imkonini beradi, bu Rust uchun WinRT ulanishlarini deyarli 40 baravar tezlashtirishga olib keladi.

  • Xato xabarlarini yanada maʼlumotli qilish uchun “#[track_calerler]” atributini qoʻllab-quvvatlash barqarorlashtirildi, bu esa ochish kabi funksiyalar uchun foydalidir, agar turlar notoʻgʻri ishlatilsa, vahima paydo boʻlishi mumkin. Belgilangan atribut vahima qo'zg'atuvchisi tomonidan qo'ng'iroq qiluvchining joylashuvini xato xabarida chop etish uchun ishlatiladi.
  • std::mem::forget usulida konstantalar o'rniga istalgan kontekstda foydalanish imkoniyatini belgilovchi "const" atributi qo'llaniladi.
  • APIning yangi qismi barqaror toifaga, jumladan barqarorlashtirilgan Option::zip va vec::Drain::as_slice ga ko‘chirildi.
  • Yuk paketi menejerida qo'shildi paketni kompilyatsiya qilishda o'rnatilgan yangi muhit o'zgaruvchilari uchun qo'llab-quvvatlash: CARGO_BIN_NAME (natijadagi bajariladigan fayl nomi), CARGO_CRATE_NAME (paket nomi), CARGO_PKG_LICENSE (manifestda ko'rsatilgan litsenziya), CARGO_PKG_LICENSE_FILE (litsenziya fayliga yo'l).

Manba: opennet.ru

a Izoh qo'shish