Rust 1.67 αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ

αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž—αžΆαžŸαžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ„αž›αž”αŸ†αžŽαž„αž‘αžΌαž‘αŸ… Rust 1.67 αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž‚αž˜αŸ’αžšαŸ„αž„ Mozilla αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž₯αž‘αžΌαžœαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž€αŸ’αžšαŸ„αž˜αž€αžΆαžšαž§αž”αžαŸ’αžαž˜αŸ’αž—αž–αžΈαž’αž„αŸ’αž‚αž€αžΆαžšαž˜αž·αž“αžšαž€αž”αŸ’αžšαžΆαž€αŸ‹αž…αŸ†αžŽαŸαž‰αž―αž€αžšαžΆαž‡αŸ’αž™ Rust Foundation αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αžŸαžΆαž™αŸ” αž—αžΆαžŸαžΆαž•αŸ’αžαŸ„αžαž›αžΎαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž…αž„αž…αžΆαŸ† αž“αž·αž„αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αžŠαžΎαž˜αŸ’αž”αžΈαžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αž“αžΌαžœαž—αžΆαž–αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαž“αŸƒαž€αžΆαžšαž„αžΆαžšαžαŸ’αž–αžŸαŸ‹ αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αž‡αŸ€αžŸαžœαžΆαž„αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαž˜αžΌαž›αžŸαŸ†αžšαžΆαž˜ αž“αž·αž„αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš (αž˜αŸ‰αŸ„αž„αžšαžαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž‘αŸ…αž‡αžΆαž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž“αž·αž„αž€αžΆαžšαžαŸ‚αž‘αžΆαŸ†αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš)αŸ”

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžšαž”αžŸαŸ‹ Rust αž‡αž½αž™αžŸαž„αŸ’αžšαŸ’αž‚αŸ„αŸ‡αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž–αžΈαž€αŸ†αž αž»αžŸαž“αŸ…αž–αŸαž›αžšαŸ€αž”αž…αŸ†αž‘αŸ’αžšαž“αž·αž… αž“αž·αž„αž€αžΆαžšαž–αžΆαžšαž–αžΈαž”αž‰αŸ’αž αžΆαžŠαŸ‚αž›αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αžŸαžΆαžšαž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž€αž˜αŸ’αžšαž·αžαž‘αžΆαž” αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαžαŸ†αž”αž“αŸ‹αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ„αŸ‡αž›αŸ‚αž„ αž€αžΆαžšαž–αž“αŸ’αž™αžΆαžšαž‘αŸ’αžšαž“αž·αž…αž…αž„αŸ’αž’αž»αž›αž‘αž‘αŸ αž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαžŸαž…αŸ†αžŽαž»αŸ‡αŸ”αž›αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž…αŸ‚αž€αž…αžΆαž™αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ αž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž€αžŸαžΆαž„ αž“αž·αž„αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™ αž‚αž˜αŸ’αžšαŸ„αž„αž’αž—αž·αžœαžŒαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž‰αŸ’αž…αž”αŸ‹αž‘αŸ†αž“αž·αž‰αŸ” αžƒαŸ’αž›αžΆαŸ†αž„ crates.io αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž„αŸ’αž αŸ„αŸ‡αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αŸ”

αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸƒαž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž‡αžΌαž“αž“αŸ…αž€αŸ’αž“αž»αž„ Rust αž“αŸ…αž–αŸαž›αž…αž„αž€αŸ’αžšαž„αžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž―αž€αžŸαžΆαžšαž™αŸ„αž„ αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαžŠαžΆαž“αž“αŸƒαž—αžΆαž–αž‡αžΆαž˜αŸ’αž…αžΆαžŸαŸ‹αžœαžαŸ’αžαž» αž€αžΆαžšαžαžΆαž˜αžŠαžΆαž“αž’αžΆαž™αž»αž€αžΆαž›αžšαž”αžŸαŸ‹αžœαžαŸ’αžαž» (αžœαž·αžŸαžΆαž›αž—αžΆαž–) αž“αž·αž„αž€αžΆαžšαžœαžΆαž™αžαž˜αŸ’αž›αŸƒαž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸƒαž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž’αŸ†αž‘αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαžŠαŸ” αž…αŸ’αžšαŸ‚αŸ‡αž€αŸαž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž€αžΆαžšαž–αžΆαžšαž”αŸ’αžšαž†αžΆαŸ†αž„αž“αžΉαž„αž…αŸ†αž“αž½αž“αž‚αžαŸ‹αž›αžΎαžŸαž…αŸ†αžŽαž»αŸ‡ αž‘αžΆαž˜αž‘αžΆαžšαž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž“αŸƒαžαž˜αŸ’αž›αŸƒαž’αžαŸαžšαž˜αž»αž“αž–αŸαž›αž”αŸ’αžšαžΎ αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αŸ†αž αž»αžŸαž”αžΆαž“αž”αŸ’αžšαžŸαžΎαžšαž‡αžΆαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš αž’αž“αž»αžœαžαŸ’αžαž‚αŸ„αž›αž‚αŸ†αž“αž·αžαž“αŸƒαžŸαŸαž…αž€αŸ’αžαžΈαž™αŸ„αž„αžŠαŸ‚αž›αž˜αž·αž“αž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αžΆαž“ αž“αž·αž„αž’αžαŸαžšαžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαžœαžΆαž™αž’αž€αŸ’αžŸαžšαž‹αž·αžαž·αžœαž“αŸ’αžαžαŸ’αž›αžΆαŸ†αž„ αžŠαžΎαž˜αŸ’αž”αžΈαž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αŸ†αž αž»αžŸαž‘αžΌαž‡αžΈαžαž›αŸ”

αž€αžΆαžšαž…αŸ’αž“αŸƒαž”αŸ’αžšαžŒαž·αžαžŸαŸ†αžαžΆαž“αŸ‹αŸ—αŸ–

  • Для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ async с Future::Output Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ указания Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ Β«#[must_use]Β», Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΡ… Π²Ρ‹Π²ΠΎΠ΄ прСдупрСТдСния Π² случаС игнорирования Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ошибки, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ функция ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ значСния, Π° Π½Π΅ Π²Π΅Ρ€Π½Ρ‘Ρ‚ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().await; } warning: unused output of future returned by `bar` that must be used β€”> src/lib.rs:5:5 | 5 | bar().await; | ^^^^^^^^^^^ | = note: `#[warn(unused_must_use)]` on by default
  • ОбновлСна рСализация FIFO-ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ std::sync::mpsc (multi-producer single-consumer), которая ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° Π½Π° использованиС модуля crossbeam-channel с сохранСниСм ΠΏΡ€Π΅ΠΆΠ½Π΅Π³ΠΎ API. Новая рСализация отличаСтся Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ряда ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π±ΠΎΠ»Π΅Π΅ высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ΠΌ сопровоТдСния ΠΊΠΎΠ΄Π°.
  • αž•αŸ’αž“αŸ‚αž€αžαŸ’αž˜αžΈαž“αŸƒ API αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαž‘αŸ…αž”αŸ’αžšαž—αŸαž‘αž“αŸƒαžŸαŸ’αžαŸαžšαž—αžΆαž– αžšαž½αž˜αž‘αžΆαŸ†αž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž αž“αž·αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž›αž€αŸ’αžαžŽαŸˆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αž˜αžΆαž“αžŸαŸ’αžαŸαžšαž—αžΆαž–αŸ–
    • {integer}::checked_ilog
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {integer}::ilog
    • {integer}::ilog2
    • {integer}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • NonZero*::BITS
  • αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ "const" αžŠαŸ‚αž›αž€αŸ†αžŽαžαŸ‹αž›αž‘αŸ’αž’αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž”αž‘αžŽαžΆαž˜αž½αž™αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αžαŸαžš αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„αž˜αž»αžαž„αžΆαžšαŸ–
    • char::from_u32
    • char:: from_digit
    • char::to_digit
    • core::char::from_u32
    • core::char::from_digit
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ для использования Rust Π² ядрС Linux (linuxkernel), Π° Ρ‚Π°ΠΊΠΆΠ΅ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ Sony PlayStation 1 (mipsel-sony-psx), PowerPC с AIX (powerpc64-ibm-aix), QNX Neutrino RTOS (aarch64-unknown-nto-qnx710, x86_64-pc-nto-qnx710). Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, Π½ΠΎ Π±Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования, ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сборок ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ возмоТности сборки ΠΊΠΎΠ΄Π°.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ ARM ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ язык Rust для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ядра Linux, собираСмых для систСм Π½Π° Π±Π°Π·Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ AArch64.

αž”αŸ’αžšαž—αž–: opennet.ru

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹