ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ Π΅ ΡΠ΅Π»ΠΈΠ·ΡΡ Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Ρ ΠΎΠ±ΡΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Rust 1.81, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Mozilla, Π½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠ°Π·Π²ΠΈΠ²Π°Π½ ΠΏΠΎΠ΄ ΠΏΠΎΠΊΡΠΎΠ²ΠΈΡΠ΅Π»ΡΡΠ²ΠΎΡΠΎ Π½Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠ°ΡΠ° Π½Π΅ΠΊΠΎΠΌΠ΅ΡΡΠΈΠ°Π»Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ Rust Foundation. ΠΠ·ΠΈΠΊΡΡ Π΅ ΡΠΎΠΊΡΡΠΈΡΠ°Π½ Π²ΡΡΡ Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° ΠΏΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° Π²ΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΡΠΌ Π² ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π·Π°Π΄Π°ΡΠΈΡΠ΅, ΠΊΠ°ΡΠΎ Π² ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ±ΠΈΡΠ°Ρ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ ΠΈ runtime (runtime Π΅ ΡΠ²Π΅Π΄Π΅Π½ΠΎ Π΄ΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°).
ΠΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π² Rust ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΎΡ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈ Π·Π°ΡΠΈΡΠ°Π²Π°Ρ ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, Π²ΡΠ·Π½ΠΈΠΊΠ²Π°ΡΠΈ ΠΎΡ Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΊΠ°ΡΠΎ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½Π΅ Π½Π° Π½ΡΠ»Π΅Π²ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ ΠΈΠ·Π²ΡΠ½ Π³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π½Π° Π±ΡΡΠ΅ΡΠ° ΠΈ Π΄Ρ. ΠΠ° ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΏΡΠΎΠ΅ΠΊΡΡΡ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈΡ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Cargo. ΠΠ° Ρ ΠΎΡΡΠ²Π°Π½Π΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ crates.io.
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π² Rust ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΡΡΠ΅Π· ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠΊΠΈ, ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΎΡΡΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅, ΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΆΠΈΠ²ΠΎΡ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ (ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π° Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ) ΠΈ ΠΎΡΠ΅Π½ΠΊΠ° Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎΡΡΡΠ° Π½Π° Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄Π°. Rust ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° Π·Π°ΡΠΈΡΠ° ΠΎΡ ΠΏΡΠ΅ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅Π»ΠΈ ΡΠΈΡΠ»Π°, ΠΈΠ·ΠΈΡΠΊΠ²Π° Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ ΠΈΠΌ, ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΏΡΠΈΠ»Π°Π³Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ° Π·Π° Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡ (immutable) Π½Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠΊΠΈ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠΈΠ»Π½Π° ΡΡΠ°ΡΠΈΡΠ½Π° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ, Π·Π° Π΄Π° ΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ°Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΠΈ Π½ΠΎΠ²ΠΎΠ²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ:
- Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ Π΅ ΡΠΈΠΏΠ°ΠΆΡΡ core::error::Error, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅. Π’Π°Π·ΠΈ ΠΏΡΠΎΠΌΡΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΅Π΄ΠΈΠ½Π΅Π½ ΡΠΈΠΏΠ°ΠΆ Error Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΡΠ΅Π΄Π°ΡΠ°, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π°ΡΡΠΈΠ±ΡΡ β#![no_std]β.
- Π‘ΡΠ°Π±ΠΈΠ»Π½ΠΈΡΠ΅ ΠΈ Π½Π΅ΡΡΠ°Π±ΠΈΠ»Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΡΠΎΡΡΠΈΡΠ°Π½Π΅ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ° ΠΏΡΠ΅Π²Π΅Π΄Π΅Π½ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π½ΠΎΠ²ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°ΡΠΈ ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠ° ΡΠΊΠΎΡΠΎΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠ° ΠΈ ΠΏΠΎ-ΠΊΡΠ°ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ. Π ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° Π½ΠΎΠ²ΠΈΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ Π·Π° ΡΠΎΡΡΠΈΡΠ°Π½Π΅ Π΅ ΠΎΡΠΈΠ³ΡΡΠ΅Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π½Π΅ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈ ΡΠΈΠΏΠ°ΠΆΠΈ Ord ΠΈ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠ° (panic) Π² ΡΠ°ΠΊΠΈΠ²Π° ΡΠ»ΡΡΠ°ΠΈ, Π²ΠΌΠ΅ΡΡΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ³ΡΡΠΏΠΈΡΠ°Π½ΠΈ Π΄Π°Π½Π½ΠΈ.
- Π linter-Π° Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π½ΠΎΠ²ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° βexpectβ (β#[expect(lint)]β), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠΎ Π΄Π° ΡΠ΅ ΡΠ²Π΅ΡΠΈΡΠ΅ Π² ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° ΠΈ Π΄Π° ΠΈΠ·Π²Π΅Π΄Π΅ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π°ΠΊΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π½Π΅ Π΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½Π° (ΠΏΠΎΡΠ°Π΄ΠΈ Π³ΡΠ΅ΡΠΊΠ° Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° ΠΈΠ»ΠΈ Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ°). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π°ΡΠ° Π±Π°Π·Π° ΠΊΡΠΌ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° undocumented_unsafe_blocks ΡΡΠ΅Π· Clippy, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠΊΠ°ΠΆΠ΅ΡΠ΅ β#[expect(clippy::undocumented_unsafe_blocks)]β, Π·Π° Π΄Π° ΡΠ΅ ΡΠ²Π΅ΡΠΈΡΠ΅, ΡΠ΅ Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΏΡΠ΅Ρ ΠΎΠ΄Π° Π²ΡΠΈΡΠΊΠΈ unsafe-Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ. Π Clippy ΡΡΡΠΎ ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ clippy::allow_attributes ΠΈ clippy::allow_attributes_without_reason, ΡΠ»Π΅ΡΠ½ΡΠ²Π°ΡΠΈ Π·Π°ΠΌΡΠ½Π°ΡΠ° Π½Π° Π°ΡΡΠΈΠ±ΡΡΠΈΡΠ΅ β#[allow]β Ρ β#[expect(lint)]β.
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°Π»Π΅Π½ Π·Π°ΠΏΠΈΡ Π½Π° ΠΏΡΠΈΡΠΈΠ½ΠΈΡΠ΅ Π·Π° Π·Π°ΠΌΡΠ½Π°ΡΠ° Π½Π° Π½ΠΈΠ²Π°ΡΠ° Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° (lint), ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠΉΠΊΠΈ Π½Π° Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΏΡΠΈΡΠΈΠ½ΠΈΡΠ΅ Π·Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°, ΠΈΠ·Π²Π΅Π΄Π΅Π½Π° ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: #![deny(clippy::float_arithmetic, reason = βno hardware float supportβ)]
- Π ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡΠ° ΡΡΠ°Π±ΠΈΠ»Π½ΠΈ Π΅ ΠΏΡΠ΅Π²Π΅Π΄Π΅Π½Π° Π½ΠΎΠ²Π° ΠΏΠΎΡΡΠΈΡ API, ΠΊΠ°ΡΠΎ ΡΠ° ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ Π½Π° ΡΠΈΠΏΠ°ΠΆΠΈΡΠ΅:
- core::error
- hint::assert_unchecked
- fs::exists
- AtomicBool::fetch_not
- Duration::abs_diff
- IoSlice::advance
- IoSlice::advance_slices
- IoSliceMut::advance
- IoSliceMut::advance_slices
- PanicHookInfo
- PanicInfo::message
- PanicMessage
ΠΡΠΈΠ·Π½Π°ΠΊ Β«constΒ», ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΊΠ°ΠΊΡΠ²ΡΠΎ ΠΈ Π΄Π° Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ, Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ Π²ΡΠ² ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅:
- char::from_u32_unchecked (ΡΡΠ½ΠΊΡΠΈΡ)
- char::from_u32_unchecked (ΠΌΠ΅ΡΠΎΠ΄)
- CStr::count_bytes
- CStr::from_ptr
Π’ΠΈΠΏΡΡ std::panic::PanicInfo Π΅ ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ Π½Π° std::panic::PanicHookInfo (ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΎΡΠΎ ΠΈΠΌΠ΅ ΠΎΡΡΠ°Π²Π°, Π½ΠΎ ΠΎΡ ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ ΠΌΡ ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅). ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° core::panic::PanicInfo ΡΠ΅ ΠΎΡΡΠ°Π½Π΅ Π½Π΅ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½, Π½ΠΎ ΡΠ΅ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΊΠ°ΡΠΎ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΡΠΈΠΏ. Π Π°Π·Π΄Π΅Π»ΡΠ½Π΅ΡΠΎ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° snd ΠΈ no_std.
- ΠΠ°Π²ΡΡΡΠ΅Π½ Π΅ ΠΏΡΠ΅Ρ ΠΎΠ΄ΡΡ ΠΊΡΠΌ ABI C-unwind (βextern Β«C-unwindΒ»β), ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π° ΠΎΡ ABI Π±Π΅Π· ΡΡΡΠΈΠΊΡ Β«-unwindΒ» (βextern Β«CΒ»β) Ρ ΡΠΎΠ²Π°, ΡΠ΅ Π·Π°ΠΏΠ°Π·Π²Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (safe), Π°ΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΡΡ Π½Π° Β«ΡΠ°Π·ΠΌΠΎΡΠ°Π²Π°Π½Π΅Β» (unwinding), ΠΈΠ½ΠΈΡΠΈΠΈΡΠ°Π½ ΠΏΡΠΈ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎ ΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° ΠΈΠ»ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² ΡΡΠΈΠ» C++, ΠΏΡΠ΅ΡΠΈΡΠ° Π³ΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π° ABI (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π²ΡΠ·Π½ΠΈΠΊΠ½Π°Π»ΠΎ Π² ΠΊΠΎΠ΄ Π½Π° Π΅Π΄ΠΈΠ½ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅, Π·Π°ΡΡΠ³Π° ΡΡΠ΅ΠΊΠ°, ΡΠ²ΡΡΠ·Π°Π½ Ρ ΠΊΠΎΠ΄ Π½Π° Π΄ΡΡΠ³ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅). ΠΡ Π²Π΅ΡΡΠΈΡ Rust 1.81 ΠΏΡΠΈ βextern Β«CΒ»β Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΎ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎ ΡΠΏΠΈΡΠ°Π½Π΅ ΠΏΡΠΈ Π½Π΅ΠΏΠ΅ΡΠ΅Ρ Π²Π°Π½Π°ΡΠΎ ΡΠ°Π·ΠΌΠΎΡΠ°Π²Π°Π½Π΅.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π΅ ΡΡΠ΅ΡΠΈ Π½ΠΈΠ²ΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈΡΠ΅ i686-unknown-redox, xtensa-esp32-none-elf, xtensa-esp32s2-none-elf, xtensa-esp32s3-none-elf, xtensa-esp32-espidf, xtensa-esp32s2-espidf, xtensa-esp32s3-espidf. Π’ΡΠ΅ΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ ΠΏΡΠ΅Π΄Π²ΠΈΠΆΠ΄Π° ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°, Π½ΠΎ Π±Π΅Π· Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΡΠ΅ΡΡΠ²Π°Π½Π΅, ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π°.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π΅ Π²ΡΠΎΡΠΈ Π½ΠΈΠ²ΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠ΅Π»Π΅Π²ΠΈΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ loongarch64-unknown-linux-musl ΠΈ arm64ec-pc-windows-msvc. ΠΡΠΎΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π³Π°ΡΠ°Π½ΡΠΈΡ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅.
- ΠΠ° Linux-ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° LoongArch Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ ΠΏΡΠ»Π΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ.
- Π£ΡΡΡΠ°Π½Π΅Π½Π° Π΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ (CVE-2024-43402) Π² std::process::Command, ΠΏΡΠΎΡΠ²ΡΠ²Π°ΡΠ° ΡΠ΅ ΡΠ°ΠΌΠΎ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Windows ΠΈ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°ΡΠ° Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²Π΅ΡΠ΅ ΠΏΠΎΠΏΡΠ°Π²Π΅Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ BatBadBut, ΡΠ²ΡΡΠ·Π°Π½Π° Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ Command::arg ΠΈ Command::args, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈ Π·Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ°, Π±Π΅Π· Π΄Π° Π±ΡΠ΄Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Π½ΠΈ ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ. ΠΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° bat- ΠΈ cmd-ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΠΏΡΠΎΡΠ΅Ρ cmd.exe, ΠΊΠΎΠΉΡΠΎ ΠΈΠΌΠ° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π° ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅. ΠΠ°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΊΠ°ΡΠ° Π΅ ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΡΠΎΠ²Π°, ΡΠ΅ Windows ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π° Π²ΠΎΠ΄Π΅ΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ ΠΈ ΡΠΎΡΠΊΠΈ Π² ΠΏΡΡΠΈΡΠ°ΡΠ°, Ρ.Π΅. ΡΠ°ΠΉΠ» Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ Β«.bat. .Β» ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΠΊΠ°ΡΠΎ Β«.batΒ».
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈΠΌ Π½Π°ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ Π½Π° Π£Π΅Π΄ΡΠΎΠ½ ΠΠ»ΠΌΠ΅ΠΉΠ΄Π° Π€ΠΈΠ»ΠΆΠΎ (Wedson Almeida Filho) ΠΎΡ ΠΏΠΎΡΡΠ° Π½Π° ΠΏΡΠΈΠ΄ΡΡΠΆΠ°Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Rust for Linux, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π° Ρ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΅Π·ΠΈΠΊ Rust Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux. Π‘Π»Π΅Π΄ Π½Π°ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ Π½Π° Π£Π΅Π΄ΡΠΎΠ½, Π² ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΎΡΡΠ°Π½Π°Ρ Π° ΠΎΡΠ΅ Π΄Π²Π°ΠΌΠ° ΠΏΡΠΈΠ΄ΡΡΠΆΠΈΡΠ΅Π»ΠΈ β ΠΠΈΠ³Π΅Π» ΠΡ Π΅Π΄Π° (Miguel Ojeda), Π°Π²ΡΠΎΡ ΠΈ ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Rust-for-Linux, ΠΈ ΠΠ»Π΅ΠΊΡ ΠΠ΅ΠΉΠ½ΠΎΡ (Alex Gaynor), Π±ΠΈΠ²Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡ Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΡΠ° Python Software Foundation, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π΅ Π½Π°ΡΠΎΡΠΈΠ» ΠΊΡΠΌ ΠΏΠΎΠΏΡΠ»ΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Rust. ΠΠ°ΠΏΡΡΠ½Π°Π»ΠΈΡΡ ΠΏΡΠΈΠ΄ΡΡΠΆΠΈΡΠ΅Π», ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½ΠΈ ΠΊΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΡΠ΅Π΄ΠΈ 4 Π³ΠΎΠ΄ΠΈΠ½ΠΈ, Π΅ ΡΠ»ΡΠΆΠΈΡΠ΅Π» Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Microsoft ΠΈ Π°Π²ΡΠΎΡ Π½Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π΅Π½ Π΄ΡΠ°ΠΉΠ²Π΅Ρ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π€Π‘ EXT2, Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π΅Π·ΠΈΠΊ Rust. Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΠ»ΠΌΠ΅ΠΉΠ΄Π° Π±Π΅ΡΠ΅ Π½Π°ΡΠΎΡΠ΅Π½Π° ΠΊΡΠΌ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π½Π° Π΅Π·ΠΈΠΊ Rust. Π’Π°Π·ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° ΠΠ»ΠΌΠ΅ΠΉΠ΄Π° Π΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠ» 17 ΠΊΠΎΠΌΠΈΡΠ° Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Rust-for-Linux (Π·Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅, ΠΠΈΠ³Π΅Π» ΠΡ Π΅Π΄Π° Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ» 53 ΠΊΠΎΠΌΠΈΡΠ°).
ΠΠ°ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π° Π·Π° Π½Π°ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π° Π½Π΅Π΄ΠΎΡΡΠΈΠ³ Π½Π° ΡΠΈΠ»ΠΈ ΠΈ Π΅Π½ΡΡΡΠΈΠ°Π·ΡΠΌ, ΠΊΠΎΠΈΡΠΎ Π½ΡΠΊΠΎΠ³Π° ΡΠ° Π±ΠΈΠ»ΠΈ Π½Π°Π»ΠΈΡΠ½ΠΈ Π·Π° ΡΠ΅Π°Π³ΠΈΡΠ°Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠΈ Π½Π΅ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΈ ΡΠ΅ΠΌΠΈ (nontechnical nonsense). Π‘ΠΏΠΎΡΠ΅Π΄ ΠΠ»ΠΌΠ΅ΠΉΠ΄Π°, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΡΠ° ΠΏΡΠΈΠ½ΡΠ΄Π΅Π½ΠΈ Π΄Π° Π²Π»Π°Π³Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΈΠ»ΠΈΡ Π² ΡΠΏΠΎΡΠΎΠ²Π΅ ΠΏΠΎ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈ Π²ΡΠΏΡΠΎΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΡΠ±Π»ΡΡΠΊΠ²Π°Ρ ΠΏΠΎ-Π²Π°ΠΆΠ½Π°ΡΠ° Π³Π»ΠΎΠ±Π°Π»Π½Π° ΡΠ΅Π». ΠΠ»ΠΌΠ΅ΠΉΠ΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° Π΄Π° Π²ΡΡΠ²Π°, ΡΠ΅ Π±ΡΠ΄Π΅ΡΠ΅ΡΠΎ Π½Π° ΡΠ΄ΡΠ°ΡΠ° Π΅ ΡΠ²ΡΡΠ·Π°Π½ΠΎ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΅Π·ΠΈΡΠΈ, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°ΡΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΈ Π°ΠΊΠΎ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° Linux Π½Π΅ ΠΎΡΡΠ·Π½Π°Π΅ ΡΠΎΠ²Π°, Linux ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ·ΡΠ»Π°ΡΠΊΠ°Π½ ΠΎΡ Π½ΡΠΊΠΎΠ΅ Π΄ΡΡΠ³ΠΎ ΡΠ΄ΡΠΎ, ΠΊΠ°ΠΊΡΠΎ Π½ΡΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ»ΡΡΠΈ Ρ Unix.
ΠΠΎΠ΄Π΄ΡΡΠΆΠ½ΠΈΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Rust-for-Linux ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ²Π°Ρ Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° Π΄Π° ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»ΡΠ²Π°Ρ ΡΡΠΏΡΠΎΡΠΈΠ²Π° ΠΎΡ ΡΡΡΠ°Π½Π° Π½Π° ΡΡΠ²ΡΡΠ΄Π΅Π½ΠΈ ΡΡΠ°ΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° ΡΠ΄ΡΠΎΡΠΎ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ Π²ΠΈΠΆΠ΄Π°Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ ΠΎΡ ΠΈΠ·ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ² Π΅Π·ΠΈΠΊ. Π ΠΏΠΈΡΠΌΠΎΡΠΎ ΡΠΈ Π·Π° ΠΎΡΡΠ°Π²ΠΊΠ° ΠΠ»ΠΌΠ΅ΠΉΠ΄Π° Π΄Π°Π²Π° Π·Π° ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠ±ΡΡΠΆΠ΄Π°Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΡΡΡΠΎΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΊΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΠ»ΠΌΠ΅ΠΉΠ΄Π° ΠΈ ΠΠ΅Π½Ρ ΠΠ²Π΅ΡΡΡΡΠΈΡΠ° (Kent Overstreet) Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡΠ° βLinux Storage, Filesystem, Memory-Management, and BPF Summitβ, ΠΊΠΎΡΡΠΎ Π±Π΅ΡΠ΅ ΠΏΠΎΡΠ²Π΅ΡΠ΅Π½Π° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Rust Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ. ΠΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° Rust Π±Π΅ΡΠ΅ ΠΊΡΠΈΡΠΈΠΊΡΠ²Π°Π½ΠΎ ΠΎΡ Π’Π΅Π΄ Π¦ΠΎ (Ted Tsβo), Π°Π²ΡΠΎΡΠ° Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ ext2/ext3/ext4, ΠΊΠΎΠΉΡΠΎ ΡΡΠ°Π²Π½ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Π°ΡΠ° Rust-for-Linux Ρ ΠΎΠΏΠΈΡ Π΄Π° ΡΠ΅ Π½Π°ΠΊΠ°ΡΠ°Ρ Π²ΡΠΈΡΠΊΠΈ Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ°Ρ ΡΠ΅Π»ΠΈΠ³ΠΈΡΡΠ° Rust.
Π ΠΎΡΠ³ΠΎΠ²ΠΎΡ Π½Π° Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΠ»ΠΌΠ΅ΠΉΠ΄Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° Π½Π°Π΄ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈΡΠ΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° Π‘ΠΈ, Π·Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² ΠΊΠΎΠ΄Π° Π½Π° Π΅Π·ΠΈΠΊΠ° Rust, Π’Π΅Π΄ Π¦ΠΎ ΠΏΠΎΡΠΎΡΠΈ, ΡΠ΅ ΡΠ°ΠΊΠ°Π²Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²ΡΡΠΊΠ° ΠΏΡΠΎΠΌΡΠ½Π° Π² Π‘ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈΡΠ΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° Π·Π° Rust, Π° ΡΠΎΠΉ Π½Π΅ ΠΈΡΠΊΠ° Π΄Π° ΠΏΠΎΠ΅ΠΌΠ° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ Π·Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠ·Π½ΠΈΠΊΠ²Π°ΡΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π² ΠΊΠΎΠ΄Π° Π½Π° Rust ΠΈ ΡΠ»Π΅Π΄Π΅Π½Π΅ΡΠΎ Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° Rust ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ°. ΠΠΎΠ΄ΡΡ Π½Π° Π‘ΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΈ Π°ΠΊΠΎ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π°ΡΡΡΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° Π·Π° Rust, ΡΠΎΠ²Π° ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π°ΡΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΠΈ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π½Π΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ.
Π’Π΅Π΄ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠΌΡΡΠ°, ΡΠ΅ Π² ΠΎΠ±ΠΎΠ·ΡΠΈΠΌΠΎ Π±ΡΠ΄Π΅ΡΠ΅ ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° Π·Π° Rust ΡΠ΅ ΠΎΡΡΠ°Π½Π΅ Π²ΡΠΎΡΠΎΡΡΠ΅ΠΏΠ΅Π½Π½Π° ΠΈ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π² Π±ΠΈΠ½Π΄ΠΈΠ½Π³Π° ΡΠ΅ Π±ΡΠ΄Π΅ Π΄ΠΎΡΠ°Π΄Π΅Π½ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ°ΠΌΠΎ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° Rust-for-Linux, Π° Π½Π΅ Π·Π° ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ Π² ΡΠ΄ΡΠΎΡΠΎ. Π£ΠΊΠ°Π·Π²Π° ΡΠ΅, ΡΠ΅ Π½Π΅ Π²ΡΠΈΡΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΏΠ»Π°Π½ΠΈΡΠ°Ρ Π΄Π° ΠΈΠ·ΡΡΠ°Π²Π°Ρ Rust ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, ΡΠ»Π΅Π΄ Π²Π½Π°ΡΡΠ½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, Π²Π»ΠΈΡΠ΅ΡΠΈ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠ΄, ΡΠ΅ ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΡΠ°ΠΌΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΈΡ ΠΊΠΎΠ΄ Π½Π° Π‘ΠΈ, Π½ΠΎ Π½Π΅ ΠΈ Π΄Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Ρ Rust ΠΎΠ±Π²ΠΈΠ²ΠΊΠΈΡΠ΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π½Π΅ Π·Π½Π°ΡΡ Rust. Π Π΄ΠΈΡΠΊΡΡΠΈΡΡΠ° ΡΠ΅ ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½ΠΈ ΠΈ ΠΠΆΠ΅ΠΉΠΌΡ ΠΠΎΡΡΠΌΠ»ΠΈ, ΠΊΠΎΠΉΡΠΎ Π½Π°Π±Π»ΡΠ΄Π°Π²Π° ΠΏΠΎΠ΄ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° SCSI, ΠΊΠΎΠΉΡΠΎ Π·Π°ΡΠ²ΠΈ, ΡΠ΅ ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ° ΡΠ΅ ΠΊΠΎΠ΄ΠΈΡΠ° Π² ΠΎΠ±Π²ΠΈΠ²ΠΊΠΈΡΠ΅, ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ ΡΡΠ°Π²Π°Ρ ΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΈ ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΡΠ°.
ΠΠ΅ΠΆΠ΄ΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Google, ΠΊΠΎΡΡΠΎ ΠΌΠΈΠ½Π°Π»Π°ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π° ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ° ΡΡΡΠΌΡΠ΅ΡΠ° pvmfm Π½Π° Π΅Π·ΠΈΠΊΠ° Rust, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ, ΡΡΠ°ΡΡΠΈΡΠ°ΡΠΈ Π² ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Android, ΡΠΏΠΎΠ΄Π΅Π»ΠΈΡ
Π° ΠΎΠΏΠΈΡ Π·Π° ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π½Π° Rust Π² ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΡΡΡΠΌΡΠ΅ΡΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ Π½Π° C ΠΈΠ»ΠΈ C++. ΠΠΎΠΊΠ°Π·Π°Π½ΠΎ Π΅ ΠΊΠ°ΠΊ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΠΈΡΠΈ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΡΡΠΌΡΠ΅ΡΠΈΡΠ΅, ΠΊΠ°ΡΠΎ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π·Π°ΠΌΠ΅ΡΡΠ²Π°ΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° Rust. ΠΡΠ½ΠΎΠ²Π½ΠΎΡΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Rust ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΡΠΎΡΠ΅Π½ΠΎ ΠΊΡΠΌ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ ΠΌΡ Π·Π° Π½ΠΎΠ² ΠΊΠΎΠ΄ ΠΈ ΠΊΠΎΠ΄, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΡΠΈΡΠΈΡΠ½ΠΈ ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π²ΡΠ½ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½ΠΈ ΠΎΡ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ ΠΈΠ·ΡΠΎΡΠ½ΠΈΡΠΈ). ΠΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π½Π° ΠΊΠΎΠ΄ Π½Π° Rust ΠΈ C ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΏΡΠΎΡΠ»ΠΎΠΉΠΊΠΈ (shim), ΠΊΠΎΠΈΡΠΎ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ°Ρ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ API Π½Π° Rust ΠΈ C (C API ΡΠ΅ Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² ΠΊΠΎΠ΄ Π½Π° Rust ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ), ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΡΡΡΠΏΠΊΠ° ΠΏΠΎ ΡΡΡΠΏΠΊΠ° ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π½Π° API Π½Π° Rust.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
