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

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

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

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

  • Менаџер пакета Царго интегрише команду „царго трее“, која приказује графикон зависности налик стаблу. Додата је и опција „—дупликати“ („царго трее -д“), која вам омогућава да процените зависности у различитим верзијама истог пакета.

    мдбоок в0.3.2 (/Усерс/срц/руст/мдбоок)
    ├── амонијак в3.0.0
    │ ├── хтмл5евер в0.24.0
    │ │ ├── лог в0.4.8
    │ │ │ └── цфг-иф в0.1.9
    │ │ ├── мац в0.1.1
    │ │ └── маркуп5евер в0.9.0
    │ │ ├── лог в0.4.8 (*)
    │ │ ├── пхф в0.7.24
    │ │ │ └── пхф_схаред в0.7.24
    │ │ │ ├── сипхасхер в0.2.3
    │ │ │ └── уницасе в1.4.2
    │ │ │ [зависности изградње] │ │ │ └── версион_цхецк в0.1.5
    ...

  • За апликације које нису везане за стд ("#![но_стд]"), подршка за технике асинхроног програмирања је имплементирана на основу функције "асинц", блока асинц мове { ... } и оператора ".аваит", који поједноставити писање главног тока команди руковалаца који не блокирају.
  • Подршка за прошириву шему дефиниције хијерархије модула је додата у парсер. На пример, следећа конструкција неће произвести грешку, упркос стварном одсуству модула „фоо/бар/баз.рс“ (конструкција је и даље семантички неважећа и може изазвати грешку, али промене се могу видети и рашчланити на ниво макро и условне компилације):

    #[цфг(ФАЛСЕ)] мод фоо {
    мод бар {
    мод баз;
    }
    }

  • Рустц компајлер је додао могућност коришћења ознаке „-Ц цодеген-унитс“ у инкременталном режиму. Имплементација цатцх_унвинд је прерађена тако да нема утицаја на перформансе ако је процес одмотавања онемогућен и не постоје изузеци.
  • Подршка нивоа 64 је обезбеђена за платформе аарцх64-ункновн-ноне, аарцх64-ункновн-ноне-софтфлоат, арм86-аппле-твос и к64_XNUMX-аппле-твос. Трећи ниво укључује основну подршку, али без аутоматизованог тестирања и објављивања званичних верзија.
  • Нови део АПИ-ја је пребачен у стабилну категорију, укључујући и стабилизоване
    ПатхБуф::витх_цапацити,
    ПатхБуф::капацитет,
    ПатхБуф::јасно,
    ПатхБуф::ресерве,
    ПатхБуф::ресерве_екацт,
    ПатхБуф::схринк_то_фит,
    {ф32|ф64}::то_инт_унцхецкед,
    Лаиоут::алигн_то,
    Лаиоут::пад_то_алигн,
    Лаиоут::арраи и
    Лаиоут::ектенд.

  • Проширене функције стандардне библиотеке:
    • Додата је посебна варијанта „вец![]“ која се директно одражава у Вец::нев(), омогућавајући да се „вец![]“ користи у контексту уместо константи.
    • Додата је имплементација (импл) особине за конверзију::Инфаллибле Хасх.
    • ОсСтринг имплементира паметне показиваче ДерефМут и ИндекМут, враћа "&мут ОсСтр".
    • Додата подршка за Уницоде 13.
    • Имплементирано у Стринг Од<&мут стр>.
    • ИоСлице имплементира особину Копирање.
    • Вец имплементирано Од<[Т; Н]>.
    • проц_мацро::ЛекЕррор имплементира фмт::Дисплаи и Еррор.
  • Атрибут „цонст“, који одређује могућност његовог коришћења у било ком контексту уместо константи, користи се у методама фром_ле_битес, то_ле_битес, фром_бе_битес, то_бе_битес, фром_не_битес и то_не_битес за све целобројне типове.
  • Додата подршка за генерисање статичких библиотека у ".а" формату уместо ".либ" за ГНУ платформе на Виндовс-у.
  • Минимални захтеви за ЛЛВМ су подигнути на ЛЛВМ верзију 8.

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

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