Руст 1.47 ИзданиС Π·Π° програмски јазик

ОбјавСно Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ 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

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€