- PVSM.RU - https://www.pvsm.ru -
Команда Rust рада сообщить о выпуске новой версии, 1.49.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Если вы установили предыдущую версию Rust средствами rustup, то для обновления до версии 1.49.0 вам достаточно выполнить следующую команду:
rustup update stable
Если у вас ещё не установлен rustup, вы можете установить его [1] с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub [2].
В этом выпуске мы улучшили поддержку платформ и улучшили фреймворк тестирования. Смотрите подробные примечания к выпуску [2], чтобы узнать о других изменениях, не представленных в данном анонсе.
Компилятор Rust поддерживает широкий спектр платформ [3], но команда Rust не может поддерживать все их на одном уровне. Для более явного указания уровня поддержки каждой платформы, мы используем многоуровневую систему:
Начиная с Rust 1.49.0 платформа aarch64-unknown-linux-gnu передвигается на уровень поддержки Tier 1, предоставляя наши наибольшие гарантии для пользователей Linux, запущенных на 64-bit ARM системах! Мы ожидаем, что данное изменение принесёт пользу для всех: от встраиваемых систем до обычных компьютеров и серверов.
Это важный этап для нашего проекта, поскольку это первая не-x86 платформа, получившая Tier 1 поддержку: мы надеемся, этот шаг откроет путь для большего количества платформ, которые смогу достичь нашего высшего уровня поддержки.
Обратим внимание, что Android не затрагивается данным изменением, так как он представлен другой платформой, находящейся в Tier 2.
В Rust 1.49.0 ещё две платформы достигли Tier 2:
aarch64-apple-darwin предоставляет поддержку Rust на системах Apple M1.aarch64-pc-windows-msvc предоставляет поддержку Rust на 64-bit ARM устройствах, работающих под Windows.Теперь разработчики могут установить обе эти платформы при помощи rustup! Команда Rust не запускает тесты для данных платформ, так что они могут содержать баги или быть нестабильными.
Встроенный в Rust фреймворк для тестирования довольно минималистичен, но это не значит, что его нельзя улучшить! Представьте, что тест выглядит примерно так:
#[test]
fn thready_pass() {
println!("fee");
std::thread::spawn(|| {
println!("fie");
println!("foe");
})
.join()
.unwrap();
println!("fum");
}
Вот как выглядел запуск этого теста до Rust 1.49.0:
❯ cargo +1.48.0 test
Compiling threadtest v0.1.0 (C:threadtest)
Finished test [unoptimized + debuginfo] target(s) in 0.38s
Running targetdebugdepsthreadtest-02f42ffd9836cae5.exe
running 1 test
fie
foe
test thready_pass ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Doc-tests threadtest
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Вы можете заметить, что вывод из потоков напечатался и смешался с выводом самого фреймворка. Было бы неплохо, если бы каждый println! работал также, как тот, что напечатал "fum"? Что ж, таково поведение в Rust 1.49.0 [4]:
❯ cargo test
Compiling threadtest v0.1.0 (C:threadtest)
Finished test [unoptimized + debuginfo] target(s) in 0.52s
Running targetdebugdepsthreadtest-40aabfaa345584be.exe
running 1 test
test thready_pass ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests threadtest
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Но не расстраивайтесь, если тест упадёт, вы увидите всё, что он хотел вывести. Добавив в конец теста panic!, вы можете увидеть примерно такую ошибку:
❯ cargo test
Compiling threadtest v0.1.0 (C:threadtest)
Finished test [unoptimized + debuginfo] target(s) in 0.52s
Running targetdebugdepsthreadtest-40aabfaa345584be.exe
running 1 test
test thready_pass ... FAILED
failures:
---- thready_pass stdout ----
fee
fie
foe
fum
thread 'thready_pass' panicked at 'explicit panic', srclib.rs:11:5
В частности, средство запуска тестов обеспечивает захват вывода и сохраняет его в случае сбоя теста.
В Rust 1.49.0 были стабилизированы следующие 3 функции:
slice::select_nth_unstable [5]slice::select_nth_unstable_by [6]slice::select_nth_unstable_by_key [7]И ещё две функции стали const:
Poll::is_ready [8]Poll::is_pending [9]Смотрите подробные примечания к выпуску [2] для более детальной информации.
Синтаксис [2], пакетный менеджер Cargo [10] и анализатор Clippy [11] также претерпели некоторые изменения.
Множество людей собрались вместе, чтобы создать Rust 1.49.0. Мы не смогли бы сделать это без всех вас. Спасибо [12]!
С любыми вопросами по языку Rust вам смогут помочь в русскоязычном Телеграм-чате [13] или же в аналогичном чате для новичковых вопросов [14]. Если у вас есть вопросы по переводам или хотите помогать с ними, то обращайтесь в чат переводчиков [15].
Так же можете поддержать нас на OpenCollective [16].
Данную статью совместными усилиями перевели andreevlex [17], funkill [18], ozkriff [19], blandger [20] и fan-tom [21].
Автор: RustLangRu
Источник [22]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/360280
Ссылки в тексте:
[1] установить его: https://www.rust-lang.org/install.html
[2] подробные примечания к выпуску на GitHub: https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1490-2020-12-31
[3] широкий спектр платформ: https://doc.rust-lang.org/stable/rustc/platform-support.html
[4] таково поведение в Rust 1.49.0: https://github.com/rust-lang/rust/pull/78227
[5] slice::select_nth_unstable: https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.select_nth_unstable
[6] slice::select_nth_unstable_by: https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.select_nth_unstable_by
[7] slice::select_nth_unstable_by_key: https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.select_nth_unstable_by_key
[8] Poll::is_ready: https://doc.rust-lang.org/stable/std/task/enum.Poll.html#method.is_ready
[9] Poll::is_pending: https://doc.rust-lang.org/stable/std/task/enum.Poll.html#method.is_pending
[10] пакетный менеджер Cargo: https://github.com/rust-lang/cargo/blob/master/CHANGELOG.md#cargo-149-2020-12-31
[11] анализатор Clippy: https://github.com/rust-lang/rust-clippy/blob/master/CHANGELOG.md#rust-149
[12] Спасибо: https://thanks.rust-lang.org/rust/1.49.0/
[13] русскоязычном Телеграм-чате: https://t.me/rustlang_ru
[14] чате для новичковых вопросов: https://t.me/rust_beginners_ru
[15] чат переводчиков: https://t.me/rustlang_ru_translations
[16] OpenCollective: https://opencollective.com/rust-lang-ru
[17] andreevlex: https://habr.com/ru/users/andreevlex/
[18] funkill: https://habr.com/ru/users/funkill/
[19] ozkriff: https://habr.com/ru/users/ozkriff/
[20] blandger: https://habr.com/ru/users/blandger/
[21] fan-tom: https://habr.com/ru/users/fan-tom/
[22] Источник: https://habr.com/ru/post/535508/?utm_source=habrahabr&utm_medium=rss&utm_campaign=535508
Нажмите здесь для печати.