ΠΠ±ΡΠ°Π²Π΅Π½ΠΎ Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ 1.47 ΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈΠΎΡ ΡΠ°Π·ΠΈΠΊ Rust system, ΠΎΡΠ½ΠΎΠ²Π°Π½ ΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Mozilla. ΠΠ°Π·ΠΈΠΊΠΎΡ ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ° Π½Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡΠ° Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ°, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° ΠΏΠΎΡΡΠΈΠ³Π½ΡΠ²Π°ΡΠ΅ Π²ΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·Π°ΠΌ Π½Π° Π·Π°Π΄Π°ΡΠΈΡΠ΅ Π±Π΅Π· ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΡΠΎΠ±ΠΈΡΠ°Ρ Π½Π° ΡΡΠ±ΡΠ΅ ΠΈΠ»ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° (Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΡΠ°Π΅ΡΠ΅ Π΅ ΡΠ²Π΅Π΄Π΅Π½ΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ° ΠΈ ΠΎΠ΄ΡΠΆΡΠ²Π°ΡΠ΅ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°).
ΠΠ²ΡΠΎΠΌΠ°ΡΡΠΊΠΎΡΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π° Rust Π³ΠΈ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΏΡΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°ΡΠ΅ ΡΠΎ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΈΡΠ΅ ΠΈ Π·Π°ΡΡΠΈΡΡΠ²Π° ΠΎΠ΄ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΡΠΎ ΠΏΡΠΎΠΈΠ·Π»Π΅Π³ΡΠ²Π°Π°Ρ ΠΎΠ΄ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡΠ° ΡΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠΊΠΈ ΡΠ΅Π³ΠΈΠΎΠ½ ΠΎΡΠΊΠ°ΠΊΠΎ ΡΠ΅ ΡΠ΅ ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΠΈ, Π΄Π΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Π½Π° Π½ΡΠ»Π° ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ, ΠΏΡΠ΅ΡΠ΅ΠΊΠΎΡΡΠ²Π°ΡΠ° Π½Π° Π±Π°ΡΠ΅ΡΠΎΡ ΠΈΡΠ½. ΠΠ° Π΄Π° ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π΄Π° ΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ ΡΠΊΠ»ΠΎΠΏΡΠ²Π°ΡΠ΅ ΠΈ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΡΠ²Π° ΡΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Π³ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΌΠ΅Π½Π°ΡΠ΅ΡΠΎΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Cargo. Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌΠΎΡ crates.io Π΅ ΠΏΠΎΠ΄Π΄ΡΠΆΠ°Π½ Π·Π° Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΠ»Π°Π²Π½ΠΈΡΠ΅ ΠΈΠ½ΠΎΠ²Π°ΡΠΈΠΈ:
- Π‘ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΡΡΡΠΈ Π·Π° Π½ΠΈΠ·ΠΈ ΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°. ΠΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎ, ΠΏΠΎΡΠ°Π΄ΠΈ Π½Π΅ΠΌΠΎΠΆΠ½ΠΎΡΡΠ° Π΄Π° ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π°Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΡΠΈΡΠ΅ ΡΠ΅Π»ΠΈ Π±ΡΠΎΠ΅Π²ΠΈ, ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΡΠ΅ Π²Π³ΡΠ°Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΠΎΡΠΎΠ±ΠΈΠ½ΠΈ ΡΠ°ΠΌΠΎ Π·Π° Π½ΠΈΠ·ΠΈ ΡΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π΄ΠΎ 32 Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ (ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ Π·Π° ΡΠ΅ΠΊΠΎΡΠ° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π±Π΅Π° ΡΡΠ°ΡΠΈΡΠΊΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈ). ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΠ° Π½Π° const generics, ΡΡΠ°Π½Π° ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π°Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΊΠΎΡΠ° Π±ΠΈΠ»ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° Π½ΠΈΠ·Π°, Π½ΠΎ ΡΠΈΠ΅ ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ ΡΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π²ΠΎ ΡΡΠ°Π±ΠΈΠ»Π½ΠΈΡΠ΅ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ, ΠΈΠ°ΠΊΠΎ ΡΠΈΠ΅ ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ Π²ΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ ΠΈ ΡΠ΅Π³Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π²ΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π° ΡΠΈΠΏΠΎΠ²ΠΈ Π½ΠΈΠ·ΠΈ ΠΎΠ΄ ΠΊΠΎΡΠ° Π±ΠΈΠ»ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°.
ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄Π½Π°Π²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠ° Π²ΠΎ Rust 1.47 ΡΠ΅ ΡΠ° ΠΎΡΠΏΠ΅ΡΠ°ΡΠΈ ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°ΡΠ° Π½Π° Π½ΠΈΠ·Π°ΡΠ°, ΠΈΠ°ΠΊΠΎ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠΈΡΠ°ΡΠ΅ ΡΠΎ Π³ΡΠ΅ΡΠΊΠ°:
fnmain() {
Π½Π΅ΠΊΠ° xs = [0; 34];
println!("{:?}", xs);
}
- ΠΠ±Π΅Π·Π±Π΅Π΄Π΅Π½ ΠΈΠ·Π»Π΅Π· Π½Π° ΠΏΠΎΠΊΡΠ°ΡΠΊΠΈ ΡΡΠ°Π³ΠΈ (backtrace), ΠΈΠ·Π»Π΅Π· Π²ΠΎ ΠΈΡΠ½ΠΈ ΡΠΈΡΡΠ°ΡΠΈΠΈ. ΠΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ ΠΊΠΎΠΈ Π½Π΅ ΡΠ΅ ΠΎΠ΄ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ Π²ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π½ΠΎ Π³ΠΎ Π½Π°ΡΡΡΠΏΡΠ²Π°Π°Ρ ΠΈΠ·Π»Π΅Π·ΠΎΡ ΠΈ Π³ΠΎ ΠΎΠ΄Π²Π»Π΅ΠΊΡΠ²Π°Π°Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΡΠΎ ΠΎΠ΄ ΠΏΡΠΈΠΌΠ°ΡΠ½ΠΈΡΠ΅ ΠΏΡΠΈΡΠΈΠ½ΠΈ Π·Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΡ, ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈ ΠΎΠ΄ ΡΡΠ°Π³Π°ΡΠ°. ΠΠ° Π΄Π° Π²ΡΠ°ΡΠΈΡΠ΅ ΡΠ΅Π»ΠΎΡΠ½Π° ΡΡΠ°Π³Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π½Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ° βRUST_BACKTRACE=fullβ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΠΊΠΎΠ΄ΠΎΡ
fnmain() {
ΠΏΠ°Π½ΠΈΠΊΠ°!();
}
ΠΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ, ΡΡΠ°Π³Π°ΡΠ° Π±Π΅ΡΠ΅ ΠΈΠ·Π²Π΅Π΄Π΅Π½Π° Π²ΠΎ 23 ΡΠ°Π·ΠΈ, Π½ΠΎ ΡΠ΅Π³Π° ΡΠ΅ ΡΠ΅ Π½Π°ΠΌΠ°Π»ΠΈ Π½Π° 3 ΡΠ°Π·ΠΈ, ΡΡΠΎ ΡΠ΅ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π²Π΅Π΄Π½Π°Ρ Π΄Π° ΡΠ° ΡΡΠ°ΡΠΈΡΠ΅ ΡΡΡΡΠΈΠ½Π°ΡΠ°:
Π½ΠΈΡΠΊΠ°ΡΠ° βΠ³Π»Π°Π²Π½Π°β ΠΏΠ°Π½ΠΈΠΊΠ° ΠΏΡΠΈ βΠ΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½Π° ΠΏΠ°Π½ΠΈΠΊΠ°β, src/main.rs:2:5
ΠΎΡΠ°ΠΊ Π½Π°Π·Π°Π΄:
0: std::panicing::begin_panic
Π½Π° /rustc/dβ¦d75a/library/std/src/panicking.rs:497
1: ΠΈΠ³ΡΠ°Π»ΠΈΡΡΠ΅::Π³Π»Π°Π²Π½ΠΎ
Π½Π° ./src/main.rs:2
2: ΡΠ°Π΄ΡΠΎ::ops::ΡΡΠ½ΠΊΡΠΈΡΠ°::FnOnce::call_once
Π½Π° /rustc/dβ¦d75a/library/core/src/ops/function.rs:227
- ΠΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ rustc Π΅ Π°ΠΆΡΡΠΈΡΠ°Π½ Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΠΈ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° LLVM 11 (Rust ΠΊΠΎΡΠΈΡΡΠΈ LLVM ΠΊΠ°ΠΊΠΎ Π·Π°Π΄Π½ΠΈΠ½Π° Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ). ΠΠΎ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅, ΠΌΠΎΠΆΠ½ΠΎΡΡΠ° Π·Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ ΡΠΎ ΡΡΠ°ΡΠΈΠΎΡ LLVM, Π΄ΠΎ Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° 8, Π΅ Π·Π°Π΄ΡΠΆΠ°Π½Π°, Π½ΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ (Π²ΠΎ rust-lang/llvm-project) ΡΠ΅Π³Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ LLVM 11. ΠΠ·Π΄Π°Π²Π°ΡΠ΅ΡΠΎ Π½Π° LLVM 11 ΡΠ΅ ΠΎΡΠ΅ΠΊΡΠ²Π° Π²ΠΎ Π½Π°ΡΠ΅Π΄Π½ΠΈΠΎΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π΄Π΅Π½ΠΎΠ²ΠΈ.
- ΠΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Windows, ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ rustc ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ΅ΡΠΎΡ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΡ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π° (Control Flow Guard), Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° Π·Π½Π°ΠΌΠ΅ΡΠΎ β-C control-flow-guardβ. ΠΠ° Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ ΠΎΠ²Π° Π·Π½Π°ΠΌΠ΅ Π·Π°ΡΠ΅Π³Π° Π΅ ΠΈΠ³Π½ΠΎΡΠΈΡΠ°Π½ΠΎ.
- ΠΠΎΠ² Π΄Π΅Π» ΠΎΠ΄ API Π΅ ΠΏΡΠ΅ΡΡΠ»Π΅Π½ Π²ΠΎ ΡΡΠ°Π±ΠΈΠ»Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠ°, Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΡΠΈ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ Ident::new_raw, Range::is_empty, RangeInclusive::is_empty, Result::as_deref, Result::as_deref_mut, Vec:: leak, pointer::offset_from , f32:: TAU ΠΈ f64::TAU.
- ΠΡΡΠΈΠ±ΡΡΠΎΡ βconstβ, ΠΊΠΎΡ ΡΠ° ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π° ΠΌΠΎΠΆΠ½ΠΎΡΡΠ° Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ ΠΊΠΎΡ Π±ΠΈΠ»ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π°ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ, ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅:
- Π½ΠΎΠ²ΠΎ Π·Π° ΡΠΈΡΠ΅ ΡΠ΅Π»ΠΈ Π±ΡΠΎΠ΅Π²ΠΈ ΠΎΡΠ²Π΅Π½ Π½ΡΠ»Π°;
- checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub ΠΈ saturating_mul Π·Π° ΡΠΈΡΠ΅ ΡΠ΅Π»ΠΈ Π±ΡΠΎΠ΅Π²ΠΈ;
- is_ascii_alphabetic, is_ascii_Π³ΠΎΠ»Π΅ΠΌΠΈ Π±ΡΠΊΠ²ΠΈ, is_ascii_ΠΌΠ°Π»ΠΈ, is_ascii_alphanumeric, is_ascii_ΡΠΈΡΡΠ΅Π½, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace and is_ control for ΡΠΈΠΏΠΎΠ²ΠΈ.
- ΠΠ° FreeBSD, ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠΎΡ Π°Π»Π°ΡΠΊΠΈ ΠΎΠ΄ FreeBSD 11.4 (FreeBSD 10 Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° LLVM 11).
ΠΠ΅ΠΌΠ΅Π½ΠΎ ΠΎΠ΄ opennet.ru
ΠΠ·Π²ΠΎΡ: linux.org.ru