Mozilla төслөөс үүсгэн байгуулсан, гэхдээ одоо Rust Foundation бие даасан ашгийн бус байгууллагын ивээл дор бүтээгдсэн Rust 1.63 ерөнхий зориулалтын програмчлалын хэлний хувилбар хэвлэгдэн гарлаа. Энэ хэл нь санах ойн аюулгүй байдалд анхаарлаа хандуулж, хог цуглуулагч болон ажиллах хугацааг ашиглахаас зайлсхийхийн зэрэгцээ ажлын өндөр зэрэглэлд хүрэх арга хэрэгслийг өгдөг (ажиллах хугацаа нь стандарт номын сангийн үндсэн эхлүүлэх, засвар үйлчилгээ хүртэл багассан).
Rust-ийн санах ойтой харьцах аргууд нь хөгжүүлэгчийг заагчийг удирдах үед гарч болох алдаанаас аварч, санах ойг сулласны дараа санах ойн талбарт хандах, тэг заагчийг ялгах, буфер хэт ачаалах гэх мэт санах ойн доод түвшний боловсруулалтаас үүдэлтэй асуудлаас хамгаалдаг. Номын санг түгээх, бүтээн байгуулалтыг хангах, хамаарлыг удирдахын тулд төсөл нь Ачааны багц менежерийг боловсруулдаг. Crates.io репозиторыг номын санг байршуулахад дэмждэг.
Санах ойн аюулгүй байдлыг Rust-д хөрвүүлэх үед лавлагаа шалгах, объектын өмчлөлийг хянах, объектын ашиглалтын хугацааг (хамрах хүрээ) бүртгэх, кодыг гүйцэтгэх явцад санах ойд нэвтрэх зөв эсэхийг үнэлэх замаар хангадаг. Rust нь бүхэл тоон хэтрэхээс хамгаалж, ашиглахын өмнө хувьсагчийн утгыг заавал эхлүүлэхийг шаарддаг, стандарт номын сан дахь алдааг илүү сайн зохицуулдаг, өөрчлөгдөшгүй лавлагаа ба хувьсагчийн ойлголтыг анхдагчаар ашигладаг, логик алдааг багасгахын тулд хүчтэй статик бичвэрийг санал болгодог.
Гол инноваци:
- std::thread::scope API-г нэмсэн бөгөөд энэ нь танд хамрах хүрээ үүсгэх боломжийг олгодог. Өмнө нь ашиглах боломжтой урсгалуудаас ялгаатай нь шинэ std::thread::scope API нь статик бус өгөгдлийг дамжуулах боломжийг олгодог бол сонгодог std::thread::spawn API ашиглан үүсгэсэн хэлхээнүүд нь дамжуулсан бүх аргументыг эзэмших шаардлагатай байсан бөгөөд хүлээн авах боломжгүй байсан. зээлсэн хувьсагч. std::thread::scope API нь өгөгдлийг буцааж өгөхөөс өмнө үүсгэсэн хэлхээг дуусгавар болгож, зээлийн механизмын аюулгүй байдлыг хангадаг.
- Файлын тодорхойлогчдын боодлын шинэ төрлийг санал болгосон - зээл авах, эзэмших боломжийг олгодог BorrowedFd болон OwnedFd. Төрөлүүдийг "#[repr(тунгалаг)]" гэж тэмдэглэсэн бөгөөд энэ нь өмчлөлийн шинжтэй байдлаар гадны C холболтод шууд ашиглах боломжийг олгодог.
- lazy_static багц ашиглахгүйгээр дэлхийн статик Mutex, RwLock, Condvar утгуудыг үүсгэхийн тулд тогтмолуудын хүрээнд Condvar::new, Mutex::new, RwLock::new гэж дуудах боломжийг олгосон.
- fn foo гэх мэт функцүүдийн хувьд (утга: T, f: impl Copy) "foo::" шиг синтаксийг зөвшөөрнө (32, 3)”, ерөнхий зүйлийн төрлийг тодорхой зааж өгсөн.
- Зээл авах хувьсагчтай холбоотой асуудлуудыг тодорхойлохын тулд NLL (Non-Lexical Lifetimes) техникийг ашиглахад шилжих ажил дууссан. NLL нь гүйцэтгэлийн график дахь олон тооны заагч түвшинг харгалзан үздэг бөгөөд энэ нь хувьсагчийг зээлэх (зээлдэгч) шалгах чанарыг нэмэгдүүлэх, зарим төрлийн зөв кодыг гүйцэтгэх боломжийг олгодог. Энэ нь өмнө нь алдаа гаргахад хүргэсэн. Лексикийн түвшний насан туршийн холболтыг ашигладаг хуучин механизмын дэмжлэг одоо rustc-ээс бүрэн хасагдсан бөгөөд шинэ NLL-ийн хэрэглээ бүхэлдээ хэрэгжсэн.
- API-ийн шинэ хэсгийг тогтвортой гэсэн ангилалд шилжүүлж, шинж чанаруудын арга, хэрэгжилтийг тогтворжуулсан:
- массив::from_fn
- Хайрцаг ::pin_into
- BinaryHeap::try_reserve
- BinaryHeap::яг_нөөцөд_оролдох
- OsString::try_reserve
- OsString::яг_нөөцөд_оролдох
- PathBuf::try_reserve
- PathBuf::яг_нөөцөд_оролдох
- Зам :: оролдох_байгаа
- Ref::filter_map
- RefMut::filter_map
- Nonull::<[T]>::len
- ToOwned::clone_into
- Ipv6Addr::to_ipv4_mapped
- unix::io::AsFd
- unix::io::BorrowedFd<'fd>
- unix::io::OwnedFd
- windows::io::AsHandle
- windows::io::BorrowedHandle
Эх сурвалж: opennet.ru
