Mozilla loyihasi tomonidan asos solingan, ammo hozirda Rust Foundation mustaqil notijorat tashkiloti homiyligida ishlab chiqilgan Rust 1.65 umumiy maqsadli dasturlash tilining nashri chop etildi. Til xotira xavfsizligiga e'tibor qaratadi va axlat yig'uvchi va ish vaqtidan foydalanishdan qochgan holda yuqori ish parallelligiga erishish vositalarini taqdim etadi (ish vaqti standart kutubxonani asosiy ishga tushirish va texnik xizmat ko'rsatishga qisqartiriladi).
Rust-ning xotira bilan ishlash usullari ishlab chiquvchini ko'rsatkichlarni boshqarishda xatolardan qutqaradi va past darajadagi xotira bilan ishlash natijasida yuzaga keladigan muammolardan himoya qiladi, masalan, bo'shatilgandan so'ng xotira maydoniga kirish, null ko'rsatkichlarni o'chirish, buferni ortiqcha yuklash va hokazo. Kutubxonalarni tarqatish, qurishni ta'minlash va bog'liqliklarni boshqarish uchun loyiha Cargo paketi menejerini ishlab chiqadi. Crates.io ombori kutubxonalarni joylashtirish uchun qo'llab-quvvatlanadi.
Xotira xavfsizligi Rust-da kompilyatsiya vaqtida mos yozuvlarni tekshirish, ob'ektga egalik qilish, ob'ektning ishlash muddatini (ko'lamini) kuzatib borish va kodni bajarish paytida xotiraga kirishning to'g'riligini baholash orqali ta'minlanadi. Rust shuningdek, butun sonlarning to'lib ketishidan himoya qiladi, ishlatishdan oldin o'zgaruvchan qiymatlarni majburiy ishga tushirishni talab qiladi, standart kutubxonada xatolarni yaxshiroq boshqaradi, sukut bo'yicha o'zgarmas havolalar va o'zgaruvchilar tushunchasini qo'llaydi, mantiqiy xatolarni minimallashtirish uchun kuchli statik yozishni taklif qiladi.
Asosiy innovatsiyalar:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΠ±ΠΎΠ±ΡΡΠ½Π½ΡΡ Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ² (GAT, Generic Associated Types), Π΄Π°ΡΡΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ ΡΠΈΠΏΠΎΠ², Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Ρ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΈΠΏΠΎΠΌ, ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΡΠΈΠΏΠΎΠ² Ρ ΡΠΈΠΏΠ°ΠΆΠ°ΠΌΠΈ. trait Foo { type Bar<βx>; }
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Β«let β¦ elseΒ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π²Π½ΡΡΡΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Β«letΒ» ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄, Π΅ΡΠ»ΠΈ ΡΠ°Π±Π»ΠΎΠ½ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ. let Ok(count) = u64::from_str(count_str) else { panic!(Β«Canβt parse integer: β{count_str}'Β»); };
- Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ break Π΄Π»Ρ ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ Π±Π»ΠΎΠΊΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΠΌΡ Π±Π»ΠΎΠΊΠ° (ΠΌΠ΅ΡΠΊΡ) Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π·Π°Π²Π΅ΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°. let result = βblock: { do_thing(); if condition_not_met() { break βblock 1; } do_next_thing(); if condition_not_met() { break βblock 2; } do_last_thing(); 3 };
- ΠΠ»Ρ Linux Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ (split-debuginfo), ΡΠ°Π½Π΅Π΅ Π΄ΠΎΡΡΡΠΏΠ½Π°Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ macOS. ΠΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΎΠΏΡΠΈΠΈ Β«-Csplit-debuginfo=unpackedΒ» Π΄Π°Π½Π½ΡΠ΅ debuginfo Π² ΡΠΎΡΠΌΠ°ΡΠ΅ DWARF Π±ΡΠ΄ΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ Β«.dwoΒ». ΠΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ Β«-Csplit-debuginfo=packedΒ» Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ Β«.dwpΒ», Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΠΉ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ debuginfo Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠ»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ debuginfo Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΡΠ΅ΠΊΡΠΈΡ .debug_* ELF-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠΈΡ Β«-Csplit-debuginfo=offΒ».
- APIning yangi qismi barqaror toifaga ko'chirildi, shu jumladan xususiyatlarning usullari va amalga oshirilishi barqarorlashtirildi:
- std::backtrace::Backtrace
- Bound::as_ref
- std::io::read_to_string
- <*const T>::cast_mut
- <*mut T>::cast_const
- ΠΡΠΈΠ·Π½Π°ΠΊ Β«constΒ», ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Π»ΡΠ±ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ½ Π² ΡΡΠ½ΠΊΡΠΈΡΡ <*const T&>::offset_from ΠΈ <*mut T>::offset_from
- Π ΡΠ°ΠΌΠΊΠ°Ρ ΡΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ ΡΡΠ°Π΄ΠΈΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° LSP (Language Server Protocol) Π½Π° rust-analyzer, ΡΡΡΠ°ΡΠ΅Π²ΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Rust Language Server (RLS) Π·Π°ΠΌΠ΅Π½Π΅Π½Π° Π½Π° cΠ΅ΡΠ²Π΅Ρ-Π·Π°Π³Π»ΡΡΠΊΡ, Π²ΡΠ΄Π°ΡΡΠΈΠΉ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ rust-analyzer.
- ΠΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° inline-ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° MIR, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠ°Ρ ΠΊ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠΈΠΏΠΎΠ²ΡΡ crate-ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π½Π° 3-10%.
- ΠΠ»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΡΠ±ΠΎΡΠΎΠΊ ΠΏΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ Π² ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ΅ Cargo ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΡΠ°Π±ΠΎΡ, ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ·ΡΠΊΠ° Rust Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Volvo Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ. Π£ΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ Π½Π° Rust Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡΡΡΡ, Π½ΠΎ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Rust ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° Ρ ΠΌΠ΅Π½ΡΡΠΈΠΌΠΈ Π·Π°ΡΡΠ°ΡΠ°ΠΌΠΈ. Π‘Π²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ·ΡΠΊΠ° Rust ΡΠ°Π±ΠΎΡΠΈΠ΅ Π³ΡΡΠΏΠΏΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π½Ρ Π² Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΡ AUTOSAR (AUTomotive Open System ARchitecture) ΠΈ SAE (Society of Automotive Engineers).
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΡΠ²ΠΈΠ΄ ΠΠ»Π΅ΠΉΠ΄Π΅ΡΠΌΠ°Ρ
Π΅Ρ (David Kleidermacher), Π²ΠΈΡΠ΅-ΠΏΡΠ΅Π·ΠΈΠ΄Π΅Π½Ρ Google ΠΏΠΎ ΠΈΠ½ΠΆΠΈΠ½ΠΈΡΠΈΠ½Π³Ρ, ΡΠ°ΡΡΠΊΠ°Π·Π°Π» ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π΅ Π½Π° ΡΠ·ΡΠΊ Rust ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π² ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Android Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Rust Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° DNS over HTTPS, Π² ΡΡΠ΅ΠΊΠ΅ Π΄Π»Ρ UWB-ΡΠΈΠΏΠΎΠ² (Ultra-Wideband) ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ (Android Virtualization Framework), ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΌ Ρ ΡΠΈΠΏΠΎΠΌ Tensor G2. ΠΠ»Ρ Android ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ΅ΠΊΠΈ Π΄Π»Ρ Bluetooth ΠΈ Wi-Fi, ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ Rust. ΠΠ±ΡΠ°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΠΌ ΡΡΠΈΠ»Π΅Π½ΠΈΠΈ Π·Π°ΡΠΈΡΡ Π²Π½Π°ΡΠ°Π»Π΅ ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Rust Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π½Π΅Π·Π°ΡΠΈΡΡΠ½Π½ΡΡ
ΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎ Π²Π°ΠΆΠ½ΡΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², Π° Π·Π°ΡΠ΅ΠΌ ΠΎΡ
Π²Π°ΡΡΠ²Π°Ρ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½ΠΈΠΌΠΈ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ. Π ΠΏΡΠΎΡΠ»ΠΎΠΌ Π³ΠΎΠ΄Ρ ΡΠ·ΡΠΊ Rust Π±ΡΠ» Π²ΠΊΠ»ΡΡΡΠ½ Π² ΡΠΈΡΠ»ΠΎ ΡΠ·ΡΠΊΠΎΠ², Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ
Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Android.
Manba: opennet.ru