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

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

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

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

  • Употреба макроа „паника!“ је стабилизована. у контекстима креираним током компилације, као што су "цонст фн" декларације. Поред тога, поред употребе "панике!" цонст декларације дозвољавају употребу макроа „ассерт!”. и неке друге стандардне библиотечке АПИ-је. Стабилизација још увек не покрива целокупну инфраструктуру за форматирање, тако да је у садашњем облику макро „паника!“. може да се користи само са статичким стринговима (паниц!(…“)) или са једном интерполираном вредношћу „&стр“ приликом замене (паниц!(“{}”, а)), што би требало да буде ограничено на замену „{ }" без спецификација форматирања и других типова. У будућности, примењивост макроа у константним контекстима ће бити проширена, али су стабилизоване могућности већ довољне да се изврше провере ассерт у фази компилације: цонст _: () = ассерт!(стд::мем::сизе_оф:: () == 64); цонст _: () = ассерт!(стд::мем::сизе_оф:: () == 8);
  • Царго пакет менаџер дозвољава употребу профила са произвољним називима, не ограничавајући се на „дев“, „релеасе“, „тест“ и „бенцх“. На пример, да бисте омогућили оптимизацију у фази повезивања (ЛТО) само када су финални склопови производа генерисани, можете креирати „производни“ профил у Царго.томл и додати му ознаку „лто = труе“. Међутим, када дефинишете сопствене профиле, морате навести постојећи профил да бисте од њега наследили подразумевана подешавања. Пример испод креира „производни“ профил који допуњује профил „издања“ укључивањем ознаке „лто = труе“. Сам профил се активира позивањем терета са опцијом „--профиле продуцтион“, а артефакти склопа ће бити смештени у директоријум „циљ/производња“. [профиле.продуцтион] наследи = "релеасе" лто = труе
  • Стабилизовано је коришћење три_ресерве за типове Вец, Стринг, ХасхМап, ХасхСет и ВецДекуе, што вам омогућава да унапред резервишете простор за одређени број елемената датог типа како бисте смањили учесталост операција расподеле меморије и избегли руши током рада због недостатка меморије.
  • Дозвољено је навести макрое са витичастим заградама у изразима попут "м!{ .. }.метход()" и "м!{ .. }?".
  • Оптимизовано је извршавање функција Филе::реад_то_енд и реад_то_стринг.
  • Подршка за Уницоде спецификацију је ажурирана на верзију 14.0.
  • Проширен је број функција означених са „#[муст_усе]“ за издавање упозорења ако се повратна вредност игнорише, што помаже да се идентификују грешке узроковане претпоставком да ће функција променити вредности уместо да врати нову вредност.
  • Додата експериментална позадина за генерисање кода помоћу либгццјит.
  • Нови део АПИ-ја је премештен у категорију стабилних, укључујући методе и имплементације особина које су стабилизоване:
    • [Т; Н]::ас_мут_слице
    • [Т; Н]::ас_слице
    • цоллецтионс::ТриРесервеЕррор
    • ХасхМап::три_ресерве
    • ХасхСет::три_ресерве
    • Стринг::три_ресерве
    • Стринг::три_ресерве_екацт
    • Вец::три_ресерве
    • Вец::три_ресерве_екацт
    • ВецДекуе::три_ресерве
    • ВецДекуе::три_ресерве_екацт
    • Итератор::мап_вхиле
    • итер::МапВхиле
    • проц_мацро::ис_аваилабле
    • Цомманд::гет_програм
    • Цомманд::гет_аргс
    • Цомманд::гет_енвс
    • Цомманд::гет_цуррент_дир
    • ЦоммандАргс
    • ЦоммандЕнвс
  • Атрибут „цонст“, који одређује да ли се може користити у било ком контексту уместо константи, користи се у функцији хинт::унреацхабле_унцхецкед.
  • Трећи ниво подршке је имплементиран за армв6к-нинтендо-3дс, армв7-ункновн-линук-уцлибцеабихф, м68к-ункновн-линук-гну, аарцх64-кмц-солид_асп3, армв7а-кмц-солид_асп3-еабик и армв7 солид_асп3-еабихф платформе. Трећи ниво укључује основну подршку, али без аутоматизованог тестирања, објављивања званичних верзија или провере да ли се код може изградити.

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

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