Rust 1.78 เบ›เปˆเบญเบเบญเบญเบเบกเบฒ. เบžเบฒเบชเบฒ Borgo เบ—เบตเปˆเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡เบ‚เบญเบ‡ Go เปเบฅเบฐ Rust

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

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

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

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

  • เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” namespace เปƒเปเปˆ "#[diagnostic]" เป„เบ”เป‰เบ–เบทเบเบชเบฐเป€เปœเบต, เป‚เบ”เบเปƒเบซเป‰เบงเบดเบ—เบตเบเบฒเบ™เบชเป‰เบฒเบ‡เบญเบดเบ”เบ—เบดเบžเบปเบ™เบ•เปเปˆเบ‚เปเป‰เบ„เบงเบฒเบกเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบœเบฐเบฅเบดเบ”เป‚เบ”เบ compiler. เบ—เปเบฒเบญเบดเบ”เปƒเบ™เบŠเปˆเบญเบ‡เปƒเบซเบกเปˆเปเบกเปˆเบ™ "#[diagnostic::on_unimplemented]" เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ›เบฑเบšเปเบ•เปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบ–เบทเบเบ–เบดเป‰เบกเปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ”. #[diagnostic::on_unimplemented( message = "เบ‚เปเป‰เบ„เบงเบฒเบกเบ‚เบญเบ‡เบ‚เป‰เบญเบเบชเบณเบฅเบฑเบš `ImportantTrait<{A}>` เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ™เบณเปƒเบŠเป‰เบชเบณเบฅเบฑเบš `{Self}`", เบ›เป‰เบฒเบเบเบณเบเบฑเบš = "เบ›เป‰เบฒเบเบเบณเบเบฑเบšเบ‚เบญเบ‡เบ‚เป‰เบญเบ", เปเบฒเบเป€เบซเบ” = "เปเบฒเบเป€เบซเบ” 1", เปเบฒเบเป€เบซเบ” = "เปเบฒเบเป€เบซเบ”. 2" )] เบฅเบฑเบเบชเบฐเบ™เบฐ เบฅเบฑเบเบชเบฐเบ™เบฐเบชเบณเบ„เบฑเบ™ {} fn use_my_trait(_: impl เบฅเบฑเบเบชเบฐเบ™เบฐเบชเบณเบ„เบฑเบ™ ) {} fn main() { use_my_trait(String::new()); } error[E32]: เบ‚เปเป‰เบ„เบงเบฒเบกเบ‚เบญเบ‡เบ‚เป‰เบญเบเบชเปเบฒเบฅเบฑเบš `ImportantTtrait `เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบชเปเบฒเบฅเบฑเบš `String` โ€”> src/main.rs:0277:32 | 12 | use_my_trait(String::new()); | โ€”โ€”โ€”โ€” ^^^^^^^^^^^^^ เบ›เป‰เบฒเบเบ‚เบญเบ‡เบ‚เป‰เบญเบ | | | เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป‚เบ”เบโ€‹เบœเบนเบโ€‹เบžเบฑเบ™โ€‹เบ™เปเบฒโ€‹เบชเบฐโ€‹เป€เบซเบ™เบตโ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เป‚เบ—โ€‹เบ™เบตเป‰ | = help: the trait `ImportantTtrait `เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบชเปเบฒเบฅเบฑเบš `String` = เบซเบกเบฒเบเป€เบซเบ”: เบซเบกเบฒเบเป€เบซเบ” 18 = เบซเบกเบฒเบเป€เบซเบ”: เบซเบกเบฒเบเป€เบซเบ” 12
  • เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™เบฅเปˆเบงเบ‡เปœเป‰เบฒเบ—เบตเปˆเปƒเบŠเป‰เบเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบšเปเปˆเบ›เบญเบ”เป„เบžเบ•เบญเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเป€เบฅเบทเปˆเบญเบ™เป„เบ›เบˆเบปเบ™เบฎเบญเบ”เบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”, เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบเบงเบ”เบชเบญเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป‚เบ”เบเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปƒเบ™เป‚เปเบ” "#[cfg(debug_assertions)]". เป€เบžเบทเปˆเบญเบเบฐเบ•เบธเป‰เบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบš, เบ”เบฝเบงเบ™เบตเป‰เบกเบฑเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบเบชเบณเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš เบซเบผเบทเบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เบ”เบตเบšเบฑเบเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.
  • เบžเบถเบ”เบ•เบดเบเปเบฒเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบเบฒเบ™เบˆเบฑเบ”เบ•เปเบฒเปเบซเบ™เปˆเบ‡เบ‚เบญเบ‡ pointers เปเบฅเบฐ slices เบ›เบฐเบˆเบธเบšเบฑเบ™เบชเบฒเบกเบฒเบ”เบ„เบฒเบ”เป€เบ”เบปเบฒเป„เบ”เป‰เปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™เปเบฅเบฐเบ‚เบถเป‰เบ™เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™. เบ•เบปเบงเบŠเบตเป‰เบŸเบฑเบ‡เบŠเบฑเบ™::align_offset, เป€เบŠเบดเปˆเบ‡เบ„เบณเบ™เบงเบ™เบ„เปˆเบฒเบŠเบปเบ”เป€เบŠเบตเบเป€เบžเบทเปˆเบญเบˆเบฑเบ”เบฎเบฝเบ‡เบ•เบปเบงเบŠเบตเป‰, เบ”เบฝเบงเบ™เบตเป‰เบˆเบฐเบชเบปเปˆเบ‡เบเบฑเบš usize::MAX เบžเบฝเบ‡เปเบ•เปˆเบ–เป‰เบฒเบเบฒเบ™เบ”เบณเป€เบ™เบตเบ™เบเบฒเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบง. เบŸเบฑเบ‡เบŠเบฑเบ™เบชเบฐเป„เบฅเป‰::align_to เปเบฅเบฐ slice::align_to_mut เบ—เบฑเบ‡เบชเบญเบ‡, เป€เบŠเบดเปˆเบ‡เบ›เปˆเบฝเบ™เบ›เปˆเบฝเบ‡เป€เบ›เบฑเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™เบ—เบตเปˆเบกเบตเบชเปˆเบงเบ™เบเบฒเบ‡เบ—เบตเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบ™ เปเบฅเบฐเบ›เปˆเบฝเบ‡เบ•เบปเป‰เบ™ เปเบฅเบฐเบ›เบฒเบเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš, เบ•เบญเบ™เบ™เบตเป‰เบชเบปเปˆเบ‡เบ„เบทเบ™เบชเปˆเบงเบ™เบเบฒเบ‡เบ—เบตเปˆเปƒเบซเบเปˆเบ—เบตเปˆเบชเบธเบ”เบชเบฐเป€เปเบต.
  • เบ•เปเปˆเป„เบ›เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเป‚เบญเบ™เป„เบ›เบซเบฒเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡:
    • impl เบญเปˆเบฒเบ™เบชเปเบฒเบฅเบฑเบš &Stdin
    • เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ‚เบญเบ‡โ€‹เบŠเบตโ€‹เบงเบดเบ”โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เปเบกเปˆเบ™โ€‹เบ„เบปเบ‡โ€‹เบ—เบตเปˆ (เบšเปเปˆโ€‹เบ„เบปเบ‡โ€‹เบ—เบตเปˆโ€‹) เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบšเบฒเบ‡ std::error::เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ—เบตเปˆโ€‹เบเปˆเบฝเบงโ€‹เบ‚เป‰เบญเบ‡โ€‹เบเบฑเบšโ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”.
    • เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” impl ?เบ„เปˆเบฒเบ‚เบฐเปœเบฒเบ”เปเบกเปˆเบ™เบญเบฐเบ™เบธเบเบฒเบ”.
    • impl เบˆเบฒเบ เบชเปเบฒเบฅเบฑเบš io:: เบœเบดเบ”เบžเบฒเบ”
  • The Barrier::new() function เป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเปƒเบซเป‰เบ„เบปเบ‡เบ—เบตเปˆเป€เบžเบทเปˆเบญเปƒเบŠเป‰เบเบฑเบšเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ "const" เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เปƒเบ”เบ™เบถเปˆเบ‡เปเบ—เบ™เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆ.
  • เบชเบณเบฅเบฑเบšเปเบžเบฅเบ”เบŸเบญเบกเป€เบ›เบปเป‰เบฒเปเบฒเบ x86_64-pc-windows-msvc, i686-pc-windows-msvc, x86_64-pc-windows-gnu, i686-pc-windows-gnu, x86_64-pc-windows-gnullvm เปเบฅเบฐ i686-pc-windows-gnullvm เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบ Windows 10 เบฎเบธเปˆเบ™.
  • เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบฅเบฐเบ”เบฑเบšเบ—เบตเบชเบฒเบกเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบชเปเบฒเบฅเบฑเบšเป€เบงเบ—เบต wasm32-wasip2, arm64ec-pc-windows-msvc, armv8r-none-eabihf เปเบฅเบฐ loongarch64-unknown-linux-musl platforms. เบฅเบฐเบ”เบฑเบšเบ—เบตเบชเบฒเบกเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™, เปเบ•เปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เบเบฒเบ™เบžเบดเบกเป€เบœเบตเบเปเบœเปˆเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™, เปเบฅเบฐเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”.
  • เบฅเบฐเบ”เบฑเบšเบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเป€เบงเบ—เบตเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ Add wasm32-wasip1 เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”. เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ—เบตเบชเบญเบ‡เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เบ›เบฐเบเบญเบš.
  • เปเบžเบฅเบ”เบŸเบญเบก wasm32-wasi-preview1-threads เบ–เบทเบเบ›เปˆเบฝเบ™เบŠเบทเปˆเป€เบ›เบฑเบ™ wasm32-wasip1-threads.
  • compiler เป„เบ”เป‰เบ›เปˆเบฝเบ™เป„เบ›เปƒเบŠเป‰ LLVM 18. เป€เบกเบทเปˆเบญเปƒเบŠเป‰ LLVM 18 เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ x86-32 เปเบฅเบฐ x86-64, ABI เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ›เบฐเป€เบžเบ” u128 เปเบฅเบฐ i128 เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เปเบ›เบ‡.
  • เบขเบนเปˆเปƒเบ™เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™ Cargo pact, เป€เบงเบตเบŠเบฑเบ™ 4 เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบฅเบฑเบญเบ (lockfile v4) เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบ–เบฝเบ™เบฅเบฐเบžเบฒเบš.
  • Cargo เบกเบต cache เบ—เบปเปˆเบงเป‚เบฅเบเบ—เบตเปˆเบชเบฐเบ–เบฝเบ™เบฅเบฐเบžเบฒเบšเบ—เบตเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™เบซเบผเป‰เบฒเบชเบธเบ”. เปเบ„เบ”เบ–เบทเบเป‚เบฎเบ”เบขเบนเปˆเปƒเบ™ $CARGO_HOME/.global-cache เป‚เบ”เบเปƒเบŠเป‰ SQLite เปเบฅเบฐเบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป€เบžเบทเปˆเบญเบชเบฐเบ—เป‰เบญเบ™เป€เบ–เบดเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบซเบผเป‰เบฒเบชเบธเบ”เบ‚เบญเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบต, เป„เบŸเบฅเปŒ crate, เบšเบฑเบ™เบŠเบตเบฅเบฐเบซเบฑเบ”, git clone, เปเบฅเบฐ git checkout.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก Borgo เบžเบฐเบเบฒเบเบฒเบกเบชเบฐเปเบ”เบ‡เบญเบญเบเบซเบผเบฒเบเบเปˆเบงเบฒเบžเบฒเบชเบฒ Go, เปเบ•เปˆเบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™เบซเบ™เป‰เบญเบเบเบงเปˆเบฒเบžเบฒเบชเบฒ Rust. Borgo เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡ Go เปเบฅเบฐ Rust, เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เปเป‰เบšเบปเบเบœเปˆเบญเบ‡เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบžเบฒเบชเบฒ. เบ•เบปเบงเบขเปˆเบฒเบ‡, Go เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เปเบฅเบฐเบเบปเบ‡เป„เบ›เบเบปเบ‡เบกเบฒ, เปเบ•เปˆเบšเปเปˆเป„เบ”เป‰เปƒเบซเป‰เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ›เบฐเป€เบžเบ”เบ‚เบฑเป‰เบ™เบชเบนเบ‡. เบžเบฒเบชเบฒ Rust เปƒเบซเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ—เบตเปˆเบ›เบญเบ”เป„เบž, เปเบ•เปˆเบกเบตเบ„เบงเบฒเบกเบŠเบฑเบšเบŠเป‰เบญเบ™เป€เบเบตเบ™เป„เบ›. เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™เป„เบ”เป‰เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบ Marco Sampellegrini, เบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡ The Simple Haskell Handbook เปเบฅเบฐเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบฅเบฐเบšเบปเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบ‚เบญเบ‡ Quad CI.

Rust 1.78 เบ›เปˆเบญเบเบญเบญเบเบกเบฒ. เบžเบฒเบชเบฒ Borgo เบ—เบตเปˆเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡เบ‚เบญเบ‡ Go เปเบฅเบฐ Rust

Borgo เปƒเบŠเป‰เบเบฒเบ™เบžเบดเบกเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ, เบ›เบฐเป€เบžเบ” Go-like, เปเบฅเบฐ syntax เบ„เป‰เบฒเบเบ„เบท Rust. semicolons เปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™เปƒเบ™เบฅเบฐเบซเบฑเบ” Borgo. เบฅเบฐเบซเบฑเบ” Borgo เบ–เบทเบเบฅเบงเบšเบฅเบงเบกเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™ Go เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบชเปˆเบงเบ™เบเบฑเบšเปเบžเบฑเบเป€เบเบ” Go เบ—เบตเปˆเบกเบตเบขเบนเปˆ. เบฅเบฐเบซเบฑเบ” compiler เปเบกเปˆเบ™เบ‚เบฝเบ™เปƒเบ™ Rust เปเบฅเบฐเบ–เบทเบเปเบˆเบเบขเบฒเบเบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” ISC. เปƒเบŠเป‰ fmt enum NetworkState { Loading, Failed(int), Success(T), } struct Response { title: string, duration: int, } fn main() { let res = Response { title: โ€œHello worldโ€, duration: 0, } let state = NetworkState.Success(res) เปƒเบซเป‰ msg = เบเบปเบ‡เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐ { NetworkState.Loading => โ€œเบเบฑเบ‡เป‚เบซเบผเบ”เบขเบนเปˆโ€, NetworkState.Failed(code) => fmt.Sprintf(โ€œเป„เบ”เป‰เบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”: %dโ€, เบฅเบฐเบซเบฑเบ”), NetworkState.Success (res) => res.title, } fmt.Println(msg) }

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

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™