Π Π΅Π»ΠΈΠ· Π½Π° програмния Π΅Π·ΠΈΠΊ Rust 2021 (1.56)

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π° Π΅ вСрсия Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° систСмно ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Rust 1.56, основан ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Mozilla, Π½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ ΠΌΡƒ сС ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π° ΠΏΠΎΠ΄ Π΅Π³ΠΈΠ΄Π°Ρ‚Π° Π½Π° нСзависимата нСправитСлствСна организация Rust Foundation. ОсвСн стандартния Π½ΠΎΠΌΠ΅Ρ€ Π½Π° вСрсията, ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΎ ΠΈ ΠΊΠ°Ρ‚ΠΎ Rust 2021 ΠΈ прСдставя стабилизация Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ ΠΏΡ€Π΅Π· послСднитС Ρ‚Ρ€ΠΈ Π³ΠΎΠ΄ΠΈΠ½ΠΈ. Rust 2021 ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ‰Π΅ бъдС основа Π·Π° ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° функционалността ΠΏΡ€Π΅Π· слСдващитС Ρ‚Ρ€ΠΈ Π³ΠΎΠ΄ΠΈΠ½ΠΈ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π½Π° Π½Π°Ρ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ вСрсията Rust 2018 стана основа Π·Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΅Π·ΠΈΠΊΠ° Π² послСднитС Ρ‚Ρ€ΠΈ Π³ΠΎΠ΄ΠΈΠ½ΠΈ.

Π—Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚Ρ‚Π°, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² своитС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ Β«2015Β», Β«2018Β» ΠΈ Β«2021Β», позволяващи ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ към ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ Π½Π° Π΅Π·ΠΈΠΊΠ°, ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‰ΠΈ Π½Π° ΠΈΠ·Π±Ρ€Π°Π½ΠΈΡ‚Π΅ Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΈ Π½Π° Rust. Π Π΅Π΄Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅ бяха въвСдСни Π·Π° раздСлянС Π½Π° Π½Π΅ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΈ сС настройват Π² ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π° cargo ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ Ρ‡Ρ€Π΅Π· ΠΏΠΎΠ»Π΅Ρ‚ΠΎ Β«editionΒ» Π² сСкцията Β«[package]Β». НапримСр, рСдакцията Β«2018Β» Π²ΠΊΠ»ΡŽΡ‡Π²Π° стабилизирана функционалност към края Π½Π° 2018 Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ ΠΎΠ±Ρ…Π²Π°Ρ‰Π° всички ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Π²Π°Ρ‚ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚Ρ‚Π°. РСдакцията Β«2021Β» Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° нововъвСдСния, Π½Π°Ρ€ΡƒΡˆΠ°Π²Π°Ρ‰ΠΈ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚Ρ‚Π°, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΎΡ‚ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ 1.56 ΠΈ ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈ Π·Π° рСализация Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅. ОсвСн самия Π΅Π·ΠΈΠΊ, Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° отразяват ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° инструмСнтария ΠΈ докумСнтацията.

Основни Π½Π΅ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΠΈ, фиксирани Π² Rust 2021:

  • Π Π°Π·Π΄Π΅Π»Π½ΠΎ улавянС Π² затварянията β€” затварянията Π²Π΅Ρ‡Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° улавят ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΈΠΌΠ΅Π½Π° Π½Π° ΠΏΠΎΠ»Π΅Ρ‚Π° вмСсто цСлия ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. НапримСр, Β«|| a.x + 1Β» Ρ‰Π΅ ΡƒΠ»ΠΎΠ²ΠΈ само Β«a.xΒ» вмСсто Β«aΒ».
  • Π’ΠΈΠΏΠ°ΠΆΡŠΡ‚ IntoIterator Π·Π° масиви: array.into_iter() позволява организация Π½Π° ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° масива ΠΏΠΎ стойности, Π° Π½Π΅ ΠΏΠΎ Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ.
  • Π’ macro_rules Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΠΈΠ·Ρ€Π°Π·ΠΈΡ‚Π΅ Β«|Β» (логичСска опСрация OR) Π² ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΡ‚Π΅ β€” ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΡŠΡ‚ Β«:patΒ» Π² ΡΡŠΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡΡ‚Π° сСга отразява ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΡ‚Π΅ Β«A | BΒ».
  • Π’ пакСтния ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ cargo ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π²Ρ‚ΠΎΡ€Π° вСрсия Π½Π° опрСдСлитСля Π½Π° Π½Π°Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ (feature resolver), чиято ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° сС появи Π² Rust 1.51.
  • Π’ΠΈΠΏΠ°ΠΆΠΈΡ‚Π΅ (trait) TryFrom, TryInto ΠΈ FromIterator са Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ към ΡΡŠΡΡ‚Π°Π²Π° Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π° Π½Π° стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° prelude.
  • ΠœΠ°ΠΊΡ€ΠΎΡΠΈΡ‚Π΅ panic!(..) ΠΈ assert!(expr, ..) сСга Π²ΠΈΠ½Π°Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ format_args!(..) Π·Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π½Π° println!().
  • Π’ синтаксиса Π½Π° Π΅Π·ΠΈΠΊΠ° са Π·Π°ΠΏΠ°Π·Π΅Π½ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ ident#, ident»…» ΠΈ ident’…’.
  • ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡ bare_trait_objects ΠΈ ellipsis_inclusive_range_patterns са прСмСстСни Π² катСгорията Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅.

НовоститС Π² Rust 1.56:

  • Π’ Cargo.toml Π² сСкцията Β«[package]Β» Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΎ ΠΏΠΎΠ»Π΅Ρ‚ΠΎ rust-version, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява Π΄Π° сС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π°Ρ‚Π° вСрсия Π½Π° Rust Π·Π° crate-ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Ако Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° вСрсия Π½Π΅ отговаря Π½Π° зададСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€, Cargo Ρ‰Π΅ спрС Ρ€Π°Π±ΠΎΡ‚Π° с изходяща Π³Ρ€Π΅ΡˆΠΊΠ°.
  • ΠŸΡ€ΠΈ съвпадСниС с шаблон с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΈΠ·Ρ€Π°Π·ΠΈΡ‚Π΅ Β«binding @ patternΒ» Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΡƒΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΡ€ΠΈΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«let matrix @ Matrix { row_len, .. } = get_matrix();Β»).
  • Π’ катСгорията стабилни Π΅ ΠΏΡ€Π΅Π²Π΅Π΄Π΅Π½Π° Π½ΠΎΠ²Π° порция API, ΠΊΠ°Ρ‚ΠΎ са стабилизирани ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° Ρ‚ΠΈΠΏΠ°ΠΆΠΈΡ‚Π΅:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter::into_parts
    • core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::shrink_to
    • String::shrink_to
    • OsString::shrink_to
    • PathBuf::shrink_to
    • BinaryHeap::shrink_to
    • VecDeque::shrink_to
    • HashMap::shrink_to
    • HashSet::shrink_to
  • ΠŸΡ€ΠΈΠ·Π½Π°ΠΊ Β«constΒ», ΠΊΠΎΠΉΡ‚ΠΎ опрСдСля Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ контСкст вмСсто константи, Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ във Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅
    • std::mem::transmute
    • [T]::first
    • [T]::split_first
    • [T]::last
    • [T]::split_last
  • ΠšΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π» Π½Π° вСрсия LLVM 13.
  • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Π΅ Π²Ρ‚ΠΎΡ€ΠΈ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° aarch64-apple-ios-sim ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΎ Π½ΠΈΠ²ΠΎ Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈΡ‚Π΅ powerpc-unknown-freebsd ΠΈ riscv32imc-esp-espidf. Π’Ρ€Π΅Ρ‚ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ прСдпоставя Π±Π°Π·ΠΎΠ²Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°, Π½ΠΎ Π±Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ тСстванС, ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΈ сборки ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π°.

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

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

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

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