เบชเบฐเบšเบฑเบšเบ—เบตเบชเบดเบšเบ‚เบญเบ‡ patches เบชเปเบฒเบฅเบฑเบš Linux kernel เบ—เบตเปˆเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฒเบชเบฒ Rust

Miguel Ojeda, เบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™ Rust-for-Linux, เป„เบ”เป‰เบชเบฐเป€เบซเบ™เบตเบเบฒเบ™เบ›เปˆเบญเบเบญเบปเบ‡เบ›เบฐเบเบญเบš v10 เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบ”เป€เบงเบตเบญเบธเบ›เบฐเบเบญเบ™เปƒเบ™เบžเบฒเบชเบฒ Rust เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป‚เบ”เบเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ Linux kernel. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเบšเบฑเบšเบ—เบตเบชเบดเบšเป€เบญเบฑเบ”เบ‚เบญเบ‡ patches, เป‚เบ”เบเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบชเบฐเบšเบฑเบšเบ—เปเบฒเบญเบดเบ”, เบˆเบฑเบ”เบžเบตเบกเบกเบฒเป‚เบ”เบเบšเปเปˆเบกเบตเบˆเปเบฒเบ™เบงเบ™เบชเบฐเบšเบฑเบš. เบเบฒเบ™เบฅเบงเบกเป€เบญเบปเบฒเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ Rust เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบญเบฐเบ™เบธเบกเบฑเบ”เป‚เบ”เบ Linusum Torvalds เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบกเบขเบนเปˆเปƒเบ™ Linux 6.1 kernel, เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบ„เบฒเบ”เป„เบงเป‰. เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบกเปˆเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบถเบ™เบˆเบฒเบ Google เปเบฅเบฐ ISRG (เบเบธเปˆเบกเบ„เบปเป‰เบ™เบ„เป‰เบงเบฒเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”), เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบœเบนเป‰เบเปเปˆเบ•เบฑเป‰เบ‡เป‚เบ„เบ‡เบเบฒเบ™ Let's Encrypt เปเบฅเบฐเบชเบปเปˆเบ‡เป€เบชเบตเบก HTTPS เปเบฅเบฐเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”.

เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบชเบฐเบšเบฑเบšเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบ‚เบญเบ‡ patches, เบเบฒเบ™เบ›เปˆเบญเบ v10 เปเบกเปˆเบ™ trimmed เบฅเบปเบ‡เบ•เปˆเปเบฒเบชเบธเบ”เป€เบ›เบปเปˆเบฒ, เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เป‚เบกเบ”เบนเบ™ kernel เบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™เบžเบฒเบชเบฒ Rust. เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบเป€เบงเบตเบŠเบฑเบ™เบเปˆเบญเบ™เปœเป‰เบฒเบ™เบตเป‰เบกเบฒเป€เบ–เบดเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เป€เบฅเบฑเบเบ™เป‰เบญเบ, เบเบฒเบ™เบ›เปˆเบฝเบ™เบ‚เบฐเปœเบฒเบ”เบ‚เบญเบ‡ ARRAY_SIZE เปƒเบ™ kallsyms.c เปเบฅเบฐเบเบฒเบ™เบ›เบฑเบšเบ›เปˆเบฝเบ™เปเบžเบฑเบ”เบเบฑเบš v6.0-rc7 kernel. เบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบกเบต patch เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆ, เบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเป„เบ”เป‰เบ–เบทเบเบซเบผเบธเบ”เบฅเบปเบ‡เบˆเบฒเบ 40 เบซเบฒ 13 เบžเบฑเบ™เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”, เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบ‡เปˆเบฒเบเบ”เบฒเบเบเบฒเบ™เบฎเบฑเบšเบฎเบญเบ‡เป€เบญเบปเบฒ Rust เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เปเบเปˆเบ™เบ•เบปเป‰เบ™เบ•เป. เบซเบผเบฑเบ‡เบˆเบฒเบเบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบซเบ™เป‰เบญเบ, เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเบ„เปˆเบญเบเป†เป€เบžเบตเปˆเบกเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบกเบตเบขเบนเปˆ, เบเบฒเบ™เป‚เบญเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบญเบทเปˆเบ™เป†เบˆเบฒเบเบชเบฒเบ‚เบฒ Rust-for-Linux.

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

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

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

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