Rust 1.68 Програмчлалын хэлний хувилбар

Mozilla төслөөс үүсгэн байгуулсан, гэхдээ одоо Rust Foundation бие даасан ашгийн бус байгууллагын ивээл дор бүтээгдсэн Rust 1.68 ерөнхий зориулалтын програмчлалын хэлний хувилбар хэвлэгдэн гарлаа. Энэ хэл нь санах ойн аюулгүй байдалд анхаарлаа хандуулж, хог цуглуулагч болон ажиллах хугацааг ашиглахаас зайлсхийхийн зэрэгцээ ажлын өндөр зэрэглэлд хүрэх арга хэрэгслийг өгдөг (ажиллах хугацаа нь стандарт номын сангийн үндсэн эхлүүлэх, засвар үйлчилгээ хүртэл багассан).

Rust-ийн санах ойтой харьцах аргууд нь хөгжүүлэгчийг заагчийг удирдах үед гарч болох алдаанаас аварч, санах ойг сулласны дараа санах ойн талбарт хандах, тэг заагчийг ялгах, буфер хэт ачаалах гэх мэт санах ойн доод түвшний боловсруулалтаас үүдэлтэй асуудлаас хамгаалдаг. Номын санг түгээх, бүтээн байгуулалтыг хангах, хамаарлыг удирдахын тулд төсөл нь Ачааны багц менежерийг боловсруулдаг. Crates.io репозиторыг номын санг байршуулахад дэмждэг.

Санах ойн аюулгүй байдлыг Rust-д хөрвүүлэх үед лавлагаа шалгах, объектын өмчлөлийг хянах, объектын ашиглалтын хугацааг (хамрах хүрээ) бүртгэх, кодыг гүйцэтгэх явцад санах ойд нэвтрэх зөв эсэхийг үнэлэх замаар хангадаг. Rust нь бүхэл тоон хэтрэхээс хамгаалж, ашиглахын өмнө хувьсагчийн утгыг заавал эхлүүлэхийг шаарддаг, стандарт номын сан дахь алдааг илүү сайн зохицуулдаг, өөрчлөгдөшгүй лавлагаа ба хувьсагчийн ойлголтыг анхдагчаар ашигладаг, логик алдааг багасгахын тулд хүчтэй статик бичвэрийг санал болгодог.

Гол инноваци:

  • Ачааны багц менежер болон crates.io репозиторуудад Sparse протоколын дэмжлэг тогтворжсон бөгөөд энэ нь хадгалах газарт байгаа бүх багцын боломжтой хувилбаруудыг тусгасан индекстэй ажиллах шинэ аргыг тодорхойлдог. Шинэ протокол нь crates.io-тэй ажиллах хурдыг мэдэгдэхүйц нэмэгдүүлэх, репозитор дахь багцын тоог цаашид нэмэгдүүлэх замаар масштабтай холбоотой асуудлыг шийдвэрлэх боломжийг олгоно.

    Бүтэн индексийг татаж авахад үүсэх саатлыг багасгахын тулд Sparse нь Git ашиглан индекс рүү нэвтрэхийн оронд зөвхөн тодорхой төслийн хамаарлыг хамарсан шаардлагатай индексийн өгөгдлийг HTTPS-ээр шууд татдаг. Шинэ index.crates.io үйлчилгээг индексийн өгөгдлийг буцаахад ашигладаг. Анхдагч байдлаар, шинэ протоколыг Rust 1.70 салбарт ашиглахаар төлөвлөж байгаа бөгөөд үүнийг идэвхжүүлэхийн тулд та "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" орчны хувьсагчийг тохируулж эсвэл "[registries.crates"-д 'protocol = параметрийг нэмж болно. -io]" .cargo/config.toml файлын "сийрэг"' хэсэг.

  • "T" илэрхийллээс өөрийн төлөвийг локал тогтоон Pin<&mut T> бүтцийг үүсгэх боломжийг олгодог "pin!" макро нэмсэн (Box::pin-ээс ялгаатай нь санах ойг овоолго дээр хуваарилдаггүй, харин стекийн түвшинд холбодог) .
  • Стандарт хуваарилах багцыг ашиглах үед ашигладаг анхдагч санах ойн хуваарилалтын алдаа зохицуулагчийг санал болгож байна. Зөвхөн хуваарилалтыг идэвхжүүлдэг (std-гүй) програмууд одоо санах ойн хуваарилалтын алдаа гарсан тохиолдолд "panic!" зохицуулагчийг дуудах бөгөөд үүнийг "#[panic_handler]"-ээр таслан зогсоох боломжтой. std номын санг ашигладаг программууд алдааны мэдээллийг stderr руу хэвлэж гацсан хэвээр байх болно.
  • API-ийн шинэ хэсгийг тогтвортой гэсэн ангилалд шилжүүлж, шинж чанаруудын арга, хэрэгжилтийг тогтворжуулсан:
    • {core,std}::pin::pin!
    • impl From {f32,f64}-д
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut for PathBuf
  • Тогтмолуудын оронд ямар ч нөхцөлд ашиглах боломжийг тодорхойлдог "const" шинж чанарыг VecDeque::new функцэд ашигладаг.
  • Андройд платформ нь одоо дор хаяж NDK r25 (API 19) шаарддаг, i.e. Хамгийн бага дэмжигдсэн Android хувилбарыг 4.4 (KitKat) болгон нэмэгдүүлсэн.
  • Sony PlayStation Vita платформын гурав дахь түвшний дэмжлэгийг хэрэгжүүлсэн (armv7-sony-vita-newlibeabihf). Гурав дахь түвшин нь үндсэн дэмжлэгийг агуулдаг боловч автоматжуулсан туршилтгүйгээр, албан ёсны бүтээлийг нийтлэх, кодыг бүтээх чадварыг шалгах явдал юм.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх