ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π° Π²Π΅ΡΡΠΈΡ 1.78 Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Ρ ΠΎΠ±ΡΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Rust, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Mozilla, Π° Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° Π΄Π° ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΏΠΎΠ΄ ΡΠ°ΠΏΠΊΠ°ΡΠ° Π½Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠ° Π½Π΅ΡΡΠΎΠΏΠ°Π½ΡΠΊΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ Rust Foundation. ΠΠ·ΠΈΠΊΡΡ Π΅ ΡΠΎΠΊΡΡΠΈΡΠ°Π½ Π²ΡΡΡ Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΏΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° Π²ΠΈΡΠΎΠΊΠ° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎΡΡ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π·Π°Π΄Π°ΡΠΈ, Π±Π΅Π· Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠ±ΠΈΡΠ°ΡΠ΅Π» Π½Π° ΠΎΡΠΏΠ°Π΄ΡΡΠΈ ΠΈ runtime (runtime Π΅ ΡΠ²Π΅Π΄Π΅Π½ΠΎ Π΄ΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°).
ΠΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π² Rust ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΎΡ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈ Π·Π°ΡΠΈΡΠ°Π²Π°Ρ ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, Π²ΡΠ·Π½ΠΈΠΊΠ²Π°ΡΠΈ ΠΎΡ Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΊΠ°ΡΠΎ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½Π΅ Π½Π° Π½ΡΠ»Π΅Π²ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ ΠΈΠ·Π²ΡΠ½ Π³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π½Π° Π±ΡΡΠ΅ΡΠ° ΠΈ Π΄Ρ. ΠΠ° ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΏΡΠΎΠ΅ΠΊΡΡΡ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈΡ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Cargo. ΠΠ° Ρ ΠΎΡΡΠ²Π°Π½Π΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ crates.io.
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π² Rust ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΡΡΠ΅Π· ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠΊΠΈ, ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΎΡΡΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅, ΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΆΠΈΠ²ΠΎΡ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ (ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π° Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ) ΠΈ ΠΎΡΠ΅Π½ΠΊΠ° Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎΡΡΡΠ° Π½Π° Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄Π°. Rust ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° Π·Π°ΡΠΈΡΠ° ΠΎΡ ΠΏΡΠ΅ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅Π»ΠΈ ΡΠΈΡΠ»Π°, ΠΈΠ·ΠΈΡΠΊΠ²Π° Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ ΠΈΠΌ, ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΏΡΠΈΠ»Π°Π³Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ° Π·Π° Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡ (immutable) Π½Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠΊΠΈ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠΈΠ»Π½Π° ΡΡΠ°ΡΠΈΡΠ½Π° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ, Π·Π° Π΄Π° ΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ°Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΠΈ Π½ΠΎΠ²ΠΎΠ²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ:
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π΅ Π½ΠΎΠ²ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π·Π° ΠΈΠΌΠ΅Π½Π° Π½Π° Π°ΡΡΠΈΠ±ΡΡΠΈ Β«#[diagnostic]Β», ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π²ΡΡΡ Ρ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° Π·Π° Π³ΡΠ΅ΡΠΊΠΈ, ΠΈΠ·Π΄Π°Π²Π°Π½ΠΈ ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ°. ΠΡΡΠ²ΠΈΡΡ Π°ΡΡΠΈΠ±ΡΡ Π² Π½ΠΎΠ²ΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π΅ Β«#[diagnostic::on_unimplemented]Β», ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° Π·Π° Π³ΡΠ΅ΡΠΊΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΈΠΏΠ°ΠΆ, ΠΊΠΎΠΉΡΠΎ Π½Π΅ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π·Π° ΡΠΈΠΏ. #[diagnostic::on_unimplemented( message = Β«My Message for `ImportantTrait` is not implemented for `{Self}`Β», label = Β«My LabelΒ», note = Β«Note 1Β», note = Β«Note 2Β» )] trait ImportantTrait {} fn use_my_trait(_: impl ImportantTrait) {} fn main() { use_my_trait(String::new()); } error[E0277]: My Message for `ImportantTrait` is not implemented for `String` β> src/main.rs:12:18 | 12 | use_my_trait(String::new()); | ββββ ^^^^^^^^^^^^^ My Label | | | required by a bound introduced by this call | = help: the trait `ImportantTrait` is not implemented for `String` = note: Note 1 = note: Note 2
- ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΈΡΠ΅ assert ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΊΡΠΌ unsafe ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅, ΡΠ΅Π³Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΎΡΠ»Π°Π³Π°Π½ΠΈ Π΄ΠΎ Π΅ΡΠ°ΠΏΠ° Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π·ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π² ΡΠ΅ΠΆΠΈΠΌ Β«#[cfg(debug_assertions)]Β». ΠΠ° Π΄Π° ΡΡΠ°Π±ΠΎΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈΡΠ΅, Π²Π΅ΡΠ΅ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΡΠ»Π°Π΄ΡΡΠ½ΠΈ assert-ΠΈ Π·Π° ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΈΠ»ΠΈ ΠΎΡΠ»Π°Π΄ΡΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈ Π½Π° Π²Π°ΡΠΈΡ ΠΊΠΎΠ΄.
- ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΠΈΡΠΎ Π²Π»ΠΈΡΡΡ Π½Π° ΠΏΠΎΠ΄ΡΠ°Π²Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈ ΡΡΠ΅Π·ΠΎΠ²Π΅ (slice), ΡΠ΅Π³Π° Π΅ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ ΠΈ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ Π²Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ. Π€ΡΠ½ΠΊΡΠΈΡΡΠ° pointer::align_offset, ΠΊΠΎΡΡΠΎ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π° offset Π·Π° ΠΏΠΎΠ΄ΡΠ°Π²Π½ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΡΠ΅Π³Π° Π²ΡΡΡΠ° usize::MAX ΡΠ°ΠΌΠΎ ΠΏΡΠΈ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ°. Π€ΡΠ½ΠΊΡΠΈΠΈΡΠ΅ slice::align_to ΠΈ slice::align_to_mut, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Ρ ΡΡΠ΅Π·ΠΎΠ²Π΅ΡΠ΅ Π² ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Ρ ΠΏΠΎΠ΄ΡΠ°Π²Π½Π΅Π½ ΡΡΠ΅Π΄Π΅Π½ ΡΡΠ΅Π· ΠΈ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈ Π½Π°ΡΠ°Π»Π½ΠΈ ΠΈ ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΡΠ΅Π·ΠΎΠ²Π΅, ΡΠ΅Π³Π° Π²ΠΈΠ½Π°Π³ΠΈ Π²ΡΡΡΠ°Ρ Π½Π°ΠΉ-Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° ΡΡΠ΅Π΄Π½Π° ΡΠ°ΡΡ.
- Π ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡΠ° Π½Π° ΡΡΠ°Π±ΠΈΠ»Π½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΡΠ° ΠΏΡΠ΅Π²Π΅Π΄Π΅Π½ΠΈ:
- impl Read for &Stdin
- Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΎ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π΅ΡΡΠ°ΡΠΈΡΠ½ΠΎ (Π½Π΅ βstatic) Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΆΠΈΠ²ΠΎΡ Π·Π° Π½ΡΠΊΠΎΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ std::error::Error.
- Π ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° impl Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° ?Sized.
- impl From for io::Error
- Π€ΡΠ½ΠΊΡΠΈΡΡΠ° Barrier::new() Π΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Ρ ΠΏΡΠΈΠ·Π½Π°ΠΊ Β«constΒ» Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° Π²ΡΡΠΊΠ°ΠΊΡΠ² Π²ΠΈΠ΄ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ.
- ΠΠ° ΡΠ΅Π»Π΅Π²ΠΈΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ x86_64-pc-windows-msvc, i686-pc-windows-msvc, x86_64-pc-windows-gnu, i686-pc-windows-gnu, x86_64-pc-windows-gnullvm ΠΈ i686-pc-windows-gnullvm Π²Π΅ΡΠ΅ Π΅ Π½ΡΠΆΠ½Π° ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π²Π΅ΡΡΠΈΡ Windows 10.
- ΠΡΠ²Π΅Π΄Π΅Π½ Π΅ ΡΡΠ΅ΡΠΈ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈΡΠ΅ wasm32-wasip2, arm64ec-pc-windows-msvc, armv8r-none-eabihf ΠΈ loongarch64-unknown-linux-musl. Π’ΡΠ΅ΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°, Π½ΠΎ Π±Π΅Π· Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΡΠ΅ΡΡΠ²Π°Π½Π΅, ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π½Π° ΠΊΠΎΠ΄Π°.
- ΠΡΠ²Π΅Π΄Π΅Π½ΠΎ Π΅ Π²ΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠ΅Π»Π΅Π²Π°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Add wasm32-wasip1. ΠΡΠΎΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° Π³Π°ΡΠ°Π½ΡΠΈΡ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ°.
- ΠΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° wasm32-wasi-preview1-threads Π΅ ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π° Π² wasm32-wasip1-threads.
- ΠΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ Π΅ ΠΏΡΠ΅Π½Π΅ΡΠ΅Π½ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° LLVM 18. ΠΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° LLVM 18 Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈΡΠ΅ x86-32 ΠΈ x86-64 Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ ABI, ΡΠ²ΡΡΠ·Π°Π½ Ρ ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ u128 ΠΈ i128.
- Π ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈΡ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Cargo Π΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½Π° Π²Π΅ΡΡΠΈΡ 4 Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ (lockfile v4).
- Π Cargo Π΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ Π³Π»ΠΎΠ±Π°Π»Π΅Π½ ΠΊΠ΅Ρ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ. ΠΠ΅ΡΡΡ ΡΠ΅ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π° Π² ΡΠ°ΠΉΠ»Π° $CARGO_HOME/.global-cache ΡΡΠ΅Π· SQLite, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° ΠΈ ΠΎΡΡΠ°Π·ΡΠ²Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, crate ΡΠ°ΠΉΠ»Π°, Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° Ρ ΠΊΠΎΠ΄Π°, git clone ΠΈ git checkout.
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Borgo, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΡΡΠ΅ΠΌΠΈ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎ-ΠΈΠ·ΡΠ°Π·ΠΈΡΠ΅Π»Π΅Π½ ΠΎΡ Π΅Π·ΠΈΠΊΠ° Go, Π½ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΠ»ΠΎΠΆΠ΅Π½ ΠΎΡ Π΅Π·ΠΈΠΊΠ° Rust. Borgo ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ° Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° Go ΠΈ Rust, Π·Π°ΠΏΡΠ»Π²Π°ΠΉΠΊΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈΡΠ΅ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΠΎΡ Π΅Π·ΠΈΡΠΈΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅Π·ΠΈΠΊΡΡ Go Π΅ ΠΏΡΠΎΡΡ ΠΈ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌ, Π½ΠΎ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠΈΠΏΠΎΠ²Π΅. ΠΠ·ΠΈΠΊΡΡ Rust ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅, Π½ΠΎ Π΅ ΠΏΡΠ΅ΠΊΠ°Π»Π΅Π½ΠΎ ΡΡΠ»ΠΎΠΆΠ½Π΅Π½. ΠΡΠΎΠ΅ΠΊΡΡΡ Π΅ ΡΠ°Π·Π²ΠΈΠ²Π°Π½ ΠΎΡ ΠΠ°ΡΠΊΠΎ Π‘Π°ΠΌΠΏΠ΅Π»Π΅Π³ΡΠΈΠ½ΠΈ, Π°Π²ΡΠΎΡ Π½Π° ΠΊΠ½ΠΈΠ³Π°ΡΠ° βThe Simple Haskell Handbookβ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Quad CI.

Π Borgo ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠ°ΡΠΈΡΠ½Π° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ, ΡΠΈΠΏΠΎΠ²Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° Go ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° Rust. ΠΠΎΡΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΡΠΊΠΈ Ρ Π·Π°ΠΏΠ΅ΡΠ°Ρ Π² ΠΊΡΠ°Ρ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ΡΠ΅ Π² ΠΊΠΎΠ΄Π° Π½Π° Borgo Π½Π΅ Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ. ΠΠΎΠ΄ΡΡ Π½Π° Π΅Π·ΠΈΠΊΠ° Borgo ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° Π² ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Go, ΠΊΠΎΠ΅ΡΠΎ Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ Π·Π° Π΅Π·ΠΈΠΊΠ° Go. ΠΠΎΠ΄ΡΡ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π΅Π·ΠΈΠΊΠ° Rust ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ ISC. use fmt enum NetworkState { Loading, Failed(int), Success(T), } struct Response { title: string, duration: int, } fn main() { let res = Response { title: Β«Hello worldΒ», duration: 0, } let state = NetworkState.Success(res) let msg = match state { NetworkState.Loading => Β«still loadingΒ», NetworkState.Failed(code) => fmt.Sprintf(Β«Got error code: %dΒ», code), NetworkState.Success(res) => res.title, } fmt.Println(msg) }
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
