рд░рд╕реНрдЯ рднрд╛рд╖рд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдердирдХреЛ рд╕рд╛рде рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓рдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрдпрд╛рдЪрд╣рд░реВрдХреЛ рдЖрдареМрдВ рд╕рдВрд╕реНрдХрд░рдг

Rust-for-Linux рдкрд░рд┐рдпреЛрдЬрдирд╛рдХрд╛ рд▓реЗрдЦрдХ рдорд┐рдЧреБрдПрд▓ рдУрдЬреЗрдбрд╛рд▓реЗ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрджреНрд╡рд╛рд░рд╛ рд╡рд┐рдЪрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ Rust рднрд╛рд╖рд╛рдорд╛ рдЙрдкрдХрд░рдг рдбреНрд░рд╛рдЗрднрд░рд╣рд░реВ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ v8 рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдЬрд╛рд░реА рдЧрд░реНрдиреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░реЗред рдпреЛ рдкреНрдпрд╛рдЪрд╣рд░реВрдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╣реЛ, рдкрд╣рд┐рд▓реЛ рд╕рдВрд╕реНрдХрд░рдгрд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрджреИ, рд╕рдВрд╕реНрдХрд░рдг рдирдореНрдмрд░ рдмрд┐рдирд╛ рдкреНрд░рдХрд╛рд╢рд┐рддред рд░рд╕реНрдЯ рд╕рдорд░реНрдерди рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдорд╛рдирд┐рдиреНрдЫ, рддрд░ рдкрд╣рд┐рд▓реЗ рдиреИ рд▓рд┐рдирдХреНрд╕-рдЕрд░реНрдХреЛ рд╢рд╛рдЦрд╛рдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░рд┐рдПрдХреЛ рдЫ, 5.20/6.0 рдХреЛ рдкрддрди рд░рд┐рд▓реАрдЬрдорд╛ рдПрдХреАрдХреГрдд рднрдПрдХреЛ рджрд╛рд╡реА рдЧрд░реНрджрдЫ, рд░ рдХрд░реНрдиреЗрд▓ рдЙрдкрдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ рдПрдмреНрд╕реНрдЯреНрд░реНрдпрд╛рд╕рди рддрд╣рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рдХрд╛рдо рд╕реБрд░реБ рдЧрд░реНрди рдкрд░реНрдпрд╛рдкреНрдд рдкрд░рд┐рдкрдХреНрд╡ рдЫ, рд╕рд╛рдереИ рдбреНрд░рд╛рдЗрднрд░рд╣рд░реВ рд▓реЗрдЦрдиред рд░ рдореЛрдбреНрдпреБрд▓рд╣рд░реВред рд╡рд┐рдХрд╛рд╕ Google рд░ ISRG (Internet Security Research Group) рджреНрд╡рд╛рд░рд╛ рд╡рд┐рддреНрдд рдкреЛрд╖рд┐рдд рдЫ, рдЬреЛ Let's Encrypt рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд╕рдВрд╕реНрдерд╛рдкрдХ рд╣реЛ рд░ HTTPS рд░ рдЗрдиреНрдЯрд░рдиреЗрдЯ рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдзрд╛рд░ рдЧрд░реНрди рдкреНрд░рд╡рд┐рдзрд┐рд╣рд░реВрдХреЛ рд╡рд┐рдХрд╛рд╕рд▓рд╛рдИ рдмрдврд╛рд╡рд╛ рджрд┐рдиреНрдЫред

рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрдорд╛:

  • рдЯреБрд▓рдХрд┐рдЯ рд░ рдПрд▓реЛрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдХреЛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг, рддреНрд░реБрдЯрд┐рд╣рд░реВ рджреЗрдЦрд╛ рдкрд░реНрджрд╛ "рдЖрддрдВрдХ" рдЕрд╡рд╕реНрдерд╛рдХреЛ рд╕рдореНрднрд╛рд╡рд┐рдд рдЙрддреНрдкрд╛рджрдирдмрд╛рдЯ рдореБрдХреНрдд, рд░рд╕реНрдЯ рез.ремреи рдХреЛ рд░рд┐рд▓реАрдЬрдХреЛ рд▓рд╛рдЧрд┐ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдПрдХреЛ рдЫред рдкрд╣рд┐рд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рд╕рдВрд╕реНрдХрд░рдгрдХреЛ рддреБрд▓рдирд╛рдорд╛, Rust рдЯреВрд▓рдХрд┐рдЯрд▓реЗ рдХрд░реНрдиреЗрд▓ рдкреНрдпрд╛рдЪрд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рд╣реБрдиреЗ const_fn_trait_bound рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рд╕реНрдерд┐рд░ рдЧрд░реЗрдХреЛ рдЫред
  • рдмрд╛рдЗрдиреНрдбрд┐рдЩ рдХреЛрдбрд▓рд╛рдИ рдЫреБрдЯреНрдЯреИ рдХреНрд░реЗрдЯ рдкреНрдпрд╛рдХреЗрдЬ "рдмрд╛рдЗрдиреНрдбрд┐рдЩреНрд╕" рдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рд▓реЗ рдореБрдЦреНрдп рдкреНрдпрд╛рдХреЗрдЬ "рдХрд░реНрдиреЗрд▓" рдорд╛ рдорд╛рддреНрд░ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рдПрдорд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдгрд▓рд╛рдИ рд╕рд░рд▓ рдмрдирд╛рдЙрдБрдЫред
  • рдореНрдпрд╛рдХреНрд░реЛ "concat_idents!" рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдореНрдпрд╛рдХреНрд░реЛрдХреЛ рд░реВрдкрдорд╛ рдкреБрди: рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ рдЬреБрди concat_idents рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рд╕рдБрдЧ рдмрд╛рдБрдзрд┐рдПрдХреЛ рдЫреИрди рд░ рд╕реНрдерд╛рдиреАрдп рдЪрд░рд╣рд░реВрдорд╛ рд╕рдиреНрджрд░реНрднрд╣рд░реВрдХреЛ рдкреНрд░рдпреЛрдЧрд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
  • "static_assert!" рдореНрдпрд╛рдХреНрд░реЛрд▓рд╛рдИ рдкреБрди: рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ, рд╕реНрдерд┐рд░рддрд╛рдХреЛ рд╕рдЯреНрдЯрд╛ рдХреБрдиреИ рдкрдирд┐ рд╕рдиреНрджрд░реНрднрдорд╛ "core:: assert!()" рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдБрджреИред
  • рдореНрдпрд╛рдХреНрд░реЛ "build_error!" рдореЛрдбреНрдпреБрд▓рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ "RUST_BUILD_ASSERT_{WARN,ALLOW}" рдореЛрдб рд╕реЗрдЯ рд╣реБрдБрджрд╛ рдХрд╛рдо рдЧрд░реНрди рдЕрдиреБрдХреВрд▓рд┐рддред
  • рд╕реЗрдЯрд┐рдЩрд╣рд░реВ "kernel/configs/rust.config" рд╕рдБрдЧ рдЫреБрдЯреНрдЯреИ рдлрд╛рдЗрд▓ рдердкрд┐рдпреЛред
  • рдореНрдпрд╛рдХреНрд░реЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдирдорд╛ рдкреНрд░рд╢реЛрдзрди рдЧрд░рд┐рдПрдХрд╛ "*.i" рдлрд╛рдЗрд▓рд╣рд░реВрд▓рд╛рдИ "*.rsi" рдорд╛ рдкреБрди: рдирд╛рдорд╛рдХрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫред
  • C рдХреЛрдбрдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХрд╛ рднрдиреНрджрд╛ рднрд┐рдиреНрди рдЕрдиреБрдХреВрд▓рди рд╕реНрддрд░рд╣рд░реВрд╕рдБрдЧ рд░рд╕реНрдЯ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдмрдиреНрдж рдЧрд░рд┐рдПрдХреЛ рдЫред
  • fs рдореЛрдбреНрдпреБрд▓ рдердкрд┐рдпреЛ, рдЬрд╕рд▓реЗ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдмрд╛рдЗрдиреНрдбрд┐рдЩрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред Rust рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рд╕рд╛рдзрд╛рд░рдг рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЫред
  • рдкреНрд░рдгрд╛рд▓реА рд▓рд╛рдорд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдХрд╛рд░реНрдпрдХреНрдпреБ рдореЛрдбреНрдпреБрд▓ рдердкрд┐рдпреЛ (work_struct рд░ workqueue_struct рдХрд░реНрдиреЗрд▓ рд╕рдВрд░рдЪрдирд╛рд╣рд░реВрдорд╛ рдмрд╛рдЗрдиреНрдбрд┐рдЩрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ)ред
  • kasync рдореЛрдбреНрдпреБрд▓рдХреЛ рд╡рд┐рдХрд╛рд╕ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рд╡рд┐рдзрд┐рд╣рд░реВ (async) рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд╕рд╛рде рдЬрд╛рд░реА рд░рд╣реНрдпреЛред Rust рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдХреЛрд░-рд╕реНрддрд░ TCP рд╕рд░реНрднрд░рдХреЛ рдЙрджрд╛рд╣рд░рдг рдердкрд┐рдпреЛред
  • [рдереНрд░реЗрдбреЗрдб]рд╣реНрдпрд╛рдиреНрдбрд▓рд░ рдкреНрд░рдХрд╛рд░рд╣рд░реВ рд░ [рдереНрд░реЗрдбреЗрдб] рджрд░реНрддрд╛` рдкреНрд░рдХрд╛рд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд░рд╕реНрдЯ рднрд╛рд╖рд╛рдорд╛ рдЕрд╡рд░реЛрдзрд╣рд░реВ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдердкрд┐рдпреЛред
  • рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдореНрдпрд╛рдХреНрд░реЛ рдердкрд┐рдпреЛ "#[vtable]" рд▓рд╛рдИ рдлрдВрдХреНрд╢рди рдкреЛрдЗрдиреНрдЯрд░рд╣рд░реВрдХреЛ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрди, рдЬрд╕реНрддреИ file_operations рд╕рдВрд░рдЪрдирд╛ред
  • рджреНрд╡рд┐рджрд┐рд╢ рд▓рд┐рдЩреНрдХ рдЧрд░рд┐рдПрдХреЛ рд╕реВрдЪреА "unsafe_list::List" рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдердкрд┐рдпреЛред
  • RCU (Read-copy-update) рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рд╕рдорд░реНрдерди рдердкрд┐рдпреЛ рд░ рд╣рд╛рд▓рдХреЛ рдереНрд░реЗрдбрдорд╛ рдкрдвреНрдиреЗ рд▓рдХ рдмрд╛рдБрдзрд┐рдПрдХреЛ рдЫ рдХрд┐ рдЫреИрди рднрдиреА рдЬрд╛рдБрдЪ рдЧрд░реНрди рдЧрд╛рд░реНрдб рдкреНрд░рдХрд╛рд░ред
  • рдХрд░реНрдиреЗрд▓ рдереНрд░реЗрдбрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд╕реБрд░реБ рдЧрд░реНрди Task::spawn() рдкреНрд░рдХрд╛рд░реНрдп рдердкрд┐рдпреЛред рд╕рд╛рдереИ Task::wake_up() рд╡рд┐рдзрд┐ рдердкрд┐рдпреЛред
  • рдврд┐рд▓рд╛рдЗ рдореЛрдбреНрдпреБрд▓ рдердкрд┐рдпреЛ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдврд┐рд▓рд╛рдЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ (msleep() рдорд╛рдерд┐ рд░реНрдпрд╛рдкрд░)ред

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдбреНрд░рд╛рдЗрднрд░ рд░ рдХрд░реНрдиреЗрд▓ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрди рджреЛрд╕реНрд░реЛ рднрд╛рд╖рд╛рдХреЛ рд░реВрдкрдорд╛ Rust рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдореНрднрд╡ рдмрдирд╛рдЙрдБрдЫред рд░рд╕реНрдЯ рд╕рдорд░реНрдерди рдПрдХ рд╡рд┐рдХрд▓реНрдкрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рд╕реНрддреБрдд рдЧрд░рд┐рдПрдХреЛ рдЫ рдЬреБрди рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рд╕рдХреНрд╖рдо рдЧрд░рд┐рдПрдХреЛ рдЫреИрди рд░ рд░рд╕реНрдЯрд▓рд╛рдИ рдХрд░реНрдиреЗрд▓рдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрдорд╛рдг рдирд┐рд░реНрднрд░рддрд╛рдХреЛ рд░реВрдкрдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред рдбреНрд░рд╛рдЗрднрд░ рд╡рд┐рдХрд╛рд╕рдХреЛ рд▓рд╛рдЧрд┐ рд░рд╕реНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдирд╛рд▓реЗ рддрдкрд╛рдИрд▓рд╛рдИ рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕рдорд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░ рд░рд╛рдореНрд░реЛ рдбреНрд░рд╛рдЗрднрд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗрдЫ, рдлреНрд░реАрд┐рдЩ рдкрдЫрд┐ рдореЗрдореЛрд░реА рдкрд╣реБрдБрдЪ, рдирд▓ рдкреЛрдЗрдиреНрдЯрд░ рдбрд┐рд░реЗрдлрд░реЗрдиреНрд╕рд╣рд░реВ, рд░ рдмрдлрд░ рдУрднрд░рд░рдиреНрд╕ рдЬрд╕реНрддрд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдмрд╛рдЯ рдореБрдХреНрддред

рдореЗрдореЛрд░реА-рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реНрдпрд╛рдиреНрдбрд▓рд┐рдВрдЧ рд░рд╕реНрдЯрдорд╛ рдХрдореНрдкрд╛рдЗрд▓ рд╕рдордпрдорд╛ рд╕рдиреНрджрд░реНрдн рдЬрд╛рдБрдЪ, рд╡рд╕реНрддреБрдХреЛ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд░ рд╡рд╕реНрддреБ рдЬреАрд╡рдирдХрд╛рд▓ (рд╕реНрдХреЛрдк) рдХреЛ рдЯреНрд░рдпрд╛рдХ рд░рд╛рдЦреНрджреИ, рд╕рд╛рдереИ рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рдХреНрд░рдордорд╛ рдореЗрдореЛрд░реА рдкрд╣реБрдБрдЪрдХреЛ рд╢реБрджреНрдзрддрд╛рдХреЛ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдорд╛рд░реНрдлрдд рдкреНрд░рджрд╛рди рдЧрд░рд┐рдиреНрдЫред Rust рд▓реЗ рдкреВрд░реНрдгрд╛рдВрдХ рдУрднрд░рдлреНрд▓реЛрд╣рд░реВ рд╡рд┐рд░реБрджреНрдз рд╕реБрд░рдХреНрд╖рд╛ рдкрдирд┐ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рдЕрдШрд┐ рдЪрд░ рдорд╛рдирд╣рд░реВрдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рдкреНрд░рд╛рд░рдореНрднрд┐рдХрддрд╛ рдЖрд╡рд╢реНрдпрдХ рдЫ, рддреНрд░реБрдЯрд┐рд╣рд░реВрд▓рд╛рдИ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпрдорд╛ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрджрдЫ, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдиреНрджрд░реНрднрд╣рд░реВ рд░ рдЪрд░рд╣рд░реВрдХреЛ рдЕрд╡рдзрд╛рд░рдгрд╛ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫ, рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐рд╣рд░реВрд▓рд╛рдИ рдХрдо рдЧрд░реНрди рдмрд▓рд┐рдпреЛ рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдЩ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди