Rust 1.37 scaoileadh teanga cláir

foilsithe scaoileadh teanga ríomhchláraithe an chórais Meirge 1.37, a bhunaigh an tionscadal Mozilla. Díríonn an teanga ar shábháilteacht chuimhne, soláthraíonn bainistíocht cuimhne uathoibríoch, agus cuireann sé bealach ar fáil chun comhthreomhaireacht ard-tasc a bhaint amach gan bailitheoir truflais nó am rite a úsáid.

Déanann bainistíocht cuimhne uathoibríoch Rust an forbróir a shaoradh ó ionramháil pointeora agus cosnaíonn sé i gcoinne fadhbanna a eascraíonn as ionramháil cuimhne ísealleibhéil, amhail rochtain saor ó chuimhne iar-saor in aisce, dereferences pointeoir nialasach, róchaiteachas maoláin, agus a leithéidí. Tá bainisteoir pacáiste á fhorbairt chun leabharlanna a dháileadh, tionól a chinntiú agus spleáchais an tionscadail a bhainistiú. Cargo, rud a ligeann duit na leabharlanna atá ag teastáil don chlár a fháil i gcliceáil amháin. Tacaítear le stór chun leabharlanna a óstáil cliathbhoscaí.io.

An príomh- nuálaíochtaí:

  • В компиляторе rustc daingnithe поддержка оптимизации на основе результатов профилирования кода (PGO, Profile-Guided Optimization),
    позволяющих генерировать более оптимальный код на основе анализа статистики, накопленной в процессе выполнения программы. Для генерации профиля предусмотрен флаг «-C profile-generate», а для использования профиля при сборке — «-C profile-use» (вначале программа собирается с первым флагом, обкатывается и после создания профиля собирается повторно со вторым флагом);

  • При выполнении команды «cargo run», которую удобно использовать для быстрого тестирования консольных приложений, добавлена возможность автоматического выбора исполняемого файла для запуска, в случае если в пакете присутствует несколько исполняемых файлов. Выполняемый по умолчанию файл определяется через директиву default-run в секции [package] с параметрами пакета, которая позволяет обойтись без явного указания имени файла через флаг «—bin» при каждом запуске «cargo run»;
  • В пакетный менеджер Cargo интегрирована команда «cargo vendor», ранее поставляемая в виде отдельного пакета. Команда позволяет организовать работу с локальной копией зависимостей — после выполнения «cargo vendor» все исходные тексты зависимостей проекта загружаются с crates.io в локальный каталог, который затем можно использовать для работы без обращения к crates.io (после выполнения команды показывается подсказка по изменению конфигурации для использования каталога при сборках). Указанная возможность уже применяется для организации поставки компилятора rustc с упаковкой всех зависимостей в один архив с релизом;
  • Появилась возможность создания ссылок на варианты перечислений (enum), используя псевдонимы типа (например, в теле функции «fn increment_or_zero(x: ByteOption) можно указывать «ByteOption::None => 0»), конструкции вычисления типов (‹MyType‹..››::вариант => N) или обращения Self (в блоках c &self можно указать «Self::Quarter => 25»);
  • Добавлена возможность создания неименованных констант в макросах. Вместо определения имени элемента в «const» теперь можно использовать символ «_» для динамического выбора неповторяющегося идентификатора, позволяющего избежать конфликта имён при повторном вызове макроса;
  • Добавлена возможность использования атрибута «#[repr(align(N))» с перечислениями (enums), используя синтаксис, аналогичный определению структуры AlignN‹T› с выравниванием и последующему использованию AlignN‹MyEnum›;
  • В разряд стабильных переведена новая порция API, в том числе стабилизированы методы BufReader::buffer, BufWriter::buffer,
    Cell::from_mut,
    Cell::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    Option::xor,
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits и
    slice::copy_within.

Ina theannta sin, is féidir a thabhairt faoi deara tús na tástála an tionscadal Async-std, предлагающего асинхронный вариант стандартной библиотеки Rust (порт библиотеки std, в котором все интерфейсы предложены в версии с async и готовы для использования с синтаксисом async/await).

Foinse: oscailtenet.ru

Add a comment