- 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
Нажмите здесь для печати.