Руст 1.67 Издание за програмски јазик

Објавено е објавувањето на програмскиот јазик за општа намена Rust 1.67, основан од проектот Mozilla, но сега развиен под покровителство на независната непрофитна организација Rust Foundation. Јазикот се фокусира на безбедноста на меморијата и обезбедува средства за постигнување на висок паралелизам на работните места, притоа избегнувајќи употреба на собирач на ѓубре и време на работа (времето на работа е сведено на основна иницијализација и одржување на стандардната библиотека).

Методите за ракување со меморијата на Rust го спасуваат развивачот од грешки при манипулирање со покажувачите и го штитат од проблеми што се јавуваат поради ракување со меморијата на ниско ниво, како што се пристап до мемориската област откако ќе се ослободи, дереференцирање на нула покажувачи, пречекорувања на баферот итн. За да се дистрибуираат библиотеки, да се обезбедат градби и да управуваат со зависности, проектот го развива менаџерот на пакети Cargo. Репозиториумот crates.io е поддржан за хостирање библиотеки.

Безбедноста на меморијата е обезбедена во Rust за време на компајлирањето преку проверка на референци, следење на сопственоста на објектот, следење на животниот век на објектите (обеми) и проценка на исправноста на пристапот до меморијата за време на извршувањето на кодот. Rust исто така обезбедува заштита од прелевање на цели броеви, бара задолжителна иницијализација на вредностите на променливите пред употреба, подобро се справува со грешките во стандардната библиотека, стандардно го применува концептот на непроменливи референци и променливи, нуди силно статичко пишување за да се минимизираат логичките грешки.

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

  • За асинхронизирани функции со Future::Output, сега е можно да се наведат прибелешките „#[must_use]“ кои вклучуваат предупредување доколку повратната вредност се игнорира, што помага да се идентификуваат грешките предизвикани од претпоставката дека функцијата ќе ги промени вредностите наместо да врати нова вредност. #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().wait; } warning: неискористен излез од иднината вратен со `лента` што мора да се користи —> src/lib.rs:5:5 | 5 | bar().wait; | ^^^^^^^^^^^ | = забелешка: `#[warn(unused_must_use)]` стандардно вклучено
  • Ажурирана е имплементацијата на FIFO queues std::sync::mpsc (мулти-продуцент со еден потрошувач), кој е префрлен на користење на модулот за вкрстен канал додека го одржува претходниот API. Новата имплементација се одликува со решавање на голем број проблеми, повисоки перформанси и поедноставено одржување на кодот.
  • Нов дел од API е преместен во категоријата стабилни, вклучувајќи ги и методите и имплементацијата на карактеристиките се стабилизирани:
    • {integer}::checked_ilog
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {integer}::ilog
    • {integer}::ilog2
    • {integer}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • NonZero*::BITS
  • Атрибутот „const“, кој ја одредува можноста да се користи во кој било контекст наместо константи, се користи во функции:
    • знак::од_u32
    • знак::од_цифра
    • char::to_digit
    • јадро::char::from_u32
    • јадро::кар::од_цифра
  • Имплементирано е трето ниво на поддршка за користење Rust во кернелот Linux (linuxkernel), како и за Sony PlayStation 1 (mipsel-sony-psx), PowerPC со AIX (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-) платформи qnx710, x86_64-pc-nto-qnx710). Третото ниво вклучува основна поддршка, но без автоматско тестирање, објавување официјални изданија или проверка дали кодот може да се изгради.

Дополнително, можеме да го забележиме објавувањето од страна на ARM на закрпи кои дозволуваат употреба на јазикот Rust за развој на двигатели и модули на кернелот на Linux собрани за системи базирани на архитектурата AArch64.

Извор: opennet.ru

Додадете коментар