Выпуск языка программирования Rust 1.49
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Опубликован релиз языка системного программирования Rust 1.49, основанного проектом Mozilla. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).
Автоматическое управление памятью в Rust избавляет разработчика от ошибок при манипулировании указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.
Основные новшества:
- Обеспечен первый уровень поддержки 64-разрядных систем ARM (aarch64) в окружениях на базе ядра Linux и Glibs (aarch64-unknown-linux-gnu). Ранее на первом уровне обеспечивалась поддержка архитектур x86_64 (Linux, macOS, Windows) и i686 (Linux, Windows). В окружениях macOS и Windows уровень поддержки ARM 64 доведён до второго уровня (aarch64-apple-darwin, aarch64-pc-windows-msvc). Добавлена поддержка систем Apple, оснащённых новым ARM-чипом M1. Реализован третий уровень поддержки платформы MIPS little-endian (mipsel-unknown-none).
Напомним, что на первом уровне поддержки формируются бинарные сборки, проводится доскональное тестирование и предоставляются наивысшие гарантии поддержки платформы - каждое изменение в компиляторе проверяется выполнением полного тестового набора. На втором уровне формируются бинарные пакеты и гарантируется возможность сборки, но не гарантируется корректная работа бинарных сборок и не проводятся полные тесты функциональности. Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.
- Во встроенном тестовом фреймворке улучшена обработка сценариев проверки многопоточных обработчиков. Вывод тестов, выполняемых в отдельных потоках, теперь не перемешивается с сообщениями тестового фреймворка. Весь диагностический вывод оформлен единым блоком, который сохраняется в лог, но выводится на экран только в случае сбоя или выполнения операции "panic!".
#[test]
fn thready_pass() {
println!("fee");
std::thread::spawn(|| {
println!("fie");
println!("foe");
})
.join()
.unwrap();
println!("fum");
}
❯ cargo test
Compiling threadtest v0.1.0
Finished test [unoptimized + debuginfo] target(s) in 0.52s
Running target/debug/deps/threadtest-40aabfaa345584be
running 1 test
test thready_pass ... FAILED
failures:
---- thready_pass stdout ----
fee
fie
foe
fum
thread 'thready_pass' panicked at 'explicit panic', src/lib.rs:11:5
- В шаблонах реализована возможность привязки по ссылке или перемещению, которая позволяет выборочно заимствовать (borrow) отдельные компоненты типа.
#[derive(Debug)]
struct Person {
name: String,
age: u8,
}
let person = Person {
name: String::from("Alice"),
age: 20,
};
// `name` is moved out of person, but `age` is referenced.
let Person { name, ref age } = person;
println!("{} {}", name, age);
- Разрешено приведение перечислений без вариантов (например, enum Void) в целые типы с использованием оператора "as".
pub enum Void {}
#[no_mangle]
pub fn bar(v: Void) -> usize {
v as usize
}
- В разряд стабильных переведена новая порция API, в том числе стабилизированы методы
slice::select_nth_unstable,
slice::select_nth_unstable_by и
slice::select_nth_unstable_by_key.
- Признак "const", определяющий возможность использования в любом контексте вместо констант, применён в методах
Poll::is_ready и Poll::is_pending.
- В пакетном менеджере Cargo в команду "cargo metadata" добавлена поддержка полей "homepage" и "documentation". Добавлена переменная окружения CARGO_PRIMARY_PACKAGE, которая устанавливается при сборке в rustc корневого пакета, указанного в командной строке. В именах пакетов и целевых платформ разрешено использование масок, например "-p 'serde*'" или "--test '*'". Обеспечена возможность независимой повторяемой пересборки crate-пакетов при помощи команды cargo-package.
- Требования к минимально поддерживаемой версии LLVM подняты до LLVM 9.
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://blog.rust-lang.org/202...)
- OpenNews: Выпуск языка программирования Rust 1.48
- OpenNews: Выпуск операционной системы Redox OS 0.6, написанной на языке Rust
- OpenNews: Релиз Sequoia 1.0, реализации OpenPGP на языке Rust
- OpenNews: Проект Ruffle развивает эмулятор Flash Player, написанный на Rust
- OpenNews: Выпуск Sequoia 0.20.0, реализации OpenPGP на языке Rust
Похожие новости:
- [Программирование, Системное программирование, Промышленное программирование, Rust] Так ли токсичен синтаксис Rust?
- [Open source, Отладка, Angular, Визуализация данных, Rust] Легкие обновления
- [Программирование, Rust, Софт] Операционная система Redox 0.6, написанная на Rust: что нового в выпуске?
- Выпуск операционной системы Redox OS 0.6, написанной на языке Rust
- [Python, Rust] Rust глазами Python-разработчика
- [Программирование, Rust] Rust crashcourse. Итераторы (перевод)
- [Rust] Коллектор логов на старом железе или встречайте Vector 32bit
- [Работа с 3D-графикой, Разработка игр, Игры и игровые приставки] Wasm в Armory Engine
- [JavaScript, Программирование, Node.JS, Rust] Обнаружение лиц в Node.js с использованием Rust и WebAssembly (перевод)
- [Open source, Программирование, Системное программирование, Компиляторы, Rust] Rust 1.48.0: упрощение создания ссылок и псевдонимы поиска (перевод)
Теги для поиска: #_rust
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 11:23
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Опубликован релиз языка системного программирования Rust 1.49, основанного проектом Mozilla. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки). Автоматическое управление памятью в Rust избавляет разработчика от ошибок при манипулировании указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io. Основные новшества:
=========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 11:23
Часовой пояс: UTC + 5