Издање програмског језика Руст 2021 (1.56)

Објављено је издање системског програмског језика Руст 1.56, који је основао пројекат Мозилла, али је сада развијен под окриљем независне непрофитне организације Руст Фоундатион. Поред редовног броја верзије, издање је такође означено као Руст 2021 и означава стабилизацију промена предложених у последње три године. Руст 2021 ће такође послужити као основа за повећање функционалности у наредне три године, слично као што је објављивање Руста 2018 постало основа за развој језика у протекле три године.

Да би одржали компатибилност, програмери могу да користе ознаке „2015“, „2018“ и „2021“ у својим програмима, омогућавајући програмима да буду повезани са деловима стања језика који одговарају изабраним издањима Руста. Издања су уведена да одвоје некомпатибилне измене и конфигуришу се у метаподацима теретних пакета кроз поље „издање“ у одељку „[пакет]“. На пример, издање „2018“ укључује функционалност стабилизовану од краја 2018. и такође покрива све даље промене које не нарушавају компатибилност. Издање за 2021. додатно укључује функције за разбијање интероперабилности које су предложене у тренутном издању 1.56 и одобрене за будућу примену. Поред самог језика, уредници воде рачуна и о стању алата и документације.

Главне некомпатибилности забележене у Руст 2021:

  • Одвојено хватање у затварачима – Затварања сада могу ухватити појединачна имена поља уместо целог идентификатора. На пример, "|| а.к + 1" ће ухватити само "а.к" уместо "а".
  • Карактеристика ИнтоИтератор за низове: арраи.инто_итер() вам омогућава да итерирате елементе низа по вредностима, а не по референцама.
  • Обрада „|” израза је промењена у мацро_рулес (Боолеан ОР) у обрасцима - Спецификатор ":пат" у подударањима сада поштује "А | Б".
  • Менаџер теретних пакета подразумевано укључује другу верзију разрешивача функција, подршка за коју се појавила у Русту 1.51.
  • Карактеристике ТриФром, ТриИнто и ФромИтератор су додате модулу стандардне библиотеке прелудија.
  • Макрои паника!(..) и ассерт!(екпр, ..) сада увек користе формат_аргс!(..) за форматирање стрингова, слично принтлн!().
  • Изрази идент#, идент»...» и идент'...' су резервисани у синтакси језика.
  • Упозорења баре_траит_објецтс и еллипсис_инцлусиве_ранге_паттернс су премештена у грешке.

Ново у Руст 1.56:

  • У Царго.томл, у одељку „[пакет]“, додато је поље руст-версион преко којег можете одредити минималну подржану верзију Руста за пакет сандука. Ако тренутна верзија не одговара наведеном параметру, Царго ће престати да ради са поруком о грешци.
  • Када се подудара са шаблоном помоћу израза „биндинг @ паттерн“, обезбеђена је подршка за навођење додатних везивања (на пример, „нека матрица @ Матрик { ров_лен, .. } = гет_матрик();“).
  • Нови део АПИ-ја је премештен у категорију стабилних, укључујући методе и имплементације особина које су стабилизоване:
    • стд::ос::уник::фс::цхроот
    • УнсафеЦелл::рав_гет
    • БуфВритер::инто_партс
    • цоре::паниц::{УнвиндСафе, РефУнвиндСафе, АссертУнвиндСафе}
    • Вец::схринк_то
    • Стринг::схринк_то
    • ОсСтринг::схринк_то
    • ПатхБуф::схринк_то
    • БинариХеап::схринк_то
    • ВецДекуе::схринк_то
    • ХасхМап::схринк_то
    • ХасхСет::схринк_то
  • У функцијама се користи атрибут „цонст“, који одређује могућност коришћења у било ком контексту уместо константи
    • стд::мем::трансмуте
    • [Т]::прво
    • [Т]::сплит_фирст
    • [Т]::последњи
    • [Т]::сплит_ласт
  • Компајлер је пребачен да користи ЛЛВМ верзију 13.
  • Други ниво подршке је имплементиран за платформу аарцх64-аппле-иос-сим и трећи ниво за платформе поверпц-ункновн-фреебсд и рисцв32имц-есп-еспидф. Трећи ниво укључује основну подршку, али без аутоматизованог тестирања, објављивања званичних верзија или провере да ли се код може изградити.

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

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

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

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