ΠΠ·Π΄Π°Π΄Π΅Π½Π° Π΅ Π²Π΅ΡΡΠΈΡ 1.47 Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ Rust, ΡΡΠ·Π΄Π°Π΄Π΅Π½ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Mozilla. ΠΠ·ΠΈΠΊΡΡ ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ° Π²ΡΡΡ Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° ΠΏΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° Π²ΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΡΠΌ Π½Π° Π·Π°Π΄Π°ΡΠΈΡΠ΅ Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ±ΠΈΡΠ°Ρ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ ΠΈΠ»ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ (Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ Π΄ΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°).
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° Rust Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΏΡΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈ ΠΏΡΠ΅Π΄ΠΏΠ°Π·Π²Π° ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΏΡΠΎΠΈΠ·ΡΠΈΡΠ°ΡΠΈ ΠΎΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠ°ΡΠΎ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΎΠ±Π»Π°ΡΡ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΡ Π΅ Π±ΠΈΠ»Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½Π°, Π΄Π΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Π½Π° Π½ΡΠ»Π΅Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π», ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡΡΠ΅Ρ ΠΈ Ρ.Π½. ΠΠ° ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΏΡΠΎΠ΅ΠΊΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Cargo. Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ crates.io ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π·Π° Ρ ΠΎΡΡΠ²Π°Π½Π΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΈΠ½ΠΎΠ²Π°ΡΠΈΠΈ:
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΡΠΈΠ·Π½Π°ΡΠΈ Π·Π° ΠΌΠ°ΡΠΈΠ²ΠΈ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ ΡΠ°Π·ΠΌΠ΅Ρ. ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π°, ΠΏΠΎΡΠ°Π΄ΠΈ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Ρ ΠΎΠ±ΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π»ΠΈ ΡΠΈΡΠ»Π°, ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡΠ΅ Π²Π³ΡΠ°Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΡΠ°ΠΌΠΎ Π·Π° ΠΌΠ°ΡΠΈΠ²ΠΈ Ρ ΡΠ°Π·ΠΌΠ΅Ρ Π΄ΠΎ 32 Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° (Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ°Π·ΠΌΠ΅Ρ Π±ΡΡ
Π° ΡΡΠ°ΡΠΈΡΠ½ΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈ). ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° const generics ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΡΡΠ°Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Ρ Π³Π΅Π½Π΅ΡΠΈΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° ΠΌΠ°ΡΠΈΠ²Π°, Π½ΠΎ ΡΠ΅ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠ° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π² ΡΡΠ°Π±ΠΈΠ»Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ°, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΠ° Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈ Π² ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° ΠΈ ΡΠ΅Π³Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π° ΡΠΈΠΏΠΎΠ²Π΅ ΠΌΠ°ΡΠΈΠ²ΠΈ ΠΎΡ Π²ΡΡΠΊΠ°ΠΊΡΠ² ΡΠ°Π·ΠΌΠ΅Ρ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π² Rust 1.47 ΡΠ΅ ΠΎΡΠΏΠ΅ΡΠ°ΡΠ° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΌΠ°ΡΠΈΠ², Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π±ΠΈ Π΄ΠΎΠ²Π΅Π»ΠΎ Π΄ΠΎ Π³ΡΠ΅ΡΠΊΠ°:
fn main() {
Π½Π΅ΠΊΠ° xs = [0; 34];
println!("{:?}", xs);
}
- ΠΡΠΈΠ³ΡΡΠ΅Π½ ΠΈΠ·Ρ ΠΎΠ΄ Π½Π° ΠΏΠΎ-ΠΊΡΡΠΈ ΡΠ»Π΅Π΄ΠΈ (backtrace), ΠΈΠ·Ρ ΠΎΠ΄ Π² Π°Π²Π°ΡΠΈΠΉΠ½ΠΈ ΡΠΈΡΡΠ°ΡΠΈΠΈ. ΠΠ»Π΅ΠΌΠ΅Π½ΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ Π² ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π½ΠΎ Π·Π°ΡΡΡΠΏΠ²Π°Ρ ΠΈΠ·Ρ ΠΎΠ΄Π° ΠΈ ΠΎΡΠ²Π»ΠΈΡΠ°Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΡΠΎ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΏΡΠΈΡΠΈΠ½ΠΈ Π·Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΡΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Ρ ΠΎΡ ΡΡΠ°ΡΠΈΡΠ°Π½Π΅ΡΠΎ. ΠΠ° Π΄Π° Π²ΡΡΠ½Π΅ΡΠ΅ ΠΏΡΠ»Π½ΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° "RUST_BACKTRACE=full". ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΊΠΎΠ΄Π°
fn main() {
ΠΏΠ°Π½ΠΈΠΊΠ°!();
}
ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ΡΠΎ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°ΡΠ΅ Π½Π° 23 Π΅ΡΠ°ΠΏΠ°, Π½ΠΎ ΡΠ΅Π³Π° ΡΠ΅ Π±ΡΠ΄Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ Π΄ΠΎ 3 Π΅ΡΠ°ΠΏΠ°, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΡΡΡΠ½ΠΎΡΡΡΠ°:
Π½ΠΈΡΠΊΠ° 'main' ΡΠ΅ ΠΏΠ°Π½ΠΈΠΊΡΠΎΡΠ° ΠΏΡΠΈ 'ΡΠ²Π½Π° ΠΏΠ°Π½ΠΈΠΊΠ°', src/main.rs:2:5
ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ΅ΠΊΠ°:
0: std::panicking::begin_panic
Π² /rustc/dβ¦d75a/library/std/src/panicking.rs:497
1: Π΄Π΅ΡΡΠΊΠ° ΠΏΠ»ΠΎΡΠ°Π΄ΠΊΠ°::Π³Π»Π°Π²Π½Π°
Π½Π° ./src/main.rs:2
2: core::ops::function::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, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π° ΡΠΊΠΎΡΠΎ Π΄Π° ΠΈΠ·Π»Π΅Π·Π΅ Π΄Π½ΠΈ.
- ΠΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Π½Π° 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_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace ΠΈ is_ascii_control Π·Π° ΡΠΈΠΏΠΎΠ²Π΅ char ΠΈ u8.
- ΠΠ° FreeBSD ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΡΡ ΠΎΡ FreeBSD 11.4 (FreeBSD 10 Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° LLVM 11).
ΠΠ·Π΅ΡΠΎ ΠΎΡ opennet.ru
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru