Релиз языка программирования Rust 1.21
Доступен релиз языка программирования 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» для выбора сразу всех целевых платформ.
© OpenNet