Релиз языка программирования Rust 1.23

6 января 2018 года

Состоялся релиз языка программирования Rust 1.23, развиваемого проектом Mozilla. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime.

По структуре язык Rust напоминает C++, но существенно отличается в некоторых деталях реализации синтаксиса и семантики. Автоматическое управление памятью избавляет разработчика от манипулирования указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo, позволяющий получить нужные для программы библиотеки в один клик. Для размещения библиотек поддерживается репозиторий crates.io.

В подготовке нового выпуска приняли участие 158 разработчиков. Основные новшества:

  • В компиляторе проведена работа по исключению излишних операций копирования, что привело к сокращению потребления памяти при использовании rustc на 5-10%;
  • Документация rustdoc переведена на использование разметки CommonMark (спецификация для формата Markdown). Теперь для генерации документации может использоваться не только Hoedown, но и любой совместимый с CommonMark инструментарий. Документация для Cargo, ранее размещённая на сайте doc.crates.io, перемещена в раздел doc.rust-lang.org/cargo.
  • Стандартизирована функциональность типажа (traits) AsciiExt, предоставляющего функции для определения типа символов (u8, char, [u8], str). В новом выпуске предоставляемые типажом методы определены непосредственно для связанных с ними типов и не требуют явного импорта типажа (use std::ascii::AsciiExt).

Например:


let ascii = 'a';
let non_ascii = '❤';
let int_ascii = 97;

assert!(ascii.is_ascii());
assert!(!non_ascii.is_ascii());
assert!(int_ascii.is_ascii());

  • В объектах trait теперь разрешено использование произвольных типажей auto;
  • В разряд стабильных переведена новая порция API, в том числе для типов std::sync::atomic реализован метод From для преобразования из неатомарных типов, например "let x = AtomicBool::from(true)". Добавлена поддержка конструкций FromIterator<()>. Cняты ограничения T: Sync для RwLock<T>: Send;
  • Проведена оптимизация Thread::{park, unpark} и SliceExt::binary_search;
  • В компиляторе для LLVM включен режим TrapUnreachable для уменьшения ситуаций, приводящих к неопределённому поведению программ;
  • В пакетном менеджере Cargo добавлена возможность выполнения команды

"cargo uninstall" для удаления за раз более чем одного пакета. В "cargo check" добавлена поддержка проверки unit-тестов.

Источники

править
 
 
Creative Commons
Эта статья содержит материалы из статьи «Релиз языка программирования Rust 1.23», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.