ΠΠ±ΡΠ°Π²Π΅Π½ΠΎ Π΅ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈΠΎΡ ΡΠ°Π·ΠΈΠΊ Π·Π° ΠΎΠΏΡΡΠ° Π½Π°ΠΌΠ΅Π½Π° Rust 1.75, ΠΎΡΠ½ΠΎΠ²Π°Π½ ΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Mozilla, Π½ΠΎ ΡΠ΅Π³Π° ΡΠ°Π·Π²ΠΈΠ΅Π½ ΠΏΠΎΠ΄ ΠΏΠΎΠΊΡΠΎΠ²ΠΈΡΠ΅Π»ΡΡΠ²ΠΎ Π½Π° Π½Π΅Π·Π°Π²ΠΈΡΠ½Π°ΡΠ° Π½Π΅ΠΏΡΠΎΡΠΈΡΠ½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ° Rust Foundation. ΠΠ°Π·ΠΈΠΊΠΎΡ ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ° Π½Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡΠ° Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° ΠΏΠΎΡΡΠΈΠ³Π½ΡΠ²Π°ΡΠ΅ Π½Π° Π²ΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·Π°ΠΌ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ ΠΌΠ΅ΡΡΠ°, ΠΏΡΠΈΡΠΎΠ° ΠΈΠ·Π±Π΅Π³Π½ΡΠ²Π°ΡΡΠΈ ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° ΡΠΎΠ±ΠΈΡΠ°Ρ Π½Π° ΡΡΠ±ΡΠ΅ ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° (Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π΅ ΡΠ²Π΅Π΄Π΅Π½ΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ° ΠΈ ΠΎΠ΄ΡΠΆΡΠ²Π°ΡΠ΅ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°).
ΠΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΡΠ°ΠΊΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π° Rust Π³ΠΎ ΡΠΏΠ°ΡΡΠ²Π°Π°Ρ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΎΡ ΠΎΠ΄ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°ΡΠ΅ ΡΠΎ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΈΡΠ΅ ΠΈ Π³ΠΎ ΡΡΠΈΡΠ°Ρ ΠΎΠ΄ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΡΠΎ ΡΠ΅ ΡΠ°Π²ΡΠ²Π°Π°Ρ ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ°ΠΊΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠΊΠ°ΡΠ° ΠΎΠ±Π»Π°ΡΡ ΠΎΡΠΊΠ°ΠΊΠΎ ΡΠ΅ ΡΠ΅ ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΠΈ, Π΄Π΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° Π½ΡΠ»Π° ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΈ, ΠΏΡΠ΅ΡΠ΅ΠΊΠΎΡΡΠ²Π°ΡΠ° Π½Π° Π±Π°ΡΠ΅ΡΠΎΡ ΠΈΡΠ½. ΠΠ° Π΄Π° ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π΄Π° ΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄Π°Ρ Π³ΡΠ°Π΄Π±ΠΈ ΠΈ Π΄Π° ΡΠΏΡΠ°Π²ΡΠ²Π°Π°Ρ ΡΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Π³ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΌΠ΅Π½Π°ΡΠ΅ΡΠΎΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Cargo. Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌΠΎΡ crates.io Π΅ ΠΏΠΎΠ΄Π΄ΡΠΆΠ°Π½ Π·Π° Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΠ΅Π·Π±Π΅Π΄Π½ΠΎΡΡΠ° Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½Π° Π²ΠΎ Rust Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΠ΅ΡΠΎ ΠΏΡΠ΅ΠΊΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈ, ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π½Π° ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΎΡΡΠ° Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ, ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π½Π° ΠΆΠΈΠ²ΠΎΡΠ½ΠΈΠΎΡ Π²Π΅ΠΊ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ (ΠΎΠ±Π΅ΠΌΠΈ) ΠΈ ΠΏΡΠΎΡΠ΅Π½ΠΊΠ° Π½Π° ΠΈΡΠΏΡΠ°Π²Π½ΠΎΡΡΠ° Π½Π° ΠΏΡΠΈΡΡΠ°ΠΏΠΎΡ Π΄ΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ΠΎΡ. Rust ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π·Π°ΡΡΠΈΡΠ° ΠΎΠ΄ ΠΏΡΠ΅Π»Π΅Π²Π°ΡΠ΅ Π½Π° ΡΠ΅Π»ΠΈ Π±ΡΠΎΠ΅Π²ΠΈ, Π±Π°ΡΠ° Π·Π°Π΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»Π½Π° ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ ΠΏΡΠ΅Π΄ ΡΠΏΠΎΡΡΠ΅Π±Π°, ΠΏΠΎΠ΄ΠΎΠ±ΡΠΎ ΡΠ΅ ΡΠΏΡΠ°Π²ΡΠ²Π° ΡΠΎ Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ Π²ΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ²Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΎΡ Π½Π° Π½Π΅ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Π½ΡΠ΄ΠΈ ΡΠΈΠ»Π½ΠΎ ΡΡΠ°ΡΠΈΡΠΊΠΎ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π·Π° Π΄Π° ΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ°Π°Ρ Π»ΠΎΠ³ΠΈΡΠΊΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ.
ΠΠ»Π°Π²Π½ΠΈΡΠ΅ ΠΈΠ½ΠΎΠ²Π°ΡΠΈΠΈ:
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ βasync fnβ ΠΈ ΠΎΠ·Π½Π°ΠΊΠ°ΡΠ° β->impl Traitβ Π²ΠΎ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ β->impl Traitβ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ Π½Π° ΠΎΡΠΎΠ±ΠΈΠ½Π° ΡΡΠΎ Π²ΡΠ°ΡΠ° ΠΈΡΠ΅ΡΠ°ΡΠΎΡ: trait Container { fn items(&self) -> impl Iterator; } impl Container for MyContainer { fn items(&self) -> impl Iterator {self.items.iter().cloned() } }
ΠΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° βasync fnβ: trait HttpService { async fn fetch(&self, url: Url) -> HtmlBody; // ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠΈ Π½Π°: // fn fetch(&self, url: Url) -> impl Future; }
- ΠΠΎΠ΄Π°Π΄Π΅Π½ΠΎ Π΅ API Π·Π° ΠΏΡΠ΅ΡΠΌΠ΅ΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΎΠΌΠ΅ΡΡΡΠ²Π°ΡΠ° Π½Π° Π±Π°ΡΡΠΈ Π²ΠΎ ΠΎΠ΄Π½ΠΎΡ Π½Π° ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΈΡΠ΅. ΠΠΎΠ³Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ ΡΠΎ Π³ΠΎΠ»ΠΈ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΈ (β*const Tβ ΠΈ β*mut Tβ), ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π°Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ Π½Π° ΠΏΠΎΠΌΠ΅ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΎΡ. ΠΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎ, Π·Π° ΠΎΠ²Π° Π±Π΅ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠ° ΠΊΠ°ΠΊΠΎ β::add(1)β, Π΄ΠΎΠ΄Π°Π²Π°ΡΡΠΈ Π³ΠΎ Π±ΡΠΎΡΠΎΡ Π½Π° Π±Π°ΡΡΠΈ ΡΡΠΎ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°Π°Ρ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°ΡΠ° Π½Π° βsize_of::()β. ΠΠΎΠ²ΠΈΠΎΡ API ΡΠ° ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²ΡΠ²Π° ΠΎΠ²Π°Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°ΡΠ΅ ΡΠΎ ΠΏΠΎΠΌΠ΅ΡΡΡΠ²Π°ΡΠ° Π½Π° Π±Π°ΡΡΠΈ Π±Π΅Π· ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΡΠ»Π°Ρ ΡΠΈΠΏΠΎΠ²ΠΈΡΠ΅ Π½Π° β*const u8β ΠΈΠ»ΠΈ β*mut u8β.
- ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ::byte_add
- ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ::byte_offset
- ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ::byte_offset_from
- ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ::byte_sub
- ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ::wrapping_byte_add
- ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ::wrapping_byte_offset
- ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ::wrapping_byte_sub
- ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½Π° ΡΠ°Π±ΠΎΡΠ° Π·Π° Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ rustc. ΠΠΎΠ΄Π°Π΄Π΅Π½ Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ BOLT, ΠΊΠΎΡ ΡΠ°Π±ΠΎΡΠΈ Π²ΠΎ ΡΠ°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΡΡ-Π²ΡΡΠΊΠ° ΠΈ ΠΊΠΎΡΠΈΡΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ΄ ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ ΠΏΡΠΎΡΠΈΠ» Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅. ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ΡΠΎ Π½Π° BOLT Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° Π³ΠΎ Π·Π°Π±ΡΠ·Π°ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ Π·Π° ΠΎΠΊΠΎΠ»Ρ 2% ΡΠΎ ΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΎΡ Π½Π° ΠΊΠΎΠ΄ΠΎΡ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° librustc_driver.so Π·Π° ΠΏΠΎΠ΅ΡΠΈΠΊΠ°ΡΠ½ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΊΠ΅ΡΠΎΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ.
ΠΠΊΠ»ΡΡΠ΅Π½ΠΎ Π΅ Π³ΡΠ°Π΄Π΅ΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ rustc ΡΠΎ ΠΎΠΏΡΠΈΡΠ°ΡΠ° β-Ccodegen-units=1β Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠ²Π°Π»ΠΈΡΠ΅ΡΠΎΡ Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ°ΡΠ° Π²ΠΎ LLVM. ΠΠ·Π²ΡΡΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Π°Ρ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π²ΠΎ ΡΠ»ΡΡΠ°ΡΠΎΡ Π½Π° ΠΈΠ·Π³ΡΠ°Π΄Π±Π°ΡΠ° β-Ccodegen-units=1β Π·Π° ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 1.5%. ΠΠΎΠ΄Π°Π΄Π΅Π½ΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ΠΈ ΡΠ°ΠΌΠΎ Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° x86_64-unknown-linux-gnu.
ΠΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π±Π΅Π° ΡΠ΅ΡΡΠΈΡΠ°Π½ΠΈ ΠΎΠ΄ Google Π·Π° Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΠΈ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ Π½Π° Android ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π²ΠΎ Rust. ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ΡΠΎ Π½Π° β-C codegen-units=1β ΠΏΡΠΈ ΠΈΠ·Π³ΡΠ°Π΄Π±Π°ΡΠ° Π½Π° ΠΠ½Π΄ΡΠΎΠΈΠ΄ Π½ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄Π° ΡΠ° Π½Π°ΠΌΠ°Π»ΠΈΠΌΠ΅ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠΎΡ Π°Π»Π°ΡΠΊΠΈ Π·Π° 5.5% ΠΈ Π΄Π° Π³ΠΈ Π·Π³ΠΎΠ»Π΅ΠΌΠΈΠΌΠ΅ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ Π·Π° 1.8%, Π΄ΠΎΠ΄Π΅ΠΊΠ° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ Π½Π° ΡΠ°ΠΌΠΈΠΎΡ ΠΊΠΎΠΌΠΏΠ»Π΅Ρ ΡΠΎ Π°Π»Π°ΡΠΊΠΈ ΡΠ΅ΡΠΈΡΠΈ Π΄Π²ΠΎΡΠ½ΠΎ ΡΠ΅ Π·Π³ΠΎΠ»Π΅ΠΌΠΈ.
ΠΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΡΡΠ±ΡΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π²ΡΡΠΊΠ° (β--gc-ΡΠ΅ΠΊΡΠΈΠΈβ) Π΄ΠΎΠ½Π΅ΡΠ΅ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π΄ΠΎ 1.9%, ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΡΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ° Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π²ΡΡΠΊΠ° (LTO) Π΄ΠΎ 7.7% ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈ (PGO) Π΄ΠΎ 19.8%. ΠΠΎ ΡΠΈΠ½Π°Π»Π΅ΡΠΎ, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ Π±Π΅Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅ΡΠΈ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° Π°Π»Π°ΡΠΊΠ°ΡΠ° BOLT, ΡΡΠΎ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ Π½Π° Π±ΡΠ·ΠΈΠ½Π°ΡΠ° Π½Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ Π½Π° 24.7%, Π½ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠΎΡ Π°Π»Π°ΡΠΊΠΈ ΡΠ΅ Π·Π³ΠΎΠ»Π΅ΠΌΠΈ Π·Π° 10.9%.
- ΠΠΎΠ² Π΄Π΅Π» ΠΎΠ΄ API Π΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ΅Π½ Π²ΠΎ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠ°ΡΠ° ΡΡΠ°Π±ΠΈΠ»Π½ΠΈ, Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΡΠΈ Π³ΠΈ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ ΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ:
- ΠΡΠΎΠΌΡΠΊΠΈ*::ΠΎΠ΄_ptr
- FileTimes
- FileTimesExt
- ΠΠ°ΡΠΎΡΠ΅ΠΊΠ°::set_modified
- ΠΠ°ΡΠΎΡΠ΅ΠΊΠ°::set_times
- IpAddr::to_canonical
- Ipv6Addr::to_canonical
- ΠΠΏΡΠΈΡΠ°::as_slice
- ΠΠΏΡΠΈΡΠ°::as_mut_slice
- ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ::byte_add
- ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ::byte_offset
- ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ::byte_offset_from
- ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ::byte_sub
- ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ::wrapping_byte_add
- ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ::wrapping_byte_offset
- ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ::wrapping_byte_sub
- ΠΡΡΠΈΠ±ΡΡΠΎΡ βconstβ, ΠΊΠΎΡ ΡΠ° ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π° ΠΌΠΎΠΆΠ½ΠΎΡΡΠ° Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ ΠΊΠΎΡ Π±ΠΈΠ»ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π°ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ, ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ:
- Ipv6Addr::to_ipv4_mapped
- ΠΠΎΠΆΠ΅Π±ΠΈUninit::assume_init_read
- ΠΠΎΠΆΠ΅Π±ΠΈ Uninit::zeroed
- ΠΌΠ΅ΠΌ::Π΄ΠΈΡΠΊΡΠΈΠΌΠΈΠ½Π°ΡΠΎΡΡΠΊΠΈ
- ΠΌΠ΅ΠΌ::Π½ΡΠ»Π°
- Π’ΡΠ΅ΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΎ Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈΡΠ΅ csky-unknown-linux-gnuabiv2hf, i586-unknown-netbsd ΠΈ mipsel-unknown-netbsd. Π’ΡΠ΅ΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π²ΠΊΠ»ΡΡΡΠ²Π° ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ°, Π½ΠΎ Π±Π΅Π· Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅, ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΠΎΡΠΈΡΠΈΡΠ°Π»Π½ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π΄Π°Π»ΠΈ ΠΊΠΎΠ΄ΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΠΈ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠ΅ Π½ΠΎΠ²Π° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Hermit, ΠΊΠΎΡ ΡΠ°Π·Π²ΠΈΠ²Π° ΡΠΏΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΡΠ°Π΄ΡΠΎ (unikernel), Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ Rust, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΡΡΠΈ Π°Π»Π°ΡΠΊΠΈ Π·Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΠ½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π° Π²ΡΠ²ΠΎΡ Π½Π° Ρ
ΠΈΠΏΠ΅ΡΠ²ΠΈΠ·ΠΎΡ ΠΈΠ»ΠΈ Π³ΠΎΠ» Ρ
Π°ΡΠ΄Π²Π΅Ρ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ»ΠΎΠ΅Π²ΠΈ ΠΈ Π±Π΅Π· ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π΅Π½ ΡΠΈΡΡΠ΅ΠΌ. ΠΠΎΠ³Π° Π΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½Π°, Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π΅ ΡΡΠ°ΡΠΈΡΠΊΠΈ ΠΏΠΎΠ²ΡΠ·Π°Π½Π° ΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠ° Π½Π΅Π·Π°Π²ΠΈΡΠ½ΠΎ ΡΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° ΡΠ΅Π»Π°ΡΠ° ΠΏΠΎΡΡΠ΅Π±Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ, Π±Π΅Π· Π΄Π° Π±ΠΈΠ΄Π΅ ΠΏΠΎΠ²ΡΠ·Π°Π½Π° ΡΠΎ ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ Π½Π° ΠΠ‘ ΠΈ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΡΠΎΠ΅ΠΊΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ Π΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠΈΡΠ΅ Apache 2.0 ΠΈ MIT. Π‘ΠΎΠ±ΡΠ°Π½ΠΈΠ΅ΡΠΎ Π΅ ΠΏΠΎΠ΄Π΄ΡΠΆΠ°Π½ΠΎ Π·Π° ΡΠ°ΠΌΠΎΡΡΠΎΡΠ½ΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π²ΠΎ Rust, Go, Fortran, C ΠΈ C++. ΠΡΠΎΠ΅ΠΊΡΠΎΡ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ°Π·Π²ΠΈΠ²Π° ΡΠΎΠΏΡΡΠ²Π΅Π½ ΠΏΠΎΠ΄ΠΈΠ³Π½ΡΠ²Π°Ρ ΠΊΠΎΡ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° Π³ΠΎ ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ Hermit ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ QEMU ΠΈ KVM.
ΠΠ·Π²ΠΎΡ: opennet.ru