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

одиграло се издање системског програмског језика Руст 1.34, развијен од стране Мозилла пројекта. Језик се фокусира на безбедност меморије, обезбеђује аутоматско управљање меморијом и обезбеђује средства за постизање високог паралелизма задатака без коришћења сакупљача смећа или времена извршавања.

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

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

  • Менаџер Царго пакета је додао алате за рад са алтернативним регистрима пакета који могу коегзистирати са јавним регистром цратес.ио. На пример, програмери власничких апликација сада могу да користе сопствени приватни регистар, који се може користити када се наводе зависности у Царго.томл, и примењују модел верзионисања сличан цратес.ио за своје производе, као и да упућују зависности на оба сандука. ио и вашем сопственом регистру.

    Да бисте додали спољне регистре у .царго/цонфиг (који се налази у $ХОМЕ или у директоријуму пакета)
    обезбеђено одељак „[регистри]“, а за коришћење екстерног регистра, опција „регистратор“ се појавила у опису сваке зависности у Царго.томл. Да бисте се повезали са додатним регистром, једноставно ставите токен за аутентификацију у ~/.царго/цредентиалс датотеку и покрените команду
    "царго логин --регистри=ми-регистри" и да објавите пакет -
    "царго публисх -регистри=ми-регистри";

  • Додата је пуна подршка за коришћење „?” оператора. у тестовима доцтестс, што вам омогућава да користите пример кода из документације као тестове. Раније оператер
    "?" може се користити за руковање грешкама током извршавања теста само у присуству функције „фн маин()“ или у функцијама „#[тест]“;

  • У прилагођеним атрибутима дефинисаним помоћу процедуралних макроа обезбеђено могућност коришћења произвољних скупова токена („#[аттр($токенс)]“, „#[аттр[$токенс]] и #[аттр{$токенс}]“). Раније су елементи могли бити специфицирани само у облику стабла/рекурзивне помоћу литерала стрингова, на пример “#[фоо(бар, баз(куук, фоо = “бар”))]”, али сада је могуће користити набрајања (' #[опсег(0. .10)]') и конструкције попут „#[боунд(Т: МиТраит)]”;
  • Стабилизовани типови (особина) ТриФром и ТриИнто, омогућава конверзије типова са руковањем грешкама. На пример, методе попут фром_бе_битес са целобројним типовима користе низове као улаз, али подаци често долазе у типу Слице, а конвертовање између низова и резова је проблематично за ручно. Уз помоћ нових особина, наведена операција се може извршити у ходу путем позива .три_инто(), на пример, „лет нум = у32::фром_бе_битес(слице.три_инто()?)“. За конверзије које увек успеју (на пример, од типа у8 до у32), додат је тип грешке Непогрешив, омогућавајући транспарентну употребу
    ТриФром за све постојеће имплементације „Фром“;

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

  • Стабилизовани потписани и непотписани атомски цели бројеви величине од 8 до 64 бита (нпр. АтомицУ8), као и потписани типови НонЗероИ[8|16|32|64|128].
  • Нови део АПИ-ја је премештен у стабилну категорију, укључујући Ани::типе_ид, Еррор::типе_ид, слице::сорт_би_цацхед_кеи, стр::есцапе_*, стр::сплит_асции_вхитеспаце, Инстант::цхецкед_[адд|суб ] и СистемТиме методе су стабилизоване ::цхецкед_[адд|суб]. Функције итер::фром_фн и итер::суццессорс су стабилизоване;
  • За све типове целих бројева имплементиране су методе цхецкед_пов, сатуратинг_пов, враппинг_пов и оверфловинг_пов;
  • Додата је могућност омогућавања оптимизације у фази повезивања навођењем опције изградње „-Ц линкер-плугин-лто“.

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

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