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

14 октября 2017 года

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

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

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

  • Обеспечена возможность использования статичных ссылок для литералов (для размещения значений в статичной памяти (куче), вместо слотов стека):

fn main() {
let x: &'static u32 = &0;
}

  • Перед блоком "<...>" теперь допустимо указание опционального разделителя "::" в любом контексте:

my_macro!(Vec<i32>::new); // Нужно было писать раньше
my_macro!(Vec::<i32>::new); // Теперь можно указать и так

  • Библиотека jemalloc обновлена до версии 4.5.0;
  • Обеспечен запуск LLVM параллельно со стадией трансляции при компиляции с несколькими юнитами генератора кода ("-Ccodegen-units=N"). Изменение позволило снизить пиковые скачки в потреблении памяти в процессе сборки;
  • Стабилизированы API std::mem::discriminant, needs_drop и итератор Iterator::for_each;
  • Расширена документация: На сайт doc.rust-lang.org добавлены руководства по rustdoc и std::os. Документация по пакетному менеджеру перенесена в раздел doc.rust-lang.org/cargo;
  • Добавлена возможность установки RLS (Rust Language Server, серверный модуль для интегрированных сред разработки с поддержкой протокола LSP) при помощи команды rustup ("rustup component add rls-preview");
  • В пакетном менеджере Cargo появилась возможность указания нескольких имён пакетов в команде "cargo install". В файл Cargo.toml добавлена секция "[patch]" (позиционируется как замена "[replace]") для переопределения определённых частей в графе зависимостей и обеспечена возможность использования масок в стиле gitignore в полях include и exclude. Добавлена новая опция "--all-targets" для выбора сразу всех целевых платформ.

Источники

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

Комментарии

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