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

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

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

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

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

фн маин() {
нека кс = [0; 34];
принтлн!("{:?}", кс);
}

  • Обезбеђен излаз краћих трагова (бацктраце), излаз у ванредним ситуацијама. Елементи који нису од интереса у већини ситуација, али ометају излаз и одвлаче пажњу са примарних узрока проблема, искључени су из трага. Да бисте вратили потпуно праћење, можете користити променљиву окружења „РУСТ_БАЦКТРАЦЕ=фулл“. На пример, за код

фн маин() {
паника!();
}

Раније је праћење излазило у 23 фазе, али ће сада бити сведено на 3 фазе, омогућавајући вам да одмах схватите суштину:

нит 'маин' успаничена од 'експлицитне панике', срц/маин.рс:2:5
траг стека:
0: стд::паницкинг::бегин_паниц
на /рустц/д…д75а/либрари/стд/срц/паницкинг.рс:497
1: игралиште::главно
на ./срц/маин.рс:2
2: цоре::опс::фунцтион::ФнОнце::цалл_онце
на /рустц/д…д75а/либрари/цоре/срц/опс/фунцтион.рс:227

  • Рустц компајлер је ажуриран за прављење помоћу ЛЛВМ 11 (Руст користи ЛЛВМ као позадину за генерисање кода). Истовремено, задржана је могућност изградње са старим ЛЛВМ-ом, до верзије 8, али се подразумевано (у руст-ланг/ллвм-пројецт) сада користи ЛЛВМ 11. Издање ЛЛВМ 11 се очекује у наредном дана.
  • На Виндовс платформи, рустц компајлер пружа подршку за омогућавање провера интегритета контролног тока (Цонтрол Флов Гуард), који се активира помоћу ознаке „-Ц цонтрол-флов-гуард”. На другим платформама ова застава се за сада игнорише.
  • Нови део АПИ-ја је пребачен у стабилну категорију, укључујући стабилизовани Идент::нев_рав, Ранге::ис_емпти, РангеИнцлусиве::ис_емпти, Ресулт::ас_дереф, Ресулт::ас_дереф_мут, Вец::леак, поинтер::оффсет_фром , ф32:: ТАУ и ф64::ТАУ.
  • Атрибут „цонст“, који одређује могућност његовог коришћења у било ком контексту уместо константи, користи се у методама:
    • ново за све целе бројеве осим нуле;
    • цхецкед_адд, цхецкед_суб, цхецкед_мул, цхецкед_нег, цхецкед_схл, цхецкед_схр, сатуратинг_адд, сатуратинг_суб и сатуратинг_мул за све целе бројеве;
    • ис_асции_алпхабетиц, ис_асции_упперцасе, ис_асции_ловерцасе, ис_асции_алпханумериц, ис_асции_дигит, ис_асции_хекдигит, ис_асции_пунцтуатион, ис_асции_грапхиц, ис_асции_вхитеспаце и ис_асции за типове за знакове и ис_л8.
  • За ФрееБСД се користи комплет алата из ФрееБСД 11.4 (ФрееБСД 10 не подржава ЛЛВМ 11).

Узето од опеннет.ру

Извор: линук.орг.ру

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