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

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

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

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

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

  • У набрајањима са целобројним приказима (атрибут „#[репр(Инт)]“), експлицитно навођење дискриминанта (број варијанте у енумерацији) је дозвољено, чак и ако набрајање садржи поља. #[репр(у8)] енум Фоо { А(у8), # дискриминант 0 Б(и8), # дискриминант 1 Ц(боол) = 42, # дискриминант 42 }
  • Додата функција цоре::хинт::блацк_бок која једноставно враћа примљену вредност. Пошто преводилац мисли да ова функција нешто ради, функција блацк_бок се може користити за онемогућавање оптимизације компајлера за петље када се врши тестирање перформанси кода или приликом испитивања генерисаног машинског кода (тако да компајлер не сматра код неискоришћеним и уклони га). На пример, у примеру испод, блацк_бок(в.ас_птр()) спречава компајлер да помисли да се вектор в не користи. користите стд::хинт::блацк_бок; фн пусх_цап(в: &мут Вец) { фор и ин 0..4 { в.пусх(и); црна_кутија(в.ас_птр()); } }
  • Менаџер пакета "царго" нуди команду "ремове", која вам омогућава да уклоните зависности из манифеста Царго.томл са командне линије.
  • Нови део АПИ-ја је премештен у категорију стабилних, укључујући методе и имплементације особина које су стабилизоване:
    • проц_мацро::Спан::соурце_тект
    • у*::{цхецкед_адд_сигнед, оверфловинг_адд_сигнед, сатуратинг_адд_сигнед, враппинг_адд_сигнед}
    • и*::{цхецкед_адд_унсигнед, оверфловинг_адд_унсигнед, сатуратинг_адд_унсигнед, враппинг_адд_унсигнед}
    • и*::{цхецкед_суб_унсигнед, оверфловинг_суб_унсигнед, сатуратинг_суб_унсигнед, враппинг_суб_унсигнед}
    • БТрееСет::{фирст, ласт, поп_фирст, поп_ласт}
    • БТрееМап::{фирст_кеи_валуе, ласт_кеи_валуе, фирст_ентри, ласт_ентри, поп_фирст, поп_ласт}
    • Додајте имплементације АсФд за типове стдио закључавања када користите ВАСИ.
    • импл ТриФром > за Бок<[Т; Н]>
    • цоре::хинт::блацк_бок
    • Трајање::три_фром_сецс_{ф32,ф64}
    • Опција::унзип
    • стд::ос::фд
  • Опсези „..Кс“ и „..=Кс“ су дозвољени у шаблонима.
  • Када се прави предњи крај рустц компајлера и ЛЛВМ позадина, ЛТО (Линк Тиме Оптимизатион) и БОЛТ (Бинари Оптимизатион анд Лаиоут Тоол) оптимизациони режими се користе за повећање перформанси резултујућег кода и смањење потрошње меморије.
  • Имплементирана подршка нивоа 5 за платформе армв5те-ноне-еаби и тхумбвXNUMXте-ноне-еаби. Трећи ниво подразумева основну подршку, али без аутоматизованог тестирања, објављивања званичних буилдова и провере способности израде кода.
  • Додата подршка за повезивање са мацОС генеричким библиотекама.

Поред тога, можемо приметити укључивање у ГЦЦ кодну базу фронт-енд компајлера Руст језика (гццрс). Фронтенд је укључен у грану ГЦЦ 13, која ће бити објављена у мају 2023. Почевши од ГЦЦ 13, стандардни ГЦЦ комплет алата ће моћи да се користи за компајлирање Руст програма без потребе за инсталирањем рустц компајлера направљеног помоћу ЛЛВМ развоја. Имплементација Руста у ГЦЦ 13 ће бити у бета статусу, није подразумевано омогућена.

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

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