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

Објављено је издање програмског језика опште намене Руст 1.58, који је основао пројекат Мозилла, али је сада развијен под окриљем независне непрофитне организације Руст Фоундатион. Језик се фокусира на безбедност меморије, обезбеђује аутоматско управљање меморијом и обезбеђује средства за постизање високог паралелизма задатака без коришћења сакупљача смећа или времена извршавања (време извођења се своди на основну иницијализацију и одржавање стандардне библиотеке).

Руст-ово аутоматско управљање меморијом елиминише грешке приликом манипулације показивачима и штити од проблема који произилазе из манипулације меморијом ниског нивоа, као што је приступ меморијском региону након што је он ослобођен, нулте референце показивача, прекорачење бафера итд. Да би дистрибуирао библиотеке, обезбедио склапање и управљао зависностима, пројекат развија Царго пакет менаџер. Репозиторијум цратес.ио је подржан за хостовање библиотека.

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

  • У блоковима за форматирање реда, поред раније доступне могућности замене променљивих експлицитно наведених после реда бројем и именом, имплементирана је могућност замене произвољних идентификатора додавањем израза „{идентифиер}“ у ред. На пример: // Претходно подржане конструкције: принтлн!("Здраво, {}!", гет_персон()); принтлн!("Здраво, {0}!", гет_персон()); принтлн!("Здраво, {особа}!", персон = гет_персон()); // сада можете одредити лет персон = гет_персон(); принтлн!("Здраво, {особа}!");

    Идентификатори се такође могу навести директно у опцијама форматирања. лет (ширина, прецизност) = гет_формат(); фор (име, резултат) у гет_сцорес() { принтлн!("{наме}: {сцоре:видтх$.прецисион$}"); }

    Нова замена функционише у свим макроима који подржавају дефиницију формата стрингова, са изузетком макроа „паника!“. у верзијама Руст језика за 2015. и 2018. у којима се паника!("{идент}") третира као обичан стринг (у Русту 2021 замена ради).

  • Понашање структуре стд::процесс::Цомманд на Виндовс платформи је промењено тако да приликом извршавања команди, из безбедносних разлога, више не тражи извршне датотеке у тренутном директоријуму. Тренутни директоријум је искључен јер би се могао користити за извршавање злонамерног кода ако се програми покрећу у непоузданим директоријумима (ЦВЕ-2021-3013). Нова логика откривања извршне датотеке укључује претрагу Руст директоријума, директоријума апликација, Виндовс системског директоријума и директоријума наведених у ПАТХ променљивој окружења.
  • Стандардна библиотека је проширила број функција означених са „#[муст_усе]“ да би издала упозорење ако се повратна вредност игнорише, што помаже да се идентификују грешке узроковане претпоставком да ће функција променити вредности уместо да врати нову вредност.
  • Нови део АПИ-ја је премештен у категорију стабилних, укључујући методе и имплементације особина које су стабилизоване:
    • Метаподаци::ис_симлинк
    • Путања::ис_симлинк
    • {интегер}::сатуратинг_див
    • Опција::унврап_унцхецкед
    • Резултат::унврап_унцхецкед
    • Резултат::унврап_ерр_унцхецкед
  • Атрибут "цонст", који одређује могућност његовог коришћења у било ком контексту уместо константи, користи се у функцијама:
    • Трајање::ново
    • Трајање::цхецкед_адд
    • Дуратион::сатуратинг_адд
    • Трајање::цхецкед_суб
    • Дуратион::сатуратинг_суб
    • Дуратион::цхецкед_мул
    • Дуратион::сатуратинг_мул
    • Трајање::цхецкед_див
  • Дозвољено дереференцирање "*цонст Т" показивача у "цонст" контекстима.
  • У менаџеру пакета Царго, поље руст_версион је додато у метаподатке пакета, а опција „--мессаге-формат“ је додата команди „царго инсталл“.
  • Компајлер имплементира подршку за механизам заштите ЦФИ (Цонтрол Флов Интегрити), који додаје провере пре сваког индиректног позива да би открио неке облике недефинисаног понашања који потенцијално могу довести до кршења нормалног налога извршења (контролног тока) као резултат коришћење експлоатација које мењају показиваче ускладиштене у меморији на функције.
  • Компајлер је додао подршку за верзије 5 и 6 формата за поређење ЛЛВМ покривености, који се користи за процену покривености кода током тестирања.
  • У компајлеру, захтеви за минималну верзију ЛЛВМ-а су подигнути на ЛЛВМ 12.
  • Имплементиран је трећи ниво подршке за платформу к86_64-ункновн-ноне. Трећи ниво укључује основну подршку, али без аутоматизованог тестирања, објављивања званичних верзија или провере да ли се код може изградити.

Поред тога, можемо приметити да је Мицрософт објавио издање библиотека Руст за Виндовс 0.30, које вам омогућавају да користите Руст језик за развој апликација за Виндовс ОС. Комплет укључује два пакета сандука (виндовс и виндовс-сис), преко којих можете приступити Вин АПИ-ју у Руст програмима. Код за АПИ подршку се генерише динамички из метаподатака који описују АПИ, што вам омогућава да имплементирате подршку не само за постојеће Вин АПИ позиве, већ и за позиве који ће се појавити у будућности. Нова верзија додаје подршку за циљну платформу УВП (Универсал Виндовс Платформ) и имплементира типове Хандле и Дебуг.

Извор: опеннет.ру

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