ИздаванС Π½Π° Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Rust 1.45

ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΈ вСрсия 1.45 Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° систСмно ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ РъТда, основана ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Mozilla. Π•Π·ΠΈΠΊΡŠΡ‚ сС фокусира Π²ΡŠΡ€Ρ…Ρƒ бСзопасността Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, осигурява Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ прСдоставя инструмСнти Π·Π° постиганС Π½Π° висок ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈ Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡŠΠ±ΠΈΡ€Π°Ρ‡ Π½Π° ΠΎΡ‚ΠΏΠ°Π΄ΡŠΡ†ΠΈ ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°.

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

ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ:

  • Π•Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π°Π½ дългогодишСн Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚Π΅ прСобразувания ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ†Π΅Π»ΠΈ числа ΠΈ числа с ΠΏΠ»Π°Π²Π°Ρ‰Π° запСтая. Въй ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Rust ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° LLVM ΠΊΠ°Ρ‚ΠΎ Π±Π΅ΠΊΠ΅Π½Π΄, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° Ρ‚ΠΈΠΏ бяха ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½ΠΈ Ρ‡Ρ€Π΅Π· ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ инструкции Π½Π° LLVM, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ fptoui, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ°Ρ‚ Π΅Π΄Π½Π° Π²Π°ΠΆΠ½Π° характСристика - Π½Π΅Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π°ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π°Ρ‚Π° стойност Π½Π΅ сС вписва Π² цСлСвия Ρ‚ΠΈΠΏ. НапримСр, ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° ΠΏΠ»Π°Π²Π°Ρ‰Π° стойност 300 с Ρ‚ΠΈΠΏ f32 Π² цСлочислСн Ρ‚ΠΈΠΏ u8, Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ Π΅ Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΠΈΠΌ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Π°Ρ€ΠΈΡ€Π° Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ систСми. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅, Ρ‡Π΅ Ρ‚Π°Π·ΠΈ функция сС появява Π² ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ Π΅ ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½ ΠΊΠ°Ρ‚ΠΎ β€žΠΎΠΏΠ°ΡΠ΅Π½β€œ.

    ΠžΡ‚ Rust 1.45 ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€Π΅ΠΏΡŠΠ»Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Ρ‚ΠΈΠΏΠ° Π΅ строго Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€Π°Π½ΠΎ ΠΈ опСрацията Π·Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ "as" провСрява Π·Π° ΠΏΡ€Π΅ΠΏΡŠΠ»Π²Π°Π½Π΅ ΠΈ ΠΏΡ€ΠΈΠ½ΡƒΠΆΠ΄Π°Π²Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° стойността към максималната ΠΈΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π°Ρ‚Π° стойност Π½Π° цСлСвия Ρ‚ΠΈΠΏ (Π·Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΠΎ-Π³ΠΎΡ€Π΅, стойност ΠΎΡ‚ 300 Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½ΠΈ Π² 255). Π—Π° Π΄Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ Ρ‚Π°ΠΊΠΈΠ²Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, сС прСдоставят Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ извиквания Π½Π° API β€ž{f64, f32}::to_int_uncheckedβ€œ, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ Π² нСбСзопасСн Ρ€Π΅ΠΆΠΈΠΌ.

    fn cast(x: f32) -> u8 {
    x ΠΊΠ°Ρ‚ΠΎ u8
    }

    fn main() {
    Π½Π΅ΠΊΠ° Ρ‚Π²ΡŠΡ€Π΄Π΅_голям = 300.0;
    Π½Π΅ΠΊΠ° Ρ‚Π²ΡŠΡ€Π΄Π΅_малък = -100.0;
    Π½Π΅ΠΊΠ° nan = f32::NAN;

    Π½Π΅ΠΊΠ° x: f32 = 1.0;
    Π½Π΅ΠΊΠ° y: u8 = unsafe { x.to_int_unchecked() };

    println!("too_big_casted = {}", cast(too_big)); // ΠΈΠ·Ρ…ΠΎΠ΄ 255
    println!("too_small_casted = {}", cast(too_small)); // ΠΈΠ·Ρ…ΠΎΠ΄ 0
    println!("not_a_number_casted = {}", cast(nan)); // ΠΈΠ·Ρ…ΠΎΠ΄ 0
    }

  • Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ стабилизиран ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΈ макросиподобни Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ, шаблони ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ. ΠŸΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° Ρ‚Π°ΠΊΠΈΠ²Π° макроси Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ…Π° Π΄Π° сС ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚ навсякъдС, Π° само Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ части Π½Π° ΠΊΠΎΠ΄Π° (ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π΅ Π΅ ΠΏΡ€Π΅ΠΏΠ»Π΅Ρ‚Π΅Π½ΠΎ с Π΄Ρ€ΡƒΠ³ ΠΊΠΎΠ΄). Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½Π°Ρ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ макроситС ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅, бСшС Π΅Π΄Π½ΠΎ ΠΎΡ‚ изискванията, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΡƒΠ΅Π± Ρ€Π°ΠΌΠΊΠ°Ρ‚Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π Π°ΠΊΠ΅Ρ‚Π° Π² стабилни вСрсии Π½Π° Rust. ΠŸΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° постиганСто Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° Π³ΡŠΠ²ΠΊΠ°Π²ΠΎΡΡ‚ ΠΏΡ€ΠΈ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ Π² Rocket изисквашС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° СкспСримСнтална функция, Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° β€žproc_macro_hygieneβ€œ, която Π½Π΅ Π΅ Π½Π°Π»ΠΈΡ‡Π½Π° Π² стабилнитС вСрсии Π½Π° Rust. Π’Π°Π·ΠΈ функционалност Π²Π΅Ρ‡Π΅ Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½Π° Π² стабилни вСрсии Π½Π° Π΅Π·ΠΈΠΊΠ°.
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ с Ρ‚ΠΈΠΏ β€žcharβ€œ Π·Π° ΠΈΡ‚Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° стойности Π½Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ (ops::{Range, RangeFrom, RangeFull, RangeInclusive, RangeTo}):

    Π·Π° ch Π² 'a'..='z' {
    ΠΏΠ΅Ρ‡Π°Ρ‚!("{}", ch);
    }
    println!(); // Π©Π΅ ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚Π° "abcdefghijklmnopqrstuvwxyz"

  • Нова част ΠΎΡ‚ API Π΅ ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»Π΅Π½Π° Π² катСгорията стабилни, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ стабилизирани
    Arc::as_ptr,
    BTreeMap::remove_entry,
    Rc::as_ptr,
    rc :: Π‘Π»Π°Π± :: as_ptr,
    rc::Weak::from_raw,
    rc::Weak::into_raw,
    str::strip_prefix,
    str::strip_suffix,
    sync::Weak::as_ptr,
    sync::Weak::from_raw,
    sync::Weak::into_raw,
    char::UNICODE_VERSION,
    Span::resolved_at,
    Span::located_at,
    Span::mixed_site,
    unix::process::CommandExt::arg0.

  • ΠšΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ rustc Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° замяна Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ†Π΅Π»Π΅Π²ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ„Π»Π°Π³Π° "target-feature", Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ "-C target-feature=+avx2,+fma". Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са ΠΈ Π½ΠΎΠ²ΠΈ Ρ„Π»Π°Π³ΠΎΠ²Π΅:
    "force-unwind-tables" Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ Π·Π° ΠΎΡ‚Π²ΠΈΠ²Π°Π½Π΅ Π½Π° повикванията, нСзависимо ΠΎΡ‚ стратСгията Π·Π° справянС с срива; "embed-bitcode", Π·Π° Π΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° Π΄Π°Π»ΠΈ Π±ΠΈΡ‚ΠΊΠΎΠ΄ΡŠΡ‚ Π½Π° LLVM Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ rlibs. Π€Π»Π°Π³ΡŠΡ‚ "embed-bitcode" Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π² Cargo, Π·Π° Π΄Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° дисково пространство.

  • ΠžΡΠΈΠ³ΡƒΡ€Π΅Π½ΠΎ Π΅ Ρ‚Ρ€Π΅Ρ‚ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈΡ‚Π΅ mipsel-sony-psp ΠΈ thumbv7a-uwp-windows-msvc. Π’Ρ€Π΅Ρ‚ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° Π±Π°Π·ΠΎΠ²Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°, Π½ΠΎ Π±Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ тСстванС ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ.

ОсвСн Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ историята Π·Π° ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½Π°ΠΉ-проститС прилоТСния Π½Π° Π΅Π·ΠΈΠΊΠ° Rust, Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‰ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° систСмния Π·Π°Ρ€Π΅ΠΆΠ΄Π°Ρ‰ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ ΠΈ Π³ΠΎΡ‚ΠΎΠ² Π·Π° самостоятСлно Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ вмСсто ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма.
Бтатията Π΅ ΠΏΡŠΡ€Π²Π°Ρ‚Π° ΠΎΡ‚ ΠΏΠΎΡ€Π΅Π΄ΠΈΡ†Π°, посвСтСна Π½Π° дСмонстриранС Π½Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС Ρ‚ΡŠΡ€ΡΡΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ниско Π½ΠΈΠ²ΠΎ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ОБ.

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€