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

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

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

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

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

  • ื‘ื“ื™ืงื•ืช ืจื›ื™ื‘ื™ื ืœืชืžื™ื›ืช Rust ื ื•ืกืคื• ืœืžืขืจื›ืช ื”ืื™ื ื˜ื’ืจืฆื™ื” ื”ืจืฆื™ืคื” ื”ืžื‘ื•ืกืกืช ืขืœ ื”ื‘ื•ื˜ 0DAY/LKP ื”ื ืชืžืš ืขืœ ื™ื“ื™ ืื™ื ื˜ืœ ื•ื”ื—ืœ ืคืจืกื•ื ื“ื•ื—ื•ืช ื‘ื“ื™ืงื”. ืื ื• ืžืชื›ื•ื ื ื™ื ืœืฉื™ืœื•ื‘ ืชืžื™ื›ืช Rust ื‘ืžืขืจื›ืช ื”ื‘ื“ื™ืงื” ื”ืื•ื˜ื•ืžื˜ื™ืช KernelCI. ื‘ื“ื™ืงื•ืช ื”ืžื‘ื•ืกืกื•ืช ืขืœ GitHub CI ื”ื•ืขื‘ืจื• ืœืฉื™ืžื•ืฉ ื‘ืงื•ื ื˜ื™ื™ื ืจื™ื.
  • ืžื•ื“ื•ืœื™ ืœื™ื‘ืช ื—ืœื•ื“ื” ืžืฉื•ื—ืจืจื™ื ืžื”ืฆื•ืจืš ืœื”ื’ื“ื™ืจ ืืช ืชื›ื•ื ื•ืช ื”ืืจื’ื– "#![no_std]" ื•-"#![ืคื™ืฆ'ืจ(...)]".
  • ื ื•ืกืคื” ืชืžื™ื›ื” ืขื‘ื•ืจ ื™ืขื“ื™ ื”ืจื›ื‘ื” ื‘ื•ื“ื“ื™ื (.o, .s, .ll ื•-.i).
  • ื”ื ื—ื™ื•ืช ืงื•ื“ ืžื’ื“ื™ืจื•ืช ื›ืœืœื™ื ืœื”ืคืจื“ืช ื”ืขืจื•ืช ("//") ื•ืงื•ื“ ืชื™ืขื•ื“ ("///").
  • ื”ืกืงืจื™ืคื˜ is_rust_module.sh ืขื•ื‘ื“ ืžื—ื“ืฉ.
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืคืจื™ืžื™ื˜ื™ื‘ื™ื ืกื˜ื˜ื™ื™ื (ืžืฉืชื ื” ืžืฉื•ืชืฃ) ืกื ื›ืจื•ืŸ ื”ืžื‘ื•ืกืก ืขืœ ื”ื™ื™ืฉื•ื "CONFIG_CONSTRUCTORS".
  • ื ื™ื”ื•ืœ ื”ืžื ืขื•ืœื™ื ืคืฉื•ื˜ ื™ื•ืชืจ: Guard ื•-GuardMut ืžืฉื•ืœื‘ื™ื ื•ืกื•ื’ ืื—ื“ ืขื ืคืจืžื˜ืจื™ื.
  • ื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ืคืจืžื˜ืจื™ื ื ื•ืกืคื™ื ื‘ืขืช ืจื™ืฉื•ื ืžื›ืฉื™ืจื™ื.
  • ื ื•ืกืคื” ื”ื”ืคืฉื˜ื” "RwSemaphore", ืฉืคื•ืขืœืช ื›ืขื˜ื™ืคื” ืขืœ ืžื‘ื ื” rw_semaphore C.
  • ื›ื“ื™ ืœื”ืฉืชืžืฉ ื‘-mmap, ื ื•ืกืคื• ืžื•ื“ื•ืœ mm ื—ื“ืฉ ื•ื”ืคืฉื˜ืช VMA (ืขื˜ื™ืคื” ืขืœ ืžื‘ื ื” vm_area_struct).
  • ืžื ื”ืœ ื”ื”ืชืงืŸ ืฉืœ GPIO PL061 ื”ื•ืขื‘ืจ ืœืฉื™ืžื•ืฉ ื‘ืžืืงืจื• "dev_*!".
  • ื‘ื•ืฆืข ื ื™ืงื•ื™ ื›ืœืœื™ ืฉืœ ื”ืงื•ื“.

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

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