ืžื”ื“ื•ืจื” ืฉืœื™ืฉื™ืช ืฉืœ ืชื™ืงื•ื ื™ื ืขื‘ื•ืจ ืœื™ื‘ืช ืœื™ื ื•ืงืก ืขื ืชืžื™ื›ื” ื‘ืฉืคืช Rust

Miguel Ojeda, ืžื—ื‘ืจ ืคืจื•ื™ืงื˜ Rust-for-Linux, ื”ืฆื™ืข ืืคืฉืจื•ืช ืจื›ื™ื‘ ืฉืœื™ืฉื™ ืœืคื™ืชื•ื— ืžื ื”ืœื™ ื”ืชืงื ื™ื ื‘ืฉืคืช Rust ืขื‘ื•ืจ ืžืคืชื—ื™ ืœื™ื‘ืช ืœื™ื ื•ืงืก ืœืฉืงื•ืœ. ืชืžื™ื›ืช ื—ืœื•ื“ื” ื ื—ืฉื‘ืช ื ื™ืกื™ื•ื ื™ืช, ืืš ื›ื‘ืจ ืกื•ื›ืžื” ืœื”ื›ืœืœื” ื‘ืขื ืฃ ื”-linux-next. ื”ืคื™ืชื•ื— ืžืžื•ืžืŸ ืขืœ ื™ื“ื™ ื’ื•ื’ืœ ื•-ISRG (Internet Security Research Group), ื”ืžื™ื™ืกื“ืช ืืช ืคืจื•ื™ืงื˜ Let's Encrypt ื•ืžืงื“ืžืช HTTPS ื•ืคื™ืชื•ื— ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ืœืฉื™ืคื•ืจ ืื‘ื˜ื—ืช ื”ืื™ื ื˜ืจื ื˜.

ื ื–ื›ื™ืจ ื›ื™ ื”ืฉื™ื ื•ื™ื™ื ื”ืžื•ืฆืขื™ื ืžืืคืฉืจื™ื ืœื”ืฉืชืžืฉ ื‘- Rust ื›ืฉืคื” ืฉื ื™ื™ื” ืœืคื™ืชื•ื— ืžื ื”ืœื™ ื”ืชืงื ื™ื ื•ืžื•ื“ื•ืœื™ ืœื™ื‘ื”. ืชืžื™ื›ืช Rust ืžื•ืฆื’ืช ื›ืืคืฉืจื•ืช ืฉืื™ื ื” ืžื•ืคืขืœืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื•ืื™ื ื” ื’ื•ืจืžืช ืœื›ืš ืฉ- Rust ื ื›ืœืœ ื›ืชืœื•ืช ื‘ื ื™ื™ื” ื ื“ืจืฉืช ืขื‘ื•ืจ ื”ืœื™ื‘ื”. ืฉื™ืžื•ืฉ ื‘-Rust ืœืคื™ืชื•ื— ืžื ื”ืœื™ ื”ืชืงื ื™ื ื™ืืคืฉืจ ืœืš ืœื™ืฆื•ืจ ื“ืจื™ื™ื‘ืจื™ื ื‘ื˜ื•ื—ื™ื ื•ื˜ื•ื‘ื™ื ื™ื•ืชืจ ื‘ืžื™ื ื™ืžื•ื ืžืืžืฅ, ืœืœื ื‘ืขื™ื•ืช ื›ื’ื•ืŸ ื’ื™ืฉื” ืœื–ื™ื›ืจื•ืŸ ืœืื—ืจ ืฉื—ืจื•ืจ, ื”ืคื ื™ื•ืช ืžืฆื‘ื™ืขื•ืช ืืคืกื™ื•ืช ื•ื—ืจื™ื’ื•ืช ืžืื’ืจ.

ื‘ื˜ื™ื—ื•ืช ื–ื™ื›ืจื•ืŸ ืžืกื•ืคืงืช ื‘-Rust ื‘ื–ืžืŸ ื”ืงื•ืžืคื™ืœืฆื™ื” ื‘ืืžืฆืขื•ืช ื‘ื“ื™ืงืช ื”ืชื™ื™ื—ืกื•ืช, ืžืขืงื‘ ืื—ืจ ื‘ืขืœื•ืช ืขืœ ืื•ื‘ื™ื™ืงื˜ ื•ืžืฉืš ื—ื™ื™ ืื•ื‘ื™ื™ืงื˜ (ื”ื™ืงืฃ), ื•ื›ืŸ ื‘ืืžืฆืขื•ืช ื”ืขืจื›ื” ืฉืœ ื ื›ื•ื ื•ืช ื”ื’ื™ืฉื” ืœื–ื™ื›ืจื•ืŸ ื‘ืžื”ืœืš ื‘ื™ืฆื•ืข ืงื•ื“. Rust ืžืกืคืงืช ื’ื ื”ื’ื ื” ืžืคื ื™ ื”ืฆืคืช ืžืกืคืจื™ื ืฉืœืžื™ื, ื“ื•ืจืฉืช ืืชื—ื•ืœ ื—ื•ื‘ื” ืฉืœ ืขืจื›ื™ ืžืฉืชื ื™ื ืœืคื ื™ ื”ืฉื™ืžื•ืฉ, ืžื˜ืคืœืช ื‘ืฉื’ื™ืื•ืช ื˜ื•ื‘ ื™ื•ืชืจ ื‘ืกืคืจื™ื™ื” ื”ืกื˜ื ื“ืจื˜ื™ืช, ืžื™ื™ืฉืžืช ืืช ื”ืจืขื™ื•ืŸ ืฉืœ ื”ืคื ื™ื•ืช ื•ืžืฉืชื ื™ื ื‘ืœืชื™ ื ื™ืชื ื™ื ืœืฉื™ื ื•ื™ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ืžืฆื™ืขื” ื”ืงืœื“ื” ืกื˜ื˜ื™ืช ื—ื–ืงื” ื›ื“ื™ ืœืžื–ืขืจ ืฉื’ื™ืื•ืช ืœื•ื’ื™ื•ืช.

ื”ื’ืจืกื” ื”ื—ื“ืฉื” ืฉืœ ื”ืชื™ืงื•ื ื™ื ืžืžืฉื™ื›ื” ืœื‘ื˜ืœ ืืช ื”ื”ืขืจื•ืช ืฉื”ื•ืขืœื• ื‘ืžื”ืœืš ื”ื“ื™ื•ืŸ ืขืœ ื”ื’ืจืกื” ื”ืจืืฉื•ื ื” ื•ื”ืฉื ื™ื™ื” ืฉืœ ื”ืชื™ืงื•ื ื™ื. ื”ืฉื™ื ื•ื™ื™ื ื”ื‘ื•ืœื˜ื™ื ื‘ื™ื•ืชืจ:

  • ื‘ื•ืฆืข ืžืขื‘ืจ ืœืฉื™ืžื•ืฉ ื‘ืžื”ื“ื•ืจื” ื”ื™ืฆื™ื‘ื” ืฉืœ Rust 1.57 ื‘ืชื•ืจ ืžื”ื“ืจ ื”ืคื ื™ื•ืช ื•ื ื™ืชืŸ ืงื™ืฉื•ืจ ืœืžื”ื“ื•ืจื” ื”ืžื™ื•ืฆื‘ืช ืฉืœ ืฉืคืช Rust 2021. ื‘ืขื‘ืจ, ืชื™ืงื•ื ื™ื ื ืงืฉืจื• ืœืขื ืฃ ื”ื‘ื˜ื ืฉืœ Rust ื•ื”ืฉืชืžืฉื• ื‘ื›ืžื” ืชื›ื•ื ื•ืช ืฉืคื” ืกื•ื•ื’ื• ื›ืœื ื™ืฆื™ื‘ื™ื. ื”ืžืขื‘ืจ ืœืžืคืจื˜ Rust 2021 ืืคืฉืจ ืœื ื• ืœื™ื–ื•ื ืขื‘ื•ื“ื” ื›ื“ื™ ืœื”ื™ืžื ืข ืžืฉื™ืžื•ืฉ ื‘ืชื›ื•ื ื•ืช ืœื ื™ืฆื™ื‘ื•ืช ื›ืืœื” ื‘ืชื™ืงื•ื ื™ื ื›ืžื• const_fn_transmute, const_panic, const_unavailable_unchecked ื•-core_panic ื•-try_reserve.
  • ื”ืคื™ืชื•ื— ืฉืœ ื’ืจืกืช ื”ื”ืงืฆืื” ืฉืœ ืกืคืจื™ื™ืช Rust ื”ื›ืœื•ืœื” ื‘ืชื™ืงื•ื ื™ื ื ืžืฉืš, ื•ืฉื•ื ืชื” ื›ื“ื™ ืœืคื˜ื•ืจ ืืช ืคื•ื ืงืฆื™ื•ืช ื”ืงืฆืืช ื”ื–ื™ื›ืจื•ืŸ ืžื”ื™ืฆื™ืจื” ื”ืืคืฉืจื™ืช ืฉืœ ืžืฆื‘ ื”"ืคืื ื™ืงื”" ื›ืืฉืจ ืžืชืจื—ืฉื•ืช ืฉื’ื™ืื•ืช, ื›ื’ื•ืŸ ื—ืกืจ ื–ื™ื›ืจื•ืŸ. ื”ื’ืจืกื” ื”ื—ื“ืฉื” ืžื™ื™ืฉืžืช ืืช ื”ืืคืฉืจื•ื™ื•ืช "no_rc" ื•-"no_sync" ื›ื“ื™ ืœื”ืฉื‘ื™ืช ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืฉืื™ื ื” ื‘ืฉื™ืžื•ืฉ ื‘ืงื•ื“ Rust Rust, ืžื” ืฉื”ื•ืคืš ืืช ื”ืกืคืจื™ื™ื” ืœืžื•ื“ื•ืœืจื™ืช ื™ื•ืชืจ. ื”ืขื‘ื•ื“ื” ื ืžืฉื›ืช ืขื ืžืคืชื—ื™ alloc ื”ืจืืฉื™ื™ื, ืฉืžื˜ืจืชื” ืœื”ืขื‘ื™ืจ ืืช ื”ืฉื™ื ื•ื™ื™ื ื”ื“ืจื•ืฉื™ื ืœืœื™ื‘ื” ืœืกืคืจื™ื™ื” ื”ืจืืฉื™ืช. ื”ืืคืฉืจื•ืช "no_fp_fmt_parse", ื”ื ื“ืจืฉืช ื›ื“ื™ ืฉื”ืกืคืจื™ื™ื” ืชืขื‘ื•ื“ ื‘ืจืžืช ื”ืงืจื ืœ, ื”ื•ืขื‘ืจื” ืœืกืคืจื™ื™ืช ื”ื‘ืกื™ืก Rust (ื”ืœื™ื‘ื”).
  • ื”ืงื•ื“ ื ื•ืงื” ื›ื“ื™ ืœื”ื™ืคื˜ืจ ืžืื–ื”ืจื•ืช ืžื”ื“ืจ ืืคืฉืจื™ื•ืช ื‘ืขืช ื‘ื ื™ื™ืช ื”ืœื™ื‘ื” ื‘ืžืฆื‘ CONFIG_WERROR. ื‘ืขืช ื‘ื ื™ื™ืช ืงื•ื“ ื‘- Rust, ืžืฆื‘ื™ ืื‘ื—ื•ืŸ ื ื•ืกืคื™ื ืฉืœ ืžื”ื“ืจ ื•ืื–ื”ืจื•ืช Clippy linter ืžื•ืคืขืœื™ื.
  • ื”ืคืฉื˜ื•ืช ืžื•ืฆืขื•ืช ืœืฉื™ืžื•ืฉ ื‘ืงื•ื“ Rust ืขื‘ื•ืจ seqlocks (ื ืขื™ืœื•ืช ืจืฆืฃ), ืงืจื™ืื•ืช ื”ืชืงืฉืจื•ืช ืœื ื™ื”ื•ืœ ืฆืจื™ื›ืช ื—ืฉืžืœ, ื–ื™ื›ืจื•ืŸ ืงืœื˜/ืคืœื˜ (readX/writeX), ืžื˜ืคืœื™ ืคืกื™ืงื•ืช ื•-threads, GPIO, ื’ื™ืฉื” ืœื”ืชืงื ื™ื, ืžื ื”ืœื™ ื”ืชืงื ื™ื ื•ืื™ืฉื•ืจื™ื.
  • ื”ื›ืœื™ื ืœืคื™ืชื•ื— ืžื ื”ืœื™ ื”ืชืงื ื™ื ื”ื•ืจื—ื‘ื• ื•ื›ื•ืœืœื™ื ืžื•ื˜ืงืกื™ื ืฉื ื™ืชื ื™ื ืœืžื™ืงื•ื ืžื—ื“ืฉ, ืื™ื˜ืจื˜ื•ืจื™ ืกื™ื‘ื™ื•ืช, ื—ื™ื‘ื•ืจื™ ืžืฆื‘ื™ืขื™ื ืคืฉื•ื˜ื™ื, ืื‘ื—ื•ืŸ ืชืงืœื•ืช ืžืฉื•ืคืจ ื•ืชืฉืชื™ืช ื‘ืœืชื™ ืชืœื•ื™ื” ื‘ืืคื™ืง ื ืชื•ื ื™ื.
  • ืขื‘ื•ื“ื” ืžืฉื•ืคืจืช ืขื ืงื™ืฉื•ืจื™ื ื‘ืืžืฆืขื•ืช ืกื•ื’ Ref ืคืฉื˜ื ื™, ื”ืžื‘ื•ืกืก ืขืœ ื”-backend refcount_t, ื”ืžืฉืชืžืฉ ื‘-kernel API ื‘ืื•ืชื• ืฉื ืœืกืคื™ืจืช ื”ืคื ื™ื•ืช. ื”ืชืžื™ื›ื” ื‘ืกื•ื’ื™ Arc ื•-Rc ื”ื ื™ืชื ื™ื ื‘ืกืคืจื™ื™ืช alloc ื”ืกื˜ื ื“ืจื˜ื™ืช ื”ื•ืกืจื” ื•ืื™ื ื” ื–ืžื™ื ื” ื‘ืงื•ื“ ื”ืžื•ืคืขืœ ื‘ืจืžืช ื”ืงืจื ืœ (ื”ื•ื›ื ื• ืืคืฉืจื•ื™ื•ืช ืœืกืคืจื™ื™ื” ืขืฆืžื” ื”ืžืฉื‘ื™ืชื•ืช ืกื•ื’ื™ื ืืœื•).
  • ื”ืชื™ืงื•ื ื™ื ื›ื•ืœืœื™ื ื’ืจืกื” ืฉืœ ืžื ื”ืœ ื”ื”ืชืงืŸ PL061 GPIO, ืฉื ื›ืชื‘ ืžื—ื“ืฉ ื‘- Rust. ืชื›ื•ื ื” ืžื™ื•ื—ื“ืช ืฉืœ ื”ื“ืจื™ื™ื‘ืจ ื”ื™ื ืฉื”ื˜ืžืขืชื• ื›ืžืขื˜ ืฉื•ืจื” ืื—ืจ ืฉื•ืจื” ื—ื•ื–ืจืช ืขืœ ื“ืจื™ื™ื‘ืจ ื”-GPIO ื”ืงื™ื™ื ื‘ืฉืคืช C. ืœืžืคืชื—ื™ื ืฉืจื•ืฆื™ื ืœื”ื›ื™ืจ ืืช ื™ืฆื™ืจืช ื“ืจื™ื™ื‘ืจื™ื ื‘-Rust, ื”ื•ื›ื ื” ื”ืฉื•ื•ืื” ืฉื•ืจื” ืื—ืจ ืฉื•ืจื” ื”ืžืืคืฉืจืช ืœื”ื‘ื™ืŸ ืœืื™ืœื• ืžื‘ื ื™ื ื‘-Rust ืžื•ืžืจ ืงื•ื“ C.
  • ื‘ืกื™ืก ื”ืงื•ื“ ื”ืจืืฉื™ ืฉืœ Rust ืื™ืžืฅ ืืช rustc_codegen_gcc, ืงืฆื” ืื—ื•ืจื™ ืฉืœ rustc ืขื‘ื•ืจ GCC ืฉืžื™ื™ืฉื ืงื•ืžืคื™ืœืฆื™ื” ืžืจืืฉ (AOT) ื‘ืืžืฆืขื•ืช ืกืคืจื™ื™ืช libgccjit. ืขื ืคื™ืชื•ื— ื ื›ื•ืŸ ืฉืœ ื”-backend, ื–ื” ื™ืืคืฉืจ ืœืš ืœืืกื•ืฃ ืืช ืงื•ื“ ื”-Rust ื”ืžืขื•ืจื‘ ื‘ืœื™ื‘ื” ื‘ืืžืฆืขื•ืช GCC.
  • ื‘ื ื•ืกืฃ ืœ-ARM, Google ื•-Microsoft, Red Hat ื”ื‘ื™ืขื” ืขื ื™ื™ืŸ ื‘ืฉื™ืžื•ืฉ ื‘ืฉืคืช Rust ื‘ืœื™ื‘ืช ืœื™ื ื•ืงืก. ื ื–ื›ื™ืจ ืฉื’ื•ื’ืœ ืžืกืคืงืช ืชืžื™ื›ื” ื™ืฉื™ืจื” ืœืคืจื•ื™ืงื˜ Rust for Linux, ืžืคืชื—ืช ื™ื™ืฉื•ื ื—ื“ืฉ ืฉืœ ืžื ื’ื ื•ืŸ ื”ืชืงืฉื•ืจืช ื”ื‘ื™ืŸ-ืชื”ืœื™ื›ื™ื ืฉืœ Binder ื‘-Rust, ื•ืฉื•ืงืœืช ืืช ื”ืืคืฉืจื•ืช ืœืขื‘ื“ ื“ืจื™ื™ื‘ืจื™ื ืฉื•ื ื™ื ื‘-Rust. ืžื™ืงืจื•ืกื•ืคื˜ ื”ื—ืœื” ืœื™ื™ืฉื ื“ืจื™ื™ื‘ืจื™ื ืขื‘ื•ืจ Hyper-V ื‘- Rust. ARM ืคื•ืขืœืช ืœืฉื™ืคื•ืจ ืชืžื™ื›ืช ื—ืœื•ื“ื” ืขื‘ื•ืจ ืžืขืจื›ื•ืช ืžื‘ื•ืกืกื•ืช ARM. IBM ื”ื˜ืžื™ืขื” ืชืžื™ื›ืช Rust ื‘ืงืจื ืœ ืขื‘ื•ืจ ืžืขืจื›ื•ืช PowerPC.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”