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

30 марта 2018 года

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

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

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

  • Компилятор переведён с кодовой базы LLVM 4 на LLVM 6. В компилятор также добавлена опция "-C lto=val" для выбора типа LTO-оптимизации и целевая платформа "i586-unknown-linux-musl";
  • Предложен новый способ использования выражения "use" для оформления вложенных групп импортирования:

use std::{fs::File, io::Read, path::{Path, PathBuf}};
вместо
use std::fs::File;
use std::io::Read;
use std::path::{Path, PathBuf};

  • Добавлена возможность использования символа "|" для отделения сопоставлений в блоке match:

enum Foo { A, B, C }
fn main() {
let x = Foo::A;
match x {
| Foo::A
| Foo::B = println!("AB"),
| Foo::C = println!("C"),
}
}

  • Принят и стабилизирован RFC 1358, определяющий атрибут "#[repr(align(x))]", при помощи которого можно указать способ выравнивания данных для структур;
  • В разряд стабильных переведена новая порция API, в том числе std::ptr::NonNull<T> и Location::column;
  • В libcore добавлен модуль time, содержащий тип Duration, который раньше присутствовал только в libstd. Функции from_secs и from_millis теперь определены как "const", т.е. могут использоваться для создания констант:

static MINUTE: Duration = Duration::from_secs(60);

  • Объявлен устаревшим метод net::lookup_host;
  • Документация по умолчанию переведена на использование разметки CommonMark (спецификация для формата Markdown) вместо Hoedown;
  • На сайте doc.rust-lang.org предложено новое руководство "Rust By Example";
  • В пакетном менеджере Cargo команда "cargo new" теперь по умолчанию создаёт исполняемые бинарные файлы (флаг "--bin"), а не библиотеки (для библиотеки теперь нужно явно указывать флаг "--lib"). Команда "cargo new" также теперь не удаляет префикс "rust-" и суффикс "-rs" из имени пакета;
  • Существенно ускорена работа "cargo doc" и операции получения кода зависимостей из Git.

Источники

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

Комментарии

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