ΠŸΡƒΡΠΊΠ°Π½Π΅ Π½Π° Rust 1.86. ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π°Ρ‚Π° спСцификация Π½Π° Π΅Π·ΠΈΠΊΠ° Rust

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ Π΅ Ρ€Π΅Π»ΠΈΠ· Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ с ΠΎΠ±Ρ‰ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Rust 1.86, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΎΡ‚ Mozilla, Π½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° сС Ρ€Π°Π·Π²ΠΈΠ²Π° ΠΏΠΎΠ΄ покровитСлството Π½Π° нСзависима нСправитСлствСна организация Rust Foundation. Π•Π·ΠΈΠΊΡŠΡ‚ Π΅ фокусиран Π²ΡŠΡ€Ρ…Ρƒ бСзопасното ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ прСдоставя срСдства Π·Π° постиганС Π½Π° висок ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ ΠΏΡ€ΠΈ изпълнСниС Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠ°Ρ‚ΠΎ Π² ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π΅ изисква ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° garbage collector ΠΈ runtime (runtime сС свСТда Π΄ΠΎ основна инициализация ΠΈ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π΅ Π½Π° стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°).

ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π² Rust освобоТдават Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΎΡ‚ Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΏΡ€ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ Π·Π°Ρ‰ΠΈΡ‚Π°Π²Π°Ρ‚ ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, Π²ΡŠΠ·Π½ΠΈΠΊΠ²Π°Ρ‰ΠΈ ΠΎΡ‚ нискоуровнСвата Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ освободСна ΠΏΠ°ΠΌΠ΅Ρ‚, Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π΅ Π½Π° Π½ΡƒΠ»Π΅Π²ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ извън Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Π±ΡƒΡ„Π΅Ρ€Π° ΠΈ Π΄Ρ€. Π—Π° разпространСниС Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, осигуряванС Π½Π° компилация ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° зависимости, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Ρ€Π°Π·Π²ΠΈΠ²Π° пакСтния ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Cargo. Π—Π° хостванС Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΅ прСдоставСн Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ crates.io.

БСзопасната Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π² Rust сС осигурява ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° компилация Ρ‡Ρ€Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠΈ, прослСдяванС Π½Π° собствСността Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅, ΠΎΡ‚Ρ‡ΠΈΡ‚Π°Π½Π΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΆΠΈΠ²ΠΎΡ‚ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ (области Π½Π° видимост) ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ° Π½Π° правилността Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄Π°. Rust ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΏΡ€Π΅Π΄Π»Π°Π³Π° срСдства Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΠΏΡ€Π΅ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Ρ†Π΅Π»ΠΈ числа, изисква Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½Π° инициализация Π½Π° стойноститС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈΠΌ, подобрява ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΏΡ€ΠΈΠ»Π°Π³Π° концСпцията Π·Π° нСизмСняСмост (immutable) Π½Π° ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° силна статична типизация, Π·Π° Π΄Π° сС ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ‚ логичСскитС Π³Ρ€Π΅ΡˆΠΊΠΈ.

Основни нововъвСдСния:

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° кастинг (upcast) Π½Π° Ρ‚ΠΈΠΏΠ°ΠΆΠΈΡ‚Π΅ към базовия супСртипаТ (supertrait), Ρ‚.Π΅. сСга Π΅ възмоТно Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° рСфСрСнция Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ ΠΎΡ‚ Ρ‚ΠΈΠΏΠ°ΠΆΠ° Π² рСфСрСнция Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ ΠΎΡ‚ супСртипаТа Π±Π΅Π· нСобходимост ΠΎΡ‚ създаванС Π½Π° спСциалСн ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² Ρ‚ΠΈΠΏΠ°ΠΆΠ°, ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π° Π²Ρ€ΡŠΡ‰Π° рСфСрСнция Π½Π° супСртипаТа. Подобна опСрация ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π½ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«Arc<dyn Trait> -> Arc<dyn Supertrait>Β» ΠΈ Β«*const dyn Trait -> *const dyn SupertraitΒ». trait Trait: Supertrait {} trait Supertrait {} fn upcast(x: &dyn Trait) -> &dyn Supertrait { x }
  • Π’ HashMap ΠΈ срСзи (slice) Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ get_disjoint_mut() Π·Π° Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ няколко измСняСми ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠΈ към Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ. По-Ρ€Π°Π½ΠΎ borrow checker Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡˆΠ΅ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ Ρ‡Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° get_mut(). let v = &mut [1, 2, 3]; if let Ok([a, b]) = v.get_disjoint_mut([0, 2]) { *a = 413; *b = 612; } assert_eq!(v, &[413, 2, 612]); if let Ok([a, b]) = v.get_disjoint_mut([0..1, 1..3]) { a[0] = 8; b[0] = 88; b[1] = 888; } assert_eq!(v, &[8, 88, 888]);
  • ПозволСно Π΅ ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π΅ Π½Π° safe-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Β«#[target_feature]Β», ΠΊΠΎΠΉΡ‚ΠΎ ΡƒΠΊΠ°Π·Π²Π°, Ρ‡Π΅ функцията ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° CPU. Safe-функция, ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π° с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Β«#[target_feature]Β», ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС бСзопасно ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π° ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° safe-функция само Π°ΠΊΠΎ ΠΈ тя Π΅ ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π° с Β«#[target_feature]Β» (Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ трябва Π΄Π° сС ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚ Π² unsafe-Π±Π»ΠΎΠΊ). НС Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Ρ‚Π°ΠΊΠΈΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈ (generic) ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ ΠΎΡ‚ Ρ‚ΠΈΠΏΠ°ΠΆΠΈΡ‚Π΅ Fn*. По-Ρ€Π°Π½ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΡŠΡ‚ Β«#[target_feature]Β» моТСшС Π΄Π° сС ΠΏΡ€ΠΈΠ»Π°Π³Π° само към Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½ΠΈ ΠΊΠ°Ρ‚ΠΎ Β«unsafeΒ». #[target_feature(enable = Β«avx2Β»)] fn requires_avx2() { \/\/ … } #[target_feature(enable = Β«avx2Β»)] fn safe_callsite() { requires_avx2(); } fn unsafe_callsite() { if is_x86_feature_detected!(Β«avx2Β») { unsafe { requires_avx2() }; } }
  • Π’ компилятора Π½Π° Rust Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° замяна Π½Π° ΠΎΡ‚Π»Π°Π΄ΡŠΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ (debug-assert), която провСрява, Ρ‡Π΅ указатСлят Π½Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° NULL стойност ΠΏΡ€ΠΈ Ρ‡Π΅Ρ‚Π΅Π½Π΅ ΠΈ запис Π½Π° Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΈ, Π° ΡΡŠΡ‰ΠΎ ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π·Π°Π΅ΠΌΠ°Π½Π΅ (reborrow) Π½Π° указатСля Π² рСфСрСнция. НапримСр, ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΎΡ‚Π»Π°Π΄ΡŠΡ‡Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, слСдният ΠΊΠΎΠ΄ сСга Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Β«panicΒ»: let _x = *std::ptr::null::(); let _x = &*std::ptr::null::();
  • По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π° lint ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° β€žmissing_abiβ€œ, която Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π°ΠΊΠΎ слСд ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π°Ρ‚Π° Π΄ΡƒΠΌΠ° extern Π½Π΅ Π΅ ΡƒΠΊΠ°Π·Π°Π½ ABI. По-Ρ€Π°Π½ΠΎ, Π°ΠΊΠΎ слСд extern Π½Π΅ Π΅ ΡƒΠΊΠ°Π·Π°Π½ ABI, сС ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°ΡˆΠ΅, Ρ‡Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ABI β€žCβ€œ. Π‘Π΅Π³Π° сС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° Π΄Π° сС ΡƒΠΊΠ°Π·Π²Π° явно ABI β€žCβ€œ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, β€˜extern β€žCβ€œ {}’ ΠΈ β€˜extern β€žCβ€œ fn’
  • Π’ катСгорията стабилни Π΅ ΠΏΡ€Π΅Π²Π΅Π΄Π΅Π½Π° Π½ΠΎΠ²Π° порция API, ΠΊΠ°Ρ‚ΠΎ са стабилизирани ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° Ρ‚ΠΈΠΏΠ°ΠΆΠΈΡ‚Π΅:
    • {float}::next_down
    • {float}::next_up
    • ::get_disjoint_mut
    • ::get_disjoint_unchecked_mut
    • slice::GetDisjointMutError
    • HashMap::get_disjoint_mut
    • HashMap::get_disjoint_unchecked_mut
    • NonZero::count_ones
    • Vec::pop_if
    • sync::Once::wait
    • sync::Once::wait_force
    • sync::OnceLock::wait
  • ΠŸΡ€ΠΈΠ·Π½Π°ΠΊ Β«constΒ» Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅:
    • hint::black_box
    • io::Cursor::get_mut
    • io::Cursor::set_position
    • str::is_char_boundary
    • str::split_at
    • str::split_at_checked
    • str::split_at_mut
    • str::split_at_mut_checked
  • Π˜Π·Π³Ρ€Π°ΠΆΠ΄Π°Π½ Π½Π° Ρ‚Ρ€Π΅Ρ‚ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈΡ‚Π΅ {aarch64-unknown,x86_64-pc}-nto-qnx710_iosock, {aarch64-unknown,x86_64-pc}-nto-qnx800, {x86_64,i686}-win7-windows-gnu, amdgcn-amd-amdhsa, x86_64-pc-cygwin, {mips,mipsel}-mti-none-elf, m68k-unknown-none-elf, armv7a-nuttx-{eabi,eabihf}, aarch64-unknown-nuttx ΠΈ thumbv7a-nuttx-{eabi,eabihf}. Π’Ρ€Π΅Ρ‚ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π²Π° основна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°, Π½ΠΎ Π±Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ тСстванС, ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΈ вСрсии ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π°.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΎ Π΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π° прСкратяванС Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Ρ†Π΅Π»Π΅Π²Π°Ρ‚Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° i586-pc-windows-msvc Π² слСдващото ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ (1.87). ΠŸΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° сС Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° i686-pc-windows-msvc, която Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π° с ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° инструкции SSE2. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° i586-pc-windows-msvc Π²Π΅Ρ‡Π΅ Π΅ бСзсмислСна, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π·Π° Windows 10 Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° SSE2, Π° ΠΏΠΎ-Ρ€Π°Π½Π½ΠΈΡ‚Π΅ вСрсии Π½Π° Windows Π² Rust Π½Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚.

Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ, Ρ‡Π΅ компанията Ferrocene Π΅ ΠΏΡ€Π΅Π΄Π°Π»Π° Π½Π° общността спСцификация Π·Π° Π΅Π·ΠΈΠΊΠ° Rust (FLS β€” Ferrocene Language Specification), създадСна ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° своя ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ Rust Π·Π° ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ Π²Π°ΠΆΠ½ΠΈ систСми ΠΈ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ синхронизирана с Π°ΠΊΡ‚ΡƒΠ°Π»Π½ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° основния ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ Rust. БпСцификацията FLS Π²ΠΊΠ»ΡŽΡ‡Π²Π° структурирано ΠΈ Π΄Π΅Ρ‚Π°ΠΉΠ»Π½ΠΎ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ ΠΏΠΎ синтаксиса, сСмантиката ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Rust, подходящо Π·Π° вСрификация, ΠΎΡ†Π΅Π½ΠΊΠ° Π½Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ ΠΈ стандартизация.

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π΅Π½ΠΈΡ‚Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° създаванС Π½Π° Π΅Ρ‚Π°Π»ΠΎΠ½Π½Π° спСцификация Π½Π° Π΅Π·ΠΈΠΊΠ° Rust, която Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΠΈ ΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° Π² области, ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ Π²Π°ΠΆΠ½ΠΈ Π·Π° бСзопасността.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster