Π‘ΠΎΡΡΠΎΡΠ»ΡΡ ΡΠ΅Π»ΠΈΠ· ΡΠ·ΡΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Rust 1.34, ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Mozilla. Π―Π·ΡΠΊ ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π½ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΏΠ°ΠΌΡΡΡΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π΄Π°Π½ΠΈΠΉ, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΠ±Ρ ΠΎΠ΄ΡΡΡ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ° ΠΈ runtime.
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ Π² Rust ΠΈΠ·Π±Π°Π²Π»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΎΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ ΠΈ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΡ ΠΈΠ·-Π·Π° Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ°ΠΌΡΡΡΡ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎΡΠ»Π΅ Π΅Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ, ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΡΠ»Π΅Π²ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, Π²ΡΡ ΠΎΠ΄ Π·Π° Π³ΡΠ°Π½ΠΈΡΡ Π±ΡΡΠ΅ΡΠ° ΠΈ Ρ.ΠΏ. ΠΠ»Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Cargo, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½ΡΠΆΠ½ΡΠ΅ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΠΈΠΊ. ΠΠ»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ crates.io.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π½ΠΎΠ²ΡΠ΅ΡΡΠ²Π°:
- Π ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Cargo Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΌΠΈ ΡΠ΅Π΅ΡΡΡΠ°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠΎΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΌ ΡΠ΅Π΅ΡΡΡΠΎΠΌ crates.io. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π·Π°ΠΊΡΡΡΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΡΠ΅Π΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² Cargo.toml, ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ
ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² ΠΌΠΎΠ΄Π΅Π»Ρ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΡ
ΠΎΠΆΡΡ Ρ crates.io, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ»Π°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ
ΠΊΠ°ΠΊ Π½Π° crates.io, ΡΠ°ΠΊ ΠΈ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ΅Π΅ΡΡΡ.
ΠΠ»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠ΅Π΅ΡΡΡΠ° Π² ~/.cargo/config
Π² ΡΠ΅ΠΊΡΠΈΠΈ «[registries]» ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° Π½ΠΎΠ²Π°Ρ ΠΎΠΏΡΠΈΡ «my-registry», Π° Π΄Π»Ρ ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠ΅Π΅ΡΡΡΠ° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ Π² Cargo.toml Π² ΡΠ΅ΠΊΡΠΈΠΈ «[dependencies]» ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΎΠΏΡΠΈΡ «other-crate». ΠΠ»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌΡ ΡΠ΅Π΅ΡΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΠΎΠΊΠ΅Π½ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π² ΡΠ°ΠΉΠ» ~/.cargo/credentials ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
«cargo login —registry=my-registry», Π° Π΄Π»Ρ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° —
«cargo publish —registry=my-registry»; - ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° «?» Π² ΡΠ΅ΡΡΠ°Ρ
doctests, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅ΡΡΠΎΠ². Π Π°Π½Π΅Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ
«?» ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ² ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ «fn main()» ΠΈΠ»ΠΈ Π² ΡΡΠ½ΠΊΡΠΈΡΡ «#[test]»; - Π ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΡΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π°ΡΡΠΈΠ±ΡΡΠ°Ρ (custom attribute) ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ Π½Π°Π±ΠΎΡΠΎΠ² ΡΠΎΠΊΠ΅Π½ΠΎΠ² («#[attr($tokens)]», «#[attr[$tokens]] ΠΈ #[attr{$tokens}]»). Π Π°Π½Π΅Π΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠΎΠ³Π»ΠΈ Π·Π°Π΄Π°Π²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Π΄ΡΠ΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΌ/ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ c ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ «#[foo(bar, baz(quux, foo = «bar»))]», Π° ΡΠ΅ΠΏΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠΉ (‘#[range(0..10)]’) ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π²ΠΈΠ΄Π° «#[bound(T: MyTrait)]»;
- Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΡΠΈΠΏΠ°ΠΆΠΈ (trait) TryFrom ΠΈ TryInto, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ from_be_bytes, Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ
ΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ, Π½ΠΎ Π΄Π°Π½Π½ΡΠ΅ ΡΠ°ΡΡΠΎ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ c ΡΠΈΠΏΠΎΠΌ Slice, Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ ΠΈ ΡΠ»Π°ΠΉΡΠ°ΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Π²ΡΡΡΠ½ΡΡ. ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π½ΠΎΠ²ΡΡ
ΡΠΈΠΏΠ°ΠΆΠ΅ΠΉ ΡΠΊΠ°Π·Π°Π½Π½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π° Π½Π° Π»Π΅ΡΡ ΡΠ΅ΡΠ΅Π· Π²ΡΠ·ΠΎΠ² .try_into(), Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, «let num = u32::from_be_bytes(slice.try_into()?)». ΠΠ»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ΅Π³Π΄Π° Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ· ΡΠΈΠΏΠ° u8 Π² u32) Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠΈΠΏ ΠΎΡΠΈΠ±ΠΎΠΊ Infallible, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
TryFrom Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ «From»; - ΠΠ±ΡΡΠ²Π»Π΅Π½Π° ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΡ CommandExt::before_exec, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²ΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ exec, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π΄ΠΎΡΠ΅ΡΠ½Π΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΎΡΠ²Π΅ΡΠ²Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° fork(). Π ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ
ΡΡΠ»ΠΎΠ²ΠΈΡΡ
Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΡΡΡΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ ΠΈ ΠΎΡΡΠ°ΠΆΡΠ½Π½ΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ, ΠΌΠΎΠ³Π»ΠΈ Π±ΡΡΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½Ρ, ΡΡΠΎ ΠΌΠΎΠ³Π»ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΈ Π½Π΅Π²Π΅ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.
ΠΠΌΠ΅ΡΡΠΎ before_exec ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ unsafe-ΡΡΠ½ΠΊΡΠΈΡ CommandExt::pre_exec. - Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π·Π½Π°ΠΊΠΎΠ²ΡΠ΅ ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠ΅ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΠ΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠΈΠΏΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΎΡ 8 Π΄ΠΎ 64 Π±ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, AtomicU8), Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ NonZeroI[8|16|32|54|128].
- Π ΡΠ°Π·ΡΡΠ΄ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Π° Π½ΠΎΠ²Π°Ρ ΠΏΠΎΡΡΠΈΡ API, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ Any::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub] ΠΈ SystemTime::checked_[add|sub]. Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ iter::from_fn ΠΈ iter::successors;
- ΠΠ»Ρ Π²ΡΠ΅Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ checked_pow, saturating_pow, wrapping_pow ΠΈ overflowing_pow;
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠΉ ΠΎΠΏΡΠΈΠΈ «-C linker-plugin-lto» (rustc ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΠΊΠΎΠ΄ Rust Π² Π±ΠΈΡΠΊΠΎΠ΄ LLVM, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ LTO-ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ).
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru