Издање програмског језика Руст 1.75 и уникернела Хермит 0.6.7

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

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

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

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

  • Додата је могућност коришћења „асинц фн“ и „->импл Траит“ нотације у приватним особинама. На пример, користећи “->импл Траит” можете написати методу особине која враћа итератор: Траит Цонтаинер { фн итемс(&селф) -> импл Итератор; } импл контејнер за МиЦонтаинер { фн итемс(&селф) -> импл Итератор { селф.итемс.итер().цлонед() } }

    Такође можете креирати особине користећи "асинц фн": особина ХттпСервице { асинц фн фетцх(&селф, урл: Урл) -> ХтмлБоди; // ће бити проширен на: // фн фетцх(&селф, урл: Урл) -> импл Футуре; }

  • Додат АПИ за израчунавање помака бајтова у односу на показиваче. Када радите са голим показивачима (“*цонст Т” и “*мут Т”), операције ће можда бити потребне за додавање офсета показивачу. Раније је за ово било могуће користити конструкцију попут „::адд(1)“, додајући број бајтова који одговара величини „сизе_оф::()“. Нови АПИ поједностављује ову операцију и омогућава манипулисање помацима бајтова без претходног пребацивања типова на "*цонст у8" или "*мут у8".
    • показивач::бите_адд
    • поинтер::бите_оффсет
    • показивач::бите_оффсет_фром
    • поинтер::бите_суб
    • поинтер::враппинг_бите_адд
    • поинтер::враппинг_бите_оффсет
    • поинтер::враппинг_бите_суб
  • Наставак рада на повећању перформанси рустц компајлера. Додан је БОЛТ оптимизатор, који ради у фази пост-линка и користи информације из унапред припремљеног профила извршења. Коришћење БОЛТ-а вам омогућава да убрзате извршавање компајлера за око 2% променом распореда кода библиотеке либрустц_дривер.со ради ефикаснијег коришћења кеш меморије процесора.

    Укључује изградњу рустц компајлера са опцијом "-Ццодеген-унитс=1" за побољшање квалитета оптимизације у ЛЛВМ-у. Извршени тестови показују повећање перформанси у случају "-Ццодеген-унитс=1" буилд за приближно 1.5%. Додате оптимизације су подразумевано омогућене само за платформу к86_64-ункновн-линук-гну.

    Претходно поменуте оптимизације је тестирао Гоогле да би смањио време израде компоненти Андроид платформе написаних у Русту. Коришћење „-Ц цодеген-унитс=1“ приликом израде Андроид-а нам је омогућило да смањимо величину комплета алата за 5.5% и повећамо његове перформансе за 1.8%, док се време израде самог комплета алата скоро удвостручило.

    Омогућавање сакупљања смећа у време везе („--гц-сецтионс“) донело је повећање перформанси до 1.9%, омогућавајући оптимизацију времена везе (ЛТО) до 7.7%, а оптимизације засноване на профилу (ПГО) до 19.8% . На крају су примењене оптимизације помоћу услужног програма БОЛТ, што је омогућило повећање брзине градње на 24.7%, али је величина комплета алата порасла за 10.9%.

    Издање програмског језика Руст 1.75 и уникернела Хермит 0.6.7

  • Нови део АПИ-ја је премештен у категорију стабилних, укључујући методе и имплементације особина које су стабилизоване:
    • Атомиц*::фром_птр
    • ФилеТимес
    • ФилеТимесЕкт
    • Филе::сет_модифиед
    • Филе::сет_тимес
    • ИпАддр::то_цаноницал
    • Ипв6Аддр::то_цаноницал
    • Опција::ас_слице
    • Опција::ас_мут_слице
    • показивач::бите_адд
    • поинтер::бите_оффсет
    • показивач::бите_оффсет_фром
    • поинтер::бите_суб
    • поинтер::враппинг_бите_адд
    • поинтер::враппинг_бите_оффсет
    • поинтер::враппинг_бите_суб
  • Атрибут "цонст", који одређује могућност његовог коришћења у било ком контексту уместо константи, користи се у функцијама:
    • Ипв6Аддр::то_ипв4_маппед
    • МаибеУнинит::ассуме_инит_реад
    • МаибеУнинит::зероед
    • мем::дисцриминант
    • мем::нула
  • Трећи ниво подршке је имплементиран за платформе цски-ункновн-линук-гнуабив2хф, и586-ункновн-нетбсд и мипсел-ункновн-нетбсд. Трећи ниво укључује основну подршку, али без аутоматизованог тестирања, објављивања званичних верзија или провере да ли се код може изградити.

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

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

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