Руст 1.53 је објављен. Гоогле ће финансирати додавање подршке за Руст Линук кернелу

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

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

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

  • За низове је имплементирана карактеристика ИнтоИтератор која вам омогућава да организујете итерацију елемената низа по вредностима: за и у [1, 2, 3] { .. }

    Такође је могуће проследити низове методама које прихватају итераторе, на пример: лет сет = БТрееСет::фром_итер([1, 2, 3]); за (а, б) у соме_итератор.цхаин([1]).зип([1, 2, 3]) { .. }

    Раније је ИнтоИтератор имплементиран само за референце низа, тј. за понављање вредности потребна је употреба референци („&[1, 2, 3]“) или „[1, 2, 3].итер()“. Имплементацију ИнтоИтератор-а за низове ометали су проблеми са компатибилношћу узроковани ранијим претварањем компајлера из арраи.инто_итер() у (&арраи).инто_итер(). Ови проблеми су решени помоћу заобилазног решења – компајлер ће наставити да конвертује арраи.инто_итер() у (&арраи).инто_итер() као да није било имплементације особине ИнтоИтератор, али само када позива метод помоћу „.инто_итер( )" синтаксе и без додиривања позива у облику "у [1, 2, 3]", "итер.зип([1, 2, 3])", "ИнтоИтератор::инто_итер([1, 2, 3] )".

  • Могуће је навести изразе „|” (логичка операција ИЛИ) у било ком делу шаблона, на пример, уместо „Неки(1) | Соме(2)" сада можете написати "Неки(1 | 2)": резултат подударања { Ок(Неки(1 | 2)) => { .. } Ерр(МиЕррор { кинд: ФилеНотФоунд | ПермиссионДениед, .. }) = > { .. } _ => { .. } }
  • Дозвољена је употреба знакова који нису АСЦИИ у идентификаторима, укључујући све националне знакове дефинисане у Уницоде УАКС 31 спецификацији, али искључујући емоји знакове. Ако користите различите, али сличне знакове, компајлер ће издати упозорење. цонст БЛАХАЈ: &стр = "🦈"; струцт 人 { 名字: Стринг, } нека је α = 1; летsос = 2; упозорење: пар идентификатора се сматра збуњивим између 's' и 'с'
  • Нови део АПИ-ја је пребачен у стабилну категорију, укључујући следеће стабилизоване:
    • низ::од_реф
    • низ::од_мут
    • АтомицБоол::фетцх_упдате
    • АтомицПтр::фетцх_упдате
    • БТрееСет::ретаин
    • БТрееМап::ретаин
    • БуфРеадер::сеек_релативе
    • цмп::мин_би
    • цмп::мин_би_кеи
    • цмп::мак_би
    • цмп::мак_би_кеи
    • ДебугСтруцт::финисх_нон_екхаустиве
    • Трајање::ЗЕРО
    • Трајање::МАКС
    • Дуратион::ис_зеро
    • Дуратион::сатуратинг_адд
    • Дуратион::сатуратинг_суб
    • Дуратион::сатуратинг_мул
    • ф32::ис_субнормал
    • ф64::ис_субнормал
    • ИнтоИтератор за низове
    • {интегер}::БИТС
    • ио::Еррор::Неподржано
    • НонЗеро*::леадинг_зерос
    • НонЗеро*::траилинг_зерос
    • Оптион::инсерт
    • Ордеринг::ис_ек
    • Ордеринг::ис_не
    • Ордеринг::ис_лт
    • Ордеринг::ис_гт
    • Ордеринг::ис_ле
    • Ордеринг::ис_ге
    • ОсСтр::маке_асции_ловерцасе
    • ОсСтр::маке_асции_упперцасе
    • ОсСтр::то_асции_ловерцасе
    • ОсСтр::то_асции_упперцасе
    • ОсСтр::ис_асции
    • ОсСтр::ек_игноре_асции_цасе
    • Пеекабле::пеек_мут
    • Рц::инцремент_стронг_цоунт
    • Рц::децремент_стронг_цоунт
    • слице::ИтерМут::ас_слице
    • АсРеф<[Т]> за слице::ИтерМут
    • импл СлицеИндек за (везано , Боунд )
    • Вец::ектенд_фром_витхин
  • Имплементиран је трећи ниво подршке за васм64-ункновн-ункновн платформу. Трећи ниво укључује основну подршку, али без аутоматизованог тестирања, објављивања званичних верзија или провере да ли се код може изградити.
  • Менаџер Царго пакета је премештен да подразумевано користи име „маин“ за главну грану Гит спремишта (ХЕАД). Зависности које се налазе у репозиторијумима које користе име маин уместо мастер више не захтевају да се конфигурише грана = "маин".
  • У компајлеру, захтеви за минималну верзију ЛЛВМ-а су подигнути на ЛЛВМ 10.

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

Према Мицрософт-у и Гоогле-у, око 70% рањивости је узроковано небезбедним руковањем меморијом. Очекује се да ће коришћење Руст језика за развој компоненти кернела као што су драјвери уређаја смањити ризик од рањивости узрокованих небезбедним руковањем меморијом и елиминисати грешке као што је приступ меморијском региону након што је он ослобођен и прекорачење граница бафера.

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

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

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