Rust 1.37 dasturlash tilining relizi

nashr etilgan tizim dasturlash tilini chiqarish Pas 1.37, Mozilla loyihasi tomonidan asos solingan. Til xotira xavfsizligiga e'tibor qaratadi, xotirani avtomatik boshqarishni ta'minlaydi va axlat yig'uvchi yoki ish vaqtidan foydalanmasdan yuqori vazifalar parallelligiga erishish uchun vositani taqdim etadi.

Rust-ning avtomatik xotira boshqaruvi ishlab chiquvchini ko'rsatgichlarni manipulyatsiya qilishdan ozod qiladi va past darajadagi xotira manipulyatsiyasi natijasida kelib chiqadigan muammolardan himoya qiladi, masalan, bo'sh xotiradan keyin foydalanish, null ko'rsatkichni yo'qotish, buferni haddan tashqari oshirib yuborish va boshqalar. 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:

  • Rustc kompilyatorida taqdim etilgan kodni profillash natijalariga asoslangan optimallashtirishni qo'llab-quvvatlash (PGO, Profile-Guided Optimization),
    dasturni bajarish jarayonida to'plangan statistik ma'lumotlarni tahlil qilish asosida yanada optimal kodni yaratish imkonini beradi. Profilni yaratish uchun "-C profile-generate" bayrog'i taqdim etiladi va montaj paytida profildan foydalanish uchun - "-C profile-use" (dastlab dastur birinchi bayroq bilan yig'iladi, atrofida ishlaydi va yaratgandan so'ng). profil, u ikkinchi bayroq bilan qayta yig'iladi);

  • Konsol ilovalarini tezda sinab ko'rish uchun qulay bo'lgan "yukni ishga tushirish" buyrug'ini bajarishda, agar paketda bir nechta bajariladigan fayllar mavjud bo'lsa, ishga tushirish uchun bajariladigan faylni avtomatik tanlash imkoniyati qo'shildi. Bajarilishi kerak bo'lgan standart fayl paket parametrlari bilan [paket] bo'limidagi sukut bo'yicha ishga tushirish direktivasi orqali aniqlanadi, bu sizga har safar "cargo run" ni ishga tushirganingizda "-bin" bayrog'i orqali fayl nomini aniq ko'rsatishdan qochish imkonini beradi;
  • "Yuk sotuvchisi" buyrug'i, ilgari sifatida taqdim etilgan alohida paket. Buyruq sizga bog'liqliklarning mahalliy nusxasi bilan ishlashni tashkil qilish imkonini beradi - "yuk sotuvchisi" ni bajarganingizdan so'ng, loyiha bog'liqliklarining barcha manba kodlari crates.io dan mahalliy katalogga yuklab olinadi, undan keyin qutilarga kirmasdan ishlash uchun foydalanish mumkin. io (buyruqni bajarganingizdan so'ng, konfiguratsiyani o'zgartirish bo'yicha maslahatlar qurilish uchun katalogdan foydalanish uchun ko'rsatiladi). Bu xususiyat allaqachon rustc kompilyatorini barcha bog'liqliklarni bitta arxivda o'rash bilan yetkazib berishni tashkil qilish uchun ishlatiladi;
  • Endi turdagi taxalluslar yordamida sanab parametrlariga havolalar yaratish mumkin (masalan, “fn increment_or_zero(x: ByteOption) funksiyasi tanasida siz “ByteOption::None => 0” ni belgilashingiz mumkin), hisoblash konstruksiyalarini yozing (‹ MyType‹.. ››::option => N) yoki O‘z-o‘zidan kirishlar (c &self bloklarida siz “Self::Quarter => 25”ni belgilashingiz mumkin);
  • Makroslarda nomsiz konstantalarni yaratish imkoniyati qo'shildi. "const" da element nomini belgilash o'rniga, endi "_" belgisidan takrorlanmaydigan identifikatorni dinamik ravishda tanlash uchun foydalanishingiz mumkin, bu esa makrosga qayta qo'ng'iroq qilishda nom ziddiyatlariga yo'l qo'ymaslik;
  • AlignN‹T› strukturasini hizalash bilan belgilashga o‘xshash sintaksisdan foydalangan holda, so‘ngra AlignN‹MyEnum› dan foydalanib, "#[repr(align(N))" atributini raqamlash bilan ishlatish imkoniyati qo‘shildi;
  • APIning yangi qismi barqaror toifaga koʻchirildi, jumladan BufReader::buffer, BufWriter::buffer va
    Hujayra::from_mut,
    Hujayra::hujayralarning_bo'limi,
    DoubleEndedIterator::nth_back,
    Variant::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits va
    slice::copy_within.

Bundan tashqari, buni ta'kidlash mumkin sinov boshlanishi loyiha Async-std, bu Rust standart kutubxonasining asinxron variantini taklif qiladi (std kutubxonasining porti, unda barcha interfeyslar asinxron versiyada taqdim etiladi va async/await sintaksisi bilan foydalanishga tayyor).

Manba: opennet.ru

a Izoh qo'shish