เบเบฒเบ™เบ›เปˆเบญเบ Rust 1.81: เบญเบธเบ›เบฐเบชเบฑเบเบ•เปเปˆเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡ Rust Core Linux

เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ—เบตเปˆเบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ—เบปเปˆเบงเป„เบ› Rust 1.81, เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเป‚เบ„เบ‡เบเบฒเบ™ Mozilla เปเบ•เปˆเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เบญเบธเบ›เบฐเบ–เปเบฒเบ‚เบญเบ‡เบญเบปเบ‡เบเบฒเบ™เป€เบญเบเบฐเบฅเบฒเบ”เบ—เบตเปˆเบšเปเปˆเบซเบงเบฑเบ‡เบœเบปเบ™เบเปเบฒเป„เบฅ Rust Foundation, เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒ. เบžเบฒเบชเบฒเบ—เบตเปˆเป€เบ™เบฑเป‰เบ™เปƒเบชเปˆเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเปเบฅเบฐเบชเบฐเบซเบ™เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบทเปˆเบญเบšเบฑเบ™เบฅเบธเบ„เบงเบฒเบกเบ‚เบฐเบซเบ™เบฒเบ™เบ‚เบญเบ‡เบงเบฝเบเบชเบนเบ‡เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเปเบฅเบฐเป€เบงเบฅเบฒเปเบฅเปˆเบ™ (runtime เบซเบผเบธเบ”เบฅเบปเบ‡เป€เบ›เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เปเบฅเบฐเบเบฒเบ™เบฎเบฑเบเบชเบฒเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™).

เบงเบดเบ—เบตเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ‚เบญเบ‡ Rust เบŠเปˆเบงเบเบ›เบฐเบขเบฑเบ”เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบˆเบฒเบเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ manipulating pointers เปเบฅเบฐเบ›เป‰เบญเบ‡เบเบฑเบ™เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒ, เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ›เบปเบ”เบ›เปˆเบญเบ, dereferencing null pointers, buffer overruns, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เป€เบžเบทเปˆเบญเปเบˆเบเบขเบฒเบเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”, เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบฅเบฐเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช, เป‚เบ„เบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบŠเบธเบ”เบชเบดเบ™เบ„เป‰เบฒ. เบ„เบฑเบ‡เป€เบเบฑเบš crates.io เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบžเบฒเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”.

เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปเบกเปˆเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบขเบนเปˆเปƒเบ™ Rust เปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบกเป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡, เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธ, เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบญเบฒเบเบธเบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธ (เบ‚เบญเบšเป€เบ‚เบ”), เปเบฅเบฐเบเบฒเบ™เบ›เบฐเป€เบกเบตเบ™เบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”. Rust เบเบฑเบ‡เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™ overflows integer, เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบšเบฑเบ‡เบ„เบฑเบšเบ‚เบญเบ‡เบ„เปˆเบฒเบ•เบปเบงเปเบ›เบเปˆเบญเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰, เบˆเบฑเบ”เบเบฒเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒเปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เบ™เปเบฒเปƒเบŠเป‰เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡ immutable เปเบฅเบฐเบ•เบปเบงเปเบ›เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบžเบดเบกเบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบขเปˆเบฒเบ‡เบกเบตเป€เบซเบ”เบœเบปเบ™.

เบ™เบฐเบงเบฑเบ”เบ•เบฐเบเปเบฒเบ•เบปเป‰เบ™เบ•เป:

  • เบซเบผเบฑเบ::error::เบฅเบฑเบเบชเบฐเบ™เบฐเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”, เป€เบŠเบดเปˆเบ‡เบเปเบฒเบ™เบปเบ”เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบชเบฐเปเบ”เบ‡, เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบ–เบฝเบ™เบฅเบฐเบžเบฒเบš. เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เปƒเบŠเป‰เบฅเบฑเบเบชเบฐเบ™เบฐ Error เบ”เบฝเบงเปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ•เปˆเบฒเบ‡เป†, เป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก, เบฅเบงเบกเบ—เบฑเบ‡เปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเบšเปเปˆเบ•เบดเบ”เบเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เป‚เบ”เบเปƒเบŠเป‰เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ "#![no_std]".
  • เบŸเบฑเบ‡เบŠเบฑเบ™เบเบฒเบ™เบˆเบฑเบ”เบฎเบฝเบ‡เปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ เปเบฅเบฐ เบšเปเปˆเบชเบฐเบ–เบฝเบ™เปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เป„เบ›เปƒเบŠเป‰เบฅเบฐเบšเบปเบšเบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเปƒเปเปˆเบ—เบตเปˆเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบชเบนเบ‡เบ‚เบถเป‰เบ™ เปเบฅเบฐเป€เบงเบฅเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบ•เปˆเบณเบเบงเปˆเบฒ. เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบดเบ—เบตเบเบฒเบ™เบˆเบฑเบ”เบฎเบฝเบ‡เปƒเบซเบกเปˆ, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบเบงเบ”เบžเบปเบšเบ›เบฐเป€เบžเบ” Ord เบ—เบตเปˆเบ–เบทเบเบเปเบฒเบ™เบปเบ”เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เปเบฅเบฐเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ” ( panic) เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบเบธเปˆเบกเบ‚เปเป‰เบกเบนเบ™เปเบšเบšเบชเบธเปˆเบก.
  • Linter เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเปƒเบซเบกเปˆ "เบ„เบฒเบ”เบซเบงเบฑเบ‡" ("#[expect (lint)]"), เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเบงเบ”เบชเบญเบšเป„เบ”เป‰เบงเปˆเบฒเบเบฒเบ™เบเบงเบ”เบชเบญเบšเป„เบ”เป‰เบชเปเบฒเป€เบฅเบฑเบ”เปเบฅเบฐเบชเบฐเปเบ”เบ‡เบ„เปเบฒเป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบšเปเปˆเบชเปเบฒเป€เบฅเบฑเบ” (เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เบซเบผเบทเบ›เบดเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบš). เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญเป‚เบญเบ™เบเป‰เบฒเบเบ–เบฒเบ™เบฅเบฐเบซเบฑเบ”เป€เบžเบทเปˆเบญเปƒเบŠเป‰เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ‚เบญเบ‡ Clippy's undocumented_unsafe_blocks, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบฐเบšเบธ "#[expect(clippy::undocumented_unsafe_blocks)]" เป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบšเบฅเบฑเบญเบเบ—เบตเปˆเบšเปเปˆเบ›เบญเบ”เป„เบžเบ—เบฑเบ‡เปเบปเบ”เบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™. Clippy เบเบฑเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ” clippy::allow_attributes เปเบฅเบฐ clippy::allow_attributes_without_reason checks, เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เปเบ—เบ™เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” "#[allow]" เบ”เป‰เบงเบ "#[expect(lint)]".
  • เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เป€เบซเบ”เบœเบปเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบฅเบฐเบ”เบฑเบš (lint) เป„เบ”เป‰เบ–เบทเบเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰, เปƒเบซเป‰เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบซเบกเปˆเบเปˆเบฝเบงเบเบฑเบšเป€เบซเบ”เบœเบปเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบเบฒเบ™เบเบงเบ”เบชเบญเบšเป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบœเบปเบ™เบœเบฐเบฅเบดเบ”เป€เบ›เบฑเบ™เบ‚เปเป‰เบ„เบงเบฒเบก compiler. เบ•เบปเบงเบขเปˆเบฒเบ‡: #![deny(clippy::float_arithmetic, เป€เบซเบ”เบœเบปเบ™ = โ€œเบšเปเปˆเบฎเบญเบ‡เบฎเบฑเบšเบฎเบฒเบ”เปเบง floatโ€)]
  • เบžเบฒเบเบชเปˆเบงเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡ API เป„เบ”เป‰เบ–เบทเบเบเป‰เบฒเบเป„เบ›เบขเบนเปˆเปƒเบ™เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡, เบฅเบงเบกเบ—เบฑเบ‡เบงเบดเบ—เบตเบเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฑเบเบชเบฐเบ™เบฐเบ•เปˆเบฒเบ‡เป†เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡:
    • เบซเบผเบฑเบ:: เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”
    • hint::assert_unchecked
    • fs::เบกเบตเบขเบนเปˆ
    • AtomicBool::fetch_not
    • เป„เบฅเบเบฐเป€เบงเบฅเบฒ::abs_diff
    • IoSlice:: เบฅเปˆเบงเบ‡เบซเบ™เป‰เบฒ
    • IoSlice::advance_slices
    • IoSliceMut::เบฅเปˆเบงเบ‡เปœเป‰เบฒ
    • IoSliceMut::advance_slices
    • เบ‚เปเป‰เบกเบนเบ™ PanicHook
    • PanicInfo::เบ‚เปเป‰เบ„เบงเบฒเบก
    • เบ‚เปเป‰เบ„เบงเบฒเบก Panic

    เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ "const", เป€เบŠเบดเปˆเบ‡เบเปเบฒเบ™เบปเบ”เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เปƒเบ”เบเปเปˆเบ•เบฒเบกเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆ, เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆ:

    • char::from_u32_unchecked (เบŸเบฑเบ‡เบŠเบฑเบ™)
    • char::from_u32_unchecked (เบงเบดเบ—เบตเบเบฒเบ™)
    • Cstr::count_bytes
    • CSstr::from_ptr

    เบ›เบฐเป€เบžเบ” std::panic::PanicInfo เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เบŠเบทเปˆเป€เบ›เบฑเบ™ std::panic::PanicHookInfo (เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ‚เบญเบ‡เบŠเบทเปˆเป€เบเบปเปˆเบฒเบ–เบทเบเบฎเบฑเบเบชเบฒเป„เบงเป‰, เปเบ•เปˆเบˆเบฒเบเบชเบฐเบšเบฑเบšเบ•เปเปˆเป„เบ›เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™เบˆเบฐเบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบกเบตเบเบฒเบ™เป€เบ•เบทเบญเบ™). เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบซเบผเบฑเบ::panic::PanicInfo เบˆเบฐเบเบฑเบ‡เบ„เบปเบ‡เบขเบนเปˆ, เปเบ•เปˆเบˆเบฐเบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เบเบฒเบ™เปเบเบเบ›เบฐเป€เบžเบ”เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปƒเบ™เบžเบงเบเบกเบฑเบ™เบ—เบตเปˆเบชเบฐเป€เบžเบฒเบฐเบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ‚เบญเบ‡ snd เปเบฅเบฐ no_std.

  • เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เป„เบ›เบชเบนเปˆ C-unwind ABI ('extern "C-unwind"') เป„เบ”เป‰เบ–เบทเบเบชเปเบฒเป€เบฅเบฑเบ”, เป€เบŠเบดเปˆเบ‡เปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบ ABI เป‚เบ”เบเบšเปเปˆเบกเบต "-unwind" suffix ('extern "C"') เป‚เบ”เบเบเบฒเบ™เบฎเบฑเบเบชเบฒเบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบ›เบญเบ”เป„เบžเบ–เป‰เบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™ unwinding ), เบเบฐเบ•เบธเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบฑเบ”เบ‚เป‰เบญเบ‡เบซเบผเบทเบเบฒเบ™เบเบปเบเป€เบงเบฑเป‰เบ™เปเบšเบš C++ เบ–เบทเบเบ–เบดเป‰เบก, เบ‚เป‰เบฒเบกเบ‚เบญเบšเป€เบ‚เบ” ABI (เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบ—เบตเปˆเบ–เบทเบเบ–เบดเป‰เบกเปƒเบ™เบฅเบฐเบซเบฑเบ”เปƒเบ™เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบกเบซเบ™เบถเปˆเบ‡เบ–เบทเบเบเบปเบเป€เบฅเบตเบเป‚เบ”เบเบเบฒเบ™เปเบ•เบฐเปƒเบชเปˆ stack เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบฅเบฐเบซเบฑเบ”เปƒเบ™เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบกเบญเบทเปˆเบ™). เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เบ›เปˆเบญเบ Rust 1.81, 'extern "C"' ABI เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป€เบžเบทเปˆเบญ crash เปƒเบ™ undetected unwinding.
  • เบฅเบฐเบ”เบฑเบšเบ—เบตเบชเบฒเบกเบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก i686-unknown-redox, xtensa-esp32-none-elf, xtensa-esp32s2-none-elf, xtensa-esp32s3-none-elf, xtensa-esp32-espidf, xtensa-esp32s2 -espidf, xtensa- esp32s3-espidf. เบฅเบฐเบ”เบฑเบšเบ—เบตเบชเบฒเบกเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™, เปเบ•เปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เบเบฒเบ™เป€เบœเบตเบเปเบœเปˆเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™, เบซเบผเบทเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบฅเบฐเบซเบฑเบ”เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เป„เบ”เป‰.
  • เบฅเบฐเบ”เบฑเบšเบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเป€เบงเบ—เบตเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ loongarch64-unknown-linux-musl เปเบฅเบฐ arm64ec-pc-windows-msvc เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”. เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ—เบตเบชเบญเบ‡เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เบ›เบฐเบเบญเบš.
  • เป„เบ› Linux-เบฅเบฐเบšเบปเบšเบ•เปˆเบฒเบ‡เป†เปƒเบ™เปเบžเบฅเบ”เบŸเบญเบก LoongArch เปเบกเปˆเบ™เบกเบฒเบžเป‰เบญเบกเบเบฑเบšเบŠเบธเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบท เปเบฅเบฐ เบ•เบปเบงเบชเป‰เบฒเบ‡เป‚เบ›เบฃเป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบปเบกเบšเบนเบ™.
  • เปเบเป‰เป„เบ‚เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆ (CVE-2024-43402) เปƒเบ™ std::process::Command เบ—เบตเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเปเบžเบฅเบ”เบŸเบญเบกเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. Windows เปเบฅเบฐ เบเบณเบˆเบฑเบ”เบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบชเบณเบฅเบฑเบšเบเบฒเบ™เปƒเบŠเป‰เบ›เบฐเป‚เบซเบเบ”เบˆเบฒเบเบŠเปˆเบญเบ‡เป‚เบซเบงเปˆ BatBadBut เบ—เบตเปˆเบ–เบทเบเปเบเป‰เป„เบ‚เบเปˆเบญเบ™เปœเป‰เบฒเบ™เบตเป‰, เป€เบŠเบดเปˆเบ‡เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบžเบดเป€เบชเบ”เป€เบกเบทเปˆเบญเปƒเบŠเป‰ Command::arg เปเบฅเบฐ Command::args calls, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบญเบญเบเปเบšเบšเบกเบฒเป€เบžเบทเปˆเบญเบชเบปเปˆเบ‡เบญเบฒเบเบดเบงเป€เบกเบฑเบ™เป„เบ›เบซเบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป‚เบ”เบเบเบปเบ‡เป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เบ›เบฐเบกเบงเบ™เบœเบปเบ™เป‚เบ”เบเบ•เบปเบงเปเบ›เบ„เบณเบชเบฑเปˆเบ‡. เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เป€เบกเบทเปˆเบญเปƒเบŠเป‰เบชเบฐเบ„เบฃเบดเบš bat เปเบฅเบฐ cmd, เบ‚เบฐเบšเบงเบ™เบเบฒเบ™ cmd.exe เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰, เป€เบŠเบดเปˆเบ‡เบกเบตเป€เบซเบ”เบœเบปเบ™เบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบชเบณเบฅเบฑเบšเบเบฒเบ™เปเบเบเบญเบฒเบเบดเบงเป€เบกเบฑเบ™. เบเบฒเบ™ bypass เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒ Windows เบฅเบถเบšเบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡ เปเบฅเบฐ เบˆเบธเบ”เบ™เบณเปœเป‰เบฒเปƒเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡, เป€เบŠเบฑเปˆเบ™: เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบ™เบฒเบกเบชเบฐเบเบธเบ™ ".bat." เบˆเบฐเบ–เบทเบเบ›เบฐเบกเบงเบ™เบœเบปเบ™เป€เบ›เบฑเบ™ ".bat".

เบชเบดเปˆเบ‡เบ—เบตเปˆเปœเป‰เบฒเบชเบฑเบ‡เป€เบเบ”เบญเบตเบเบขเปˆเบฒเบ‡เปœเบถเปˆเบ‡เบ„เบทเบเบฒเบ™เบญเบญเบเบˆเบฒเบเบ•เบณเปเปœเปˆเบ‡เบ‚เบญเบ‡ Wedson Almeida Filho เปƒเบ™เบ–เบฒเบ™เบฐเบœเบนเป‰เบฎเบฑเบเบชเบฒเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡ Rust เบชเบณเบฅเบฑเบš Linux, เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” kernel Linux เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบณเบฅเบฑเบšเบžเบฒเบชเบฒ Rust. เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบญเบญเบเป„เบ›เบ‚เบญเบ‡ Wadson, เป‚เบ„เบ‡เบเบฒเบ™เบเบฑเบ‡เบกเบตเบœเบนเป‰เบฎเบฑเบเบชเบฒเบชเบญเบ‡เบ„เบปเบ™เบ„เบท: Miguel Ojeda, เบœเบนเป‰เบ‚เบฝเบ™ เปเบฅเบฐ เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบซเบผเบฑเบเบ‚เบญเบ‡ Rust-for-Linux, เปเบฅเบฐ Alex Gaynor, เบญเบฐเบ”เบตเบ”เบœเบนเป‰เบญเบณเบ™เบงเบเบเบฒเบ™เบ‚เบญเบ‡เบกเบนเบ™เบ™เบดเบ—เบดเบŠเบญเบšเปเบง Python, เบœเบนเป‰เบ—เบตเปˆเป„เบ”เป‰เบ›เปˆเบฝเบ™เบˆเบธเบ”เบชเบธเบกเบ‚เบญเบ‡เบฅเบฒเบงเป„เบ›เบชเบนเปˆเบเบฒเบ™เบชเบปเปˆเบ‡เป€เบชเบตเบก Rust. เบœเบนเป‰เบฎเบฑเบเบชเบฒเบ—เบตเปˆเบญเบญเบเป„เบ›, เบœเบนเป‰เบ—เบตเปˆเป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเป‚เบ„เบ‡เบเบฒเบ™เบชเบตเปˆเบ›เบตเบเปˆเบญเบ™, เปเบกเปˆเบ™เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™ Microsoft เปเบฅเบฐเป€เบ›เบฑเบ™เบœเบนเป‰เบ‚เบฝเบ™เป„เบ”เบฃเป€เบงเบตเบ—เบปเบ”เบฅเบญเบ‡เบ—เบตเปˆเบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ EXT2, เบ‚เบฝเบ™เปƒเบ™ Rust. เบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบ‚เบญเบ‡ Almeida เป„เบ”เป‰เบชเบธเบกเปƒเบชเปˆเบเบฒเบ™เบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเบณเบฅเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเปƒเบ™ Rust. เปƒเบ™เบ›เบตเบ™เบตเป‰, Almeida เป„เบ”เป‰เบ›เบฐเบเบญเบšเบชเปˆเบงเบ™เป€เบ‚เบปเป‰เบฒเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ Rust-for-.Linux 17 commits (เบชเบณเบฅเบฑเบšเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบš, Miguel Ojeda เป„เบ”เป‰เป€เบžเบตเปˆเบก 53 commits).

เป€เบซเบ”เบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เบญเบญเบเบˆเบฒเบเบ•เบณเปเปœเปˆเบ‡เปเบกเปˆเบ™เบเบฒเบ™เบ‚เบฒเบ”เบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™ เปเบฅเบฐ เบ„เบงเบฒเบกเบเบฐเบ•เบทเบฅเบทเบฅเบปเป‰เบ™, เป€เบŠเบดเปˆเบ‡เป€เบ„เบตเบเบกเบตเบขเบนเปˆเป€เบžเบทเปˆเบญเบ•เบญเบšเบชเบฐเปœเบญเบ‡เบ•เปเปˆเป€เบฅเบทเปˆเบญเบ‡เป„เบฎเป‰เบชเบฒเบฅเบฐเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡. เบญเบตเบ‡เบ•เบฒเบก Almeida, เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ–เบทเบเบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เปƒเบŠเป‰เบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบซเบผเบฒเบเปƒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบเปˆเบฝเบงเบเบฑเบšเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบšเปเปˆเบชเบณเบ„เบฑเบ™เบ—เบตเปˆเบšเปˆเบญเบ™เบ—เบณเบฅเบฒเบเป€เบ›เบปเป‰เบฒเปเบฒเบเป‚เบ”เบเบฅเบงเบกเบ—เบตเปˆเบชเบณเบ„เบฑเบ™เบเบงเปˆเบฒ. Almeida เบชเบทเบšเบ•เปเปˆเป€เบŠเบทเปˆเบญเบงเปˆเบฒเบญเบฐเบ™เบฒเบ„เบปเบ”เบ‚เบญเบ‡ kernels เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบเบฒเบ™เปƒเบŠเป‰เบžเบฒเบชเบฒเบ—เบตเปˆเบ›เบญเบ”เป„เบžเบ•เปเปˆเบ„เบงเบฒเบกเบˆเบณ, เปเบฅเบฐ เบ–เป‰เบฒเบŠเบธเบกเบŠเบปเบ™เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ Linux เปเบฅเป‰เบงเบˆเบฐเบšเปเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰ Linux เบˆเบฐเบ–เบทเบเบ—เบปเบ”เปเบ—เบ™เป‚เบ”เบ kernel เบญเบทเปˆเบ™เป†, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเบฑเบš Unix เปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™.

เบœเบนเป‰เบชเบฐเปœเบฑเบšเบชเบฐเปœเบนเบ™เป‚เบ„เบ‡เบเบฒเบ™ Rust-for-Linux เป„เบ”เป‰เบ›เบฐเป€เบŠเบตเบ™เบเบฑเบšเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบญเบปเบฒเบŠเบฐเบ™เบฐเบเบฒเบ™เบ•เปเปˆเบ•เป‰เบฒเบ™เบˆเบฒเบเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ kernel เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบปเบšเบเบฒเบ™เบกเบฒเบ”เบปเบ™เบ™เบฒเบ™ เบœเบนเป‰เบ—เบตเปˆเบšเปเปˆเป€เบซเบฑเบ™เบงเปˆเบฒเบกเบตเบ„เบงเบฒเบกเบˆเบณเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเบฎเบฝเบ™เบฎเบนเป‰เบžเบฒเบชเบฒเปƒเปเปˆ. เปƒเบ™เบˆเบปเบ”เปเบฒเบเบฅเบฒเบญเบญเบเบ‚เบญเบ‡เบฅเบฒเบง, Almeida เป„เบ”เป‰เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ™เบณเบชเบฐเป€เปœเบตเบ‚เบญเบ‡ Almeida เบเบฑเบš Kent Overstreet เบ—เบตเปˆLinux "เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ, เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ, เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณ, เปเบฅเบฐ เบเบญเบ‡เบ›เบฐเบŠเบธเบกเบชเบธเบ”เบเบญเบ” BPF" เปเบฅเบฐ เป„เบ”เป‰เบญเบธเบ—เบดเบ”เปƒเบซเป‰เปเบเปˆเบเบฒเบ™เบ™เบณเปƒเบŠเป‰ Rust เบชเบณเบฅเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ. เบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเปƒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ” Rust เป„เบ”เป‰เบ–เบทเบเบงเบดเบžเบฒเบเบงเบดเบˆเบฒเบ™เป‚เบ”เบ Ted Ts'o, เบœเบนเป‰เบ‚เบฝเบ™เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ ext2/ext3/ext4, เบœเบนเป‰เบ—เบตเปˆเป„เบ”เป‰เบ›เบฝเบšเบ—เบฝเบš Rust-for-Linux เบ”เป‰เบงเบเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ—เบตเปˆเบˆเบฐเบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เบ—เบธเบเบ„เบปเบ™เบเบญเบกเบฎเบฑเบšเบชเบฒเบชเบฐเปœเบฒ Rust.

เป€เบžเบทเปˆเบญเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบ•เบฑเป‰เบ‡เปƒเบˆเบ‚เบญเบ‡ Almeida เบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡ wrapper เบ›เบฐเบกเบฒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™ C เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบซเบฑเบ” Rust, Ted Tso เบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒ wrapper เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง inevitably เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบšเบฑเบ™เบซเบฒ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ”เป†เบเบฑเบš C interfaces เปเบฅเบฐ refactoring เบˆเบฐเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบœเบนเบเบกเบฑเบ”เบชเปเบฒเบฅเบฑเบš. Rust เปเบฅเบฐเบฅเบฒเบงเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเปƒเบ™เบฅเบฐเบซเบฑเบ” Rust เปเบฅเบฐเบ•เบดเบ”เบ•เบฒเบกเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบเบฒเบ™เบœเบนเบเบกเบฑเบ” Rust. เบฅเบฐเบซเบฑเบ” C เปเบกเปˆเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡, เปเบฅเบฐเบ–เป‰เบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เบกเบฑเบ™เบ—เปเบฒเบฅเบฒเบเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบเบญเบš Rust, เบกเบฑเบ™เบˆเบฐเบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบ•เบดเบ”เบเบฑเบšเบเบญเบšเบ™เบตเป‰.

Ted เบเบฑเบ‡เป€เบŠเบทเปˆเบญเบงเปˆเบฒเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เบญเบฑเบ™เปƒเบเป‰เบ™เบตเป‰, เบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบชเบณเบฅเบฑเบš Rust เบˆเบฐเบเบฑเบ‡เบ„เบปเบ‡เป€เบ›เบฑเบ™เบญเบฑเบ™เบ”เบฑเบšเบชเบญเบ‡ เปเบฅเบฐ เบšเบฑเบ™เบซเบฒเปƒเบ™เบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบˆเบฐเป€เบ›เบฑเบ™เบžเบฝเบ‡เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเปœเป‰เบฒเป€เบชเบปเป‰เบฒเปƒเบˆเบชเบณเบฅเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ Rust เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.Linux, เปเบฅเบฐเบšเปเปˆเปเบกเปˆเบ™เบชเบณเบฅเบฑเบšเบŠเบธเบกเบŠเบปเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ kernel. เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบšเปเปˆเปเบกเปˆเบ™เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบธเบเบ„เบปเบ™เบกเบตเบ„เบงเบฒเบกเบ•เบฑเป‰เบ‡เปƒเบˆเบ—เบตเปˆเบˆเบฐเบฎเบฝเบ™เบฎเบนเป‰ Rust, เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบฎเบฑเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบฅเบฐเบซเบฑเบ”เบญเบทเปˆเบ™เป†, เบžเบงเบเป€เบ‚เบปเบฒเบˆเบฐเบชเบฒเบกเบฒเบ”เบญเบฑเบšเป€เบ”เบ”เบฅเบฐเบซเบฑเบ” C เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™, เปเบ•เปˆเบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เบเบฒเบ™เบœเบนเบเบกเบฑเบ” Rust เป„เบ”เป‰, เบเป‰เบญเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบฎเบนเป‰ Rust. James Bottomley, เบœเบนเป‰เบฎเบฑเบเบชเบฒเบฅเบฐเบšเบปเบšเบเปˆเบญเบ SCSI, เบเบฑเบ‡เป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒ, เป‚เบ”เบเบเปˆเบฒเบงเบงเปˆเบฒ semantics เบ–เบทเบเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เป€เบ‚เบปเป‰เบฒเปƒเบ™เบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบซเบผเบฒเบเป€เบ—เบปเปˆเบฒเปƒเบ”, เบžเบงเบเบกเบฑเบ™เบเปเปˆเบˆเบฐเบกเบตเบ„เบงเบฒเบกเบšเบญเบšเบšเบฒเบ‡เบซเบผเบฒเบเบ‚เบถเป‰เบ™เปƒเบ™เปเบ‡เปˆเบ‚เบญเบ‡เบเบฒเบ™เบŠเบดเป‰เบ‡เบ‚เปเป‰เบกเบนเบ™.

เปƒเบ™เบ‚เบฐเบ™เบฐเบ”เบฝเบงเบเบฑเบ™, Google, เป€เบŠเบดเปˆเบ‡เปƒเบ™เบ›เบตเบเบฒเบเบ™เบตเป‰เป„เบ”เป‰เบ‚เบฝเบ™เป€เบŸเบตเบกเปเบง pvmfm เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™ เป€เบ„เบทเปˆเบญเบ‡ virtual, เป€เบ›เบตเบ”เบ•เบปเบงเปƒเบ™เปเบžเบฅเบ”เบŸเบญเบก Android, เป„เบ”เป‰เปเบšเปˆเบ‡เบ›เบฑเบ™เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบ™เบฒเบ‡เบ—เบตเปˆเบ„เปˆเบญเบเป†เบฅเบงเบกเบฅเบฐเบซเบฑเบ” Rust เป€เบ‚เบปเป‰เบฒเปƒเบ™เป€เบŸเบตเบกเปเบงเบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเบ—เบตเปˆเบ‚เบฝเบ™เบ”เป‰เบงเบเบžเบฒเบชเบฒ C เบซเบผเบท C++. เบ™เบฒเบ‡เป„เบ”เป‰เบชเบฒเบ—เบดเบ”เบงเบดเบ—เบตเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เป€เบŸเบตเบกเปเบงเป„เบ”เป‰เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเป‚เบ”เบเบเบฒเบ™เบชเป‰เบฒเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบปเบ”เปเบ—เบ™เบ—เบตเปˆเบ„เบทเบเบฑเบ™เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เปœเป‰เบฒเบ—เบตเปˆเบ‚เบฝเบ™เบ”เป‰เบงเบเบžเบฒเบชเบฒ Rust. เป€เบกเบทเปˆเบญเบ™เบณเปƒเบŠเป‰ Rust, เบ™เบฒเบ‡เป„เบ”เป‰เบชเบฐเป€เปœเบตเปƒเบซเป‰เบชเบธเบกเปƒเบชเปˆเบเบฒเบ™เปƒเบŠเป‰ Rust เบชเบณเบฅเบฑเบšเบฅเบฐเบซเบฑเบ”เปƒเปเปˆ เปเบฅเบฐ เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เปœเป‰เบฒเบ—เบตเปˆเบ—เบตเปˆเบชเบณเบ„เบฑเบ™เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบฅเบฐเบซเบฑเบ”เบชเบณเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบกเบนเบ™เบžเบฒเบเบ™เบญเบเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบˆเบฒเบเปเบซเบผเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเปœเป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบท). เป€เบžเบทเปˆเบญเบฅเบงเบกเบฅเบฐเบซเบฑเบ” Rust เปเบฅเบฐ C, เบ™เบฒเบ‡เป„เบ”เป‰เบชเบฐเป€เปœเบตเปƒเบซเป‰เปƒเบŠเป‰เบŠเบดเบกเบ—เบตเปˆเปเบ›เบเบฒเบ™เป‚เบ—เบฅเบฐเบซเบงเปˆเบฒเบ‡ Rust เปเบฅเบฐ C APIs (C API เบ–เบทเบเบชเบปเปˆเบ‡เบญเบญเบเป€เบžเบทเปˆเบญเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบซเบฑเบ” Rust เปเบฅเบฐเปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™), เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เบ„เบทเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบš API เปƒเบ™ Rust เป„เบ”เป‰เป€เบ—เบทเปˆเบญเบฅเบฐเบเป‰เบฒเบง.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เบŠเบทเป‰เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ DDoS, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ VPS VDS ๐Ÿ”ฅ เบŠเบทเป‰เป€เบงเบฑเบšเป„เบŠเบ—เปŒเป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบ”เป‰เบงเบเบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™ DDoS, เป€เบŠเบตเบšเป€เบงเบต VPS VDS | ProHoster