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

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

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

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

  • Π£Π±Ρ€Π°Π½Π° привязка ΠΊ порядку выполнСния ΠΊΠΎΠΌΠ°Π½Π΄ Β«cargo checkΒ» ΠΈ Β«cargo clippyΒ». РаньшС Π²Ρ‹Π·ΠΎΠ² Β«cargo clippyΒ» послС Β«cargo checkΒ» Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ» ΠΊ запуску ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ clippy (linter) ΠΈΠ·-Π·Π° отсутствия раздСлСния кэшСй для Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½Π° ΠΈ порядок Π²Ρ‹Π·ΠΎΠ²Π° Β«cargo clippyΒ» ΠΈ Β«cargo checkΒ» пСрСстал ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
  • αž•αŸ’αž“αŸ‚αž€αžαŸ’αž˜αžΈαž“αŸƒ API αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‘αŸαžšαž‘αŸ…αž”αŸ’αžšαž—αŸαž‘αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžαŸαžšαž—αžΆαž– αžšαž½αž˜αž‘αžΆαŸ†αž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αž˜αžΆαž“αžŸαŸ’αžαŸαžšαž—αžΆαž–αŸ–
    • Arguments::as_str
    • char::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::from_digit
    • char::from_u32_unchecked
    • char::from_u32
    • slice::partition_point
    • str::rsplit_once
    • str::split_once
  • αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ "const" αžŠαŸ‚αž›αž€αŸ†αžŽαžαŸ‹αž›αž‘αŸ’αž’αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž”αž‘αžŽαžΆαž˜αž½αž™αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αžαŸαžš αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαŸ–
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_uppercase
    • char::to_ascii_lowercase
    • char::eq_ignore_ascii_case
    • u8::to_ascii_uppercase
    • u8::to_ascii_lowercase
    • u8::eq_ignore_ascii_case
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° lint-ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° unsafe_op_in_unsafe_fn для опрСдСлСния обрамлСния unsafe-Π±Π»ΠΎΠΊΠ°ΠΌΠΈ unsafe-ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π² unsafe-функциях.
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ mutable-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° массивы Π² Ρ„ΠΎΡ€ΠΌΡƒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Ρ‚ΠΈΠΏ, Ρ‡Ρ‚ΠΎ ΠΈ Ρƒ элСмСнта массива. let mut x: [usize; 2] = [0, 0]; let p = &mut x as *mut usize; let p = &mut x as *const usize;
  • Π’ clippy (linter) Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ 9 Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ.
  • Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π΅ cargo для ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° поля Β«manifest_pathΒ» Π² JSON. Π’ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ crates.io Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° указания ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ лицСнзиях Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ SPDX 3.11.
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ тСстов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ запуск Β«cargo test β€” foo barΒ» запустит всС тСсты, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ маскам Β«fooΒ» ΠΈ Β«barΒ».
  • ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ инструмСнтарий LLVM ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½ Π΄ΠΎ вСрсии LLVM 12.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl ΠΈ powerpc-unknown-openbsd. Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, Π½ΠΎ Π±Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования, ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сборок ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ возмоТности сборки ΠΊΠΎΠ΄Π°.

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

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