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

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

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

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

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

  • Рустц компајлер има стабилизован систем заснован на ЛЛВМ-у за генерисање података о покривености који се користе за процену покривености кода током тестирања. Да бисте омогућили податке о покривености током састављања, морате користити ознаку „-Цинструмент-цовераге“, на пример, започињући склапање командом „РУСТФЛАГС=“-Ц инструмент-цовераге“ царго буилд“. Након покретања извршне датотеке компајлиране на овај начин, дефаулт.профрав датотека ће бити сачувана у тренутном директоријуму, за обраду коју можете користити услужни програм ллвм-профдата из компоненте ллвм-тоолс-превиев. Излаз који обрађује ллвм-профдата може се затим проследити ллвм-цов да генерише извештај о покривености кода са коментарима. Информације о вези са изворним кодом се преузимају из извршне датотеке која се испитује, а која укључује неопходне податке о вези између бројача покривености и кода. 1| 1|фн маин() { 2| 1| принтлн!("Здраво, свет!"); 3| 1|}
  • У менаџеру карго пакета стабилизована је подршка за ознаку „-тимингс“, што укључује генерисање детаљног извештаја о напретку изградње и времену извршења сваког корака. Извештај може бити користан за оптимизацију перформанси процеса склапања.
  • Менаџер царго пакета нуди нову синтаксу за механизам условне компилације и избора опционих зависности, конфигурисану у датотеци Царго.томл навођењем листе именованих својстава у одељку [феатурес] и активирану омогућавањем својстава током прављења пакета користећи заставу „--феатурес“. Нова верзија додаје подршку за зависности у одвојеним именским просторима и слабе зависности.

    У првом случају, могуће је користити елементе са префиксом „деп:“ унутар одељка „[феатурес]“ да бисте се експлицитно повезали са опционом зависношћу без имплицитног представљања ове зависности као карактеристике. У другом случају је додата подршка за означавање знаком „?”. („име-пакета?/име-феатуре“) опционе зависности које би требало да буду укључене само ако неко друго својство укључује дату опциону зависност. На пример, у примеру испод, омогућавање својства серде ће омогућити зависност „серде“, као и својство „серде“ за зависност „ргб“, али само ако је зависност „ргб“ омогућена негде другде: [зависности] серде = { верзија = " 1.0.133", опционо = тачно } ргб = { верзија = "0.8.25", опционо = тачно } [карактеристике] серде = ["деп:серде", "ргб?/серде"]

  • Подршка за инкременталну компилацију, која је била онемогућена у последњем издању, је враћена. Грешка компајлера која је довела до онемогућавања ове функције је решена.
  • Решени су неки проблеми са обезбеђивањем Инстант тајмера са гаранцијом монотоног времена, који узима у обзир време које је систем провео у режиму мировања. Раније се ОС АПИ користио кад год је то било могуће за рад са тајмером, који није узимао у обзир проблематичне ситуације које нарушавају монотонију времена, као што су хардверски проблеми, употреба виртуелизације или грешке у оперативном систему.
  • Нови део АПИ-ја је премештен у категорију стабилних, укључујући методе и имплементације особина које су стабилизоване:
    • Арц::нев_цицлиц
    • Рц::нев_цицлиц
    • слице::ЕсцапеАсции
    • <[у8]>::есцапе_асции
    • у8::есцапе_асции
    • Вец::спаре_цапацити_мут
    • МаибеУнинит::ассуме_инит_дроп
    • МаибеУнинит::ассуме_инит_реад
    • и8::абс_дифф
    • и16::абс_дифф
    • и32::абс_дифф
    • и64::абс_дифф
    • и128::абс_дифф
    • исизе::абс_дифф
    • у8::абс_дифф
    • у16::абс_дифф
    • у32::абс_дифф
    • у64::абс_дифф
    • у128::абс_дифф
    • усе::абс_дифф
    • Приказ за ио::ЕррорКинд
    • Од за ЕкитЦоде
    • Не за ! (укуцајте "никад")
    • _Оп_Ассигн<$т>
    • арцх::ис_аарцх64_феатуре_детецтед!
  • Трећи ниво подршке је имплементиран за платформе мипс64-опенврт-линук-мусл* и армв7-ункновн-линук-уцлибцеаби (софтфлоат). Трећи ниво укључује основну подршку, али без аутоматизованог тестирања, објављивања званичних верзија или провере да ли се код може изградити.
  • Компајлер је пребачен да користи ЛЛВМ 14.

Поред тога, можете приметити:

  • Додата подршка за покретање рустц компајлера помоћу позадине рустц_цодеген_гцц, која вам омогућава да користите либгццјит библиотеку из ГЦЦ пројекта као генератор кода у рустц, што омогућава рустц-у да пружи подршку за архитектуре и оптимизације доступне у ГЦЦ-у. Промоција компајлера значи могућност коришћења генератора кода заснованог на ГЦЦ-у у рустц-у за прављење самог рустц компајлера. Са практичне стране, ова функција вам омогућава да направите програме за руст за архитектуре које раније нису биле подржане у рустц-у.
  • Доступно је издање комплета алата уутилс цореутилс 0.0.13 у оквиру којег се развија аналогни пакет ГНУ Цореутилс, преписан на Руст језику. Цореутилс долази са преко стотину услужних програма, укључујући сорт, цат, цхмод, цховн, цхроот, цп, дате, дд, ецхо, хостнаме, ид, лн и лс. Циљ пројекта је креирање вишеплатформске алтернативне имплементације Цореутил-а, способне за рад на Виндовс, Редок и Фуцхсиа платформама, као и дистрибуцију под дозвољеном МИТ лиценцом, уместо ГПЛ цопилефт лиценце.

    Нова верзија је побољшала имплементацију многих услужних програма, укључујући значајно побољшану компатибилност цп, дд, дф, сплит и тр услужних програма са њиховим колегама из ГНУ пројекта. Обезбеђена онлајн документација. Парсер цлап се користи за рашчлањивање аргумената командне линије, што је побољшало излаз за ознаку „--хелп“ и додало подршку за скраћенице дугих команди (на пример, можете да наведете „лс -цол“ уместо „лс -цолор“ ”).

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

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