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

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

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

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

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

  • Могуће је дефинисати сопствене повратне кодове из главне функције. Првобитно, Руст-ова главна функција је могла да врати само тип „()“ (јединица), који је увек указивао на статус успешног изласка осим ако програмер није експлицитно позвао функцију „процесс::екит(цоде)“. У Руст 1.26, коришћењем нестабилне карактеристике Терминатион у главној функцији, било је могуће вратити вредности „Ок“ и „Ерр“, које одговарају кодовима ЕКСИТ_СУЦЦЕСС и ЕКСИТ_ФАИЛУРЕ у Ц програмима. У Руст 1.61, карактеристика Терминатион је учињена стабилном, а посебан тип ЕкитЦоде је предложен да представља специфични повратни код, који апстрахује повратне типове специфичне за платформу обезбеђујући и унапред дефинисане константе СУЦЦЕСС и ФАИЛУРЕ, и Фром метод за враћање произвољног повратног кода . користите стд::процесс::ЕкитЦоде; фн маин() -> ЕкитЦоде { иф !цхецк_фоо() { ретурн ЕкитЦоде::фром(8); } ЕкитЦоде::СУЦЦЕСС }
  • Стабилизиране су додатне могућности функција дефинисаних изразом „цонст фн“, које се могу звати не само као регуларне функције, већ и користити у било ком контексту уместо константама. Ове функције се израчунавају у време компајлирања, а не у време извршавања, тако да подлежу одређеним ограничењима, као што је могућност читања само из константи. У новој верзији, дозвољене су основне операције са показивачима функција унутар конст функција (дозвољено је креирање, прослеђивање и пребацивање показивача, али не и позивање функције показивачем); границе особина за генеричке параметре конст функција као што су Т: Цопи; динамички диспечебилне особине (дин Траит); импл Типови особина за аргументе функције и повратне вредности.
  • Стрим рукује Стдин, Стдоут и Стдерр у стд::ио сада има статички животни век („статички“) када је закључан, дозвољавајући конструкције попут „лет оут = стд::ио::стдоут().лоцк();“ са добијањем ручке и постављањем браве у једном изразу.
  • Нови део АПИ-ја је премештен у категорију стабилних, укључујући методе и имплементације особина које су стабилизоване:
    • Пин::статиц_мут
    • Пин::статиц_реф
    • Вец::ретаин_мут
    • ВецДекуе::ретаин_мут
    • Врите фор Цурсор
    • стд::ос::уник::нет::СоцкетАддр::фром_патхнаме
    • стд::процесс::ЕкитЦоде
    • стд::процесс::Прекид
    • стд::тхреад::ЈоинХандле::ис_финисхед
  • Атрибут "цонст", који одређује могућност његовог коришћења у било ком контексту уместо константи, користи се у функцијама:
    • ::оффсет и ::оффсет
    • ::враппинг_оффсет и ::враппинг_оффсет
    • ::адд и ::адд
    • ::суб и ::суб
    • ::враппинг_адд и ::враппинг_адд
    • ::враппинг_суб и ::враппинг_суб
    • ::ас_мут_птр
    • ::ас_птр_ранге
    • ::ас_мут_птр_ранге

Поред тога, можете приметити чланак „Руст: критична ретроспектива“ са резимеом утисака о језику Руст након писања 100 хиљада линија кода у њему током развоја оперативног система Ксоус микрокернел који се користи у фирмверу. Недостаци укључују тешко разумљиву синтаксу, некомплетност и континуирани развој језика, недостатак поновљивих верзија, типичне проблеме са поверењем зависности у Цратес.ио и потребу да се одржи одређена дисциплина за писање безбедног кода. Карактеристике које су превазишле очекивања укључују алате за рефакторисање кода и прераду „хакова“ додатих током брзог прототипа.

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

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