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

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

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

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

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

  • За асинхронизоване функције са Футуре::Оутпут, сада је могуће навести „#[муст_усе]“ напомене које укључују упозорење ако се повратна вредност игнорише, што помаже да се идентификују грешке узроковане претпоставком да ће функција променити вредности уместо да врати нову вредност. #[муст_усе] асинц фн бар() -> у32 { 0 } асинц фн цаллер() { бар().аваит; } упозорење: неискоришћени излаз будућности враћа `бар` који мора да се користи —> срц/либ.рс:5:5 | 5 | бар().аваит; | ^^^^^^^^^^^^ | = напомена: `#[упозорење(унусед_муст_усе)]` је подразумевано укључено
  • Ажурирана је имплементација ФИФО редова стд::синц::мпсц (вишепроизвођач и један потрошач), који је пребачен на коришћење модула цроссбеам-цханнел уз задржавање претходног АПИ-ја. Нову имплементацију одликује решавање низа проблема, веће перформансе и поједностављено одржавање кода.
  • Нови део АПИ-ја је премештен у категорију стабилних, укључујући методе и имплементације особина које су стабилизоване:
    • {интегер}::цхецкед_илог
    • {интегер}::цхецкед_илог2
    • {интегер}::цхецкед_илог10
    • {интегер}::илог
    • {интегер}::илог2
    • {интегер}::илог10
    • НонЗероУ*::илог2
    • НонЗероУ*::илог10
    • НонЗеро*::БИТС
  • Атрибут "цонст", који одређује могућност његовог коришћења у било ком контексту уместо константи, користи се у функцијама:
    • цхар::фром_у32
    • цхар::фром_дигит
    • цхар::то_дигит
    • цоре::цхар::фром_у32
    • цоре::цхар::фром_дигит
  • Имплементиран је трећи ниво подршке за коришћење Руста у Линук кернелу (линуккернел), као и за Сони ПлаиСтатион 1 (мипсел-сони-пск), ПоверПЦ са АИКС (поверпц64-ибм-аик), КНКС Неутрино РТОС ( аарцх64-ункновн-нто-) платформе кнк710, к86_64-пц-нто-кнк710). Трећи ниво укључује основну подршку, али без аутоматизованог тестирања, објављивања званичних верзија или провере да ли се код може изградити.

Поред тога, можемо приметити објављивање закрпа од стране АРМ-а које омогућавају употребу језика Руст за развој драјвера и модула језгра Линука састављених за системе засноване на архитектури ААрцх64.

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

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