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

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

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

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

  • Додата је могућност означавања структура (структура) и набрајања (енум са блоком Вариант) помоћу атрибута "#[неисцрпно]", која Он омогућава у будућности, додајте нова поља и опције декларисаним структурама и набрајањима. На пример, програмери модула који имају структуре са јавно декларисаним пољима могу да користе „#[нон_екхаустиве]“ да означе структуре којима ће се у будућности можда додати нова поља. До сада, у таквој ситуацији, програмер је био приморан да бира између приватног декларисања поља и везивања за непроменљиву листу поља. Нови атрибут уклања ово ограничење и омогућава вам да додајете нова поља у будућности без ризика од кршења претходно компајлираног екстерног кода. У пакетима за сандуке, када се подударају опције у одељку „подударање“, потребна је експлицитна дефиниција маске „_ => {...}“, која покрива могућа будућа поља, иначе ће се приказати грешка приликом додавања нових поља.
  • Додато могућност позивања процедуралног макроа мац!() у контексту типа. На пример, сада можете написати „типе Фоо = екпанд_то_типе!(бар);“ ако је „екпанд_то_типе“ процедурални макро.
  • У блоковима „ектерн { ... }“. додао је могућност коришћења процедуралних и атрибутних макроа, укључујући макрое „банг!()“, на пример:

    мацро_рулес! маке_итем { ($наме:идент) => { фн $наме(); } }

    екстерн {
    маке_итем!(алфа);
    маке_итем!(бета);
    }

    екстерни "Ц" {
    #[ми_идентити_мацро] фн фоо();
    }

  • У макроима имплементиран способност генерисања елемената „мацро_рулес!“. Генерисање "мацро_рулес!" могуће и у макроима сличним функцији (“мац!()”) иу макроима у облику атрибута (“#[мац]”).
  • У елементу за мапирање $м:мета додао је подршка за произвољне вредности набрајања токена („[ТОКЕН_СТРЕАМ]“, „{ТОКЕН_СТРЕАМ}“ и „(ТОКЕН_СТРЕАМ)“), на пример:

    мацро_рулес! аццепт_мета { ($м:мета) => {} }
    аццепт_мета!( ми::патх);
    аццепт_мета!( ми::патх = "светли");
    аццепт_мета!( ми::патх ( абц ) );
    аццепт_мета!( ми::патх [ абц ] );
    аццепт_мета!( ми::патх { абц });

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

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

  • Атрибут „цонст“, који одређује могућност његовог коришћења у било ком контексту уместо константи, користи се за функцију ис_повер_оф_тво (за неозначене целе бројеве).
  • Нови део АПИ-ја је премештен у стабилну категорију, укључујући макро тодо!() и слице::репеат, мем::таке, БТрееМап::гет_кеи_валуе, ХасхМап::гет_кеи_валуе, методе су стабилизоване.
    Оптион::ас_дереф, Оптион::ас_дереф_мут, Оптион::флаттен, УдпСоцкет::пеер_аддр, {ф32,ф64}::то_бе_битес, {ф32,ф64}::то_ле_битес,{ф32,ф64}::то_не32_битес, ф64}::фром_бе_битес, {ф32,ф64}::фром_ле_битес и {ф32,ф64}::фром_не_битес.

  • У пакет менаџеру терет
    имплементиран кеширање упозорења компајлера на диску. Додата опција „метаподаци терета“ команди „метаподаци терета“.--филтер-платформа" да бисте приказали само пакете везане за наведену циљну платформу у колони резолуције зависности. Додата опција конфигурације хттп.ссл-верзије за дефинисање важећих ТЛС верзија.
    Додата могућност објављивања одељка "дев-зависности" без навођења кључа "верзија".

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

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

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