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

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

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

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

  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π½Π° компилация (pipelined), ΠΏΡ€ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ сборката Π½Π° зависимия crate-ΠΏΠ°ΠΊΠ΅Ρ‚ Π·Π°ΠΏΠΎΡ‡Π²Π° Π²Π΅Π΄Π½Π°Π³Π° Ρ‰ΠΎΠΌ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π·Π° зависимоститС станат Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ, Π±Π΅Π· Π΄Π° Ρ‡Π°ΠΊΠ° Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° компилацията ΠΌΡƒ. ΠŸΡ€ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ зависимоститС Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ напълно ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ, само Π΅ Π½ΡƒΠΆΠ½ΠΎ опрСдСлянСто Π½Π° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈΡ‚Π΅, Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‰ΠΈ ΡΠΏΠΈΡΡŠΡ†ΠΈ с Ρ‚ΠΈΠΏΠΎΠ²Π΅, зависимости ΠΈ Скспортирани Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ. ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈΡ‚Π΅ стават Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π½Π° Π½Π°Ρ‡Π°Π»Π΅Π½ Π΅Ρ‚Π°ΠΏ ΠΎΡ‚ компилацията, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ сСга ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Ρ€Π°Π½ΠΎ. ΠŸΡ€ΠΈ сборка Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π°Ρ‚Π° опция Π½Π΅ влияС Π½Π° производитСлността, Π½ΠΎ Π°ΠΊΠΎ сборбата ΠΎΠ±Ρ…Π²Π°Ρ‰Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ с Ρ€Π°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈ зависимости, ΠΎΠ±Ρ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° компилация ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΌΠ°Π»ΠΈ с 10-20%;
  • ΠžΡΠΈΠ³ΡƒΡ€Π΅Π½ΠΎ Π΅ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ std::mem::uninitialized ΠΈ std::mem::zeroed. НапримСр, std::mem::uninitialized Π΅ ΡƒΠ΄ΠΎΠ±Π΅Π½ Π·Π° Π±ΡŠΡ€Π·ΠΎ създаванС Π½Π° масиви, Π½ΠΎ въвСТда ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° Π² Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ създава видимост Π·Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° инициализация, Π° Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ стойността остава Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π°. Ѐункцията mem::uninitialized Π²Π΅Ρ‡Π΅ Π΅ обявСна Π·Π° остаряла ΠΈ вмСсто нСя сС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ Ρ‚ΠΈΠΏ MaybeUninit. Π©ΠΎ сС отнася Π΄ΠΎ mem::zeroed, Ρ‚Π°Π·ΠΈ функция ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с Ρ‚ΠΈΠΏΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ Π½ΡƒΠ»Π΅Π²ΠΈ стойности.

    Π—Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Π½ΠΎ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π½ΠΎΠ²ΠΎΡ‚ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π² ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° lint ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, която ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π° някои ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с mem::uninitialized ΠΈΠ»ΠΈ mem::zeroed. НапримСр, сСга сС ΠΈΠ·Π²Π΅ΠΆΠ΄Π° Π³Ρ€Π΅ΡˆΠΊΠ° ΠΏΡ€ΠΈ ΠΎΠΏΠΈΡ‚ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° mem::uninitialized ΠΈΠ»ΠΈ mem::zeroed с Ρ‚ΠΈΠΏΠΎΠ²Π΅ &T ΠΈ Boxβ€ΉTβ€Ί, прСдставляващи ΠΎΠ±Π΅ΠΊΡ‚ΠΈ-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ Π½ΡƒΠ»Π΅Π²ΠΈ стойности;

  • Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ са Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Β«#[deprecated]Β», ΠΊΠΎΠΉΡ‚ΠΎ позволява Π΄Π° сС ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ crate-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ ΠΊΠ°Ρ‚ΠΎ остарСли ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ Π·Π° ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅. Π—Π°ΠΏΠΎΡ‡Π²Π°ΠΉΠΊΠΈ ΠΎΡ‚ вСрсия Rust 1.38, Ρ‚ΠΎΠ·ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€ΠΈΠ»Π°Π³Π° ΠΈ Π·Π° макроси;
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Β«#[global_allocator]Β» Π² подсСкциитС;
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ функция std::any::type_name, позволяващ Π΄Π° сС ΡƒΠ·Π½Π°Π΅ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΈΠΏΠ°, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ. НапримСр, ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ€Π°Π·Π±Π΅Ρ€Π΅ Π·Π° ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ Π΅ Π±ΠΈΠ»Π° ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π° функцията:

    fn gen_valueβ€ΉT: Default>() -β€Ί T {
    println!(Β«Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° инстанция Π½Π° {}Β», std::any::type_name::β€ΉTβ€Ί());
    Default::default()
    }

    fn main() {
    let _: i32 = gen_value(); # Ρ‰Π΅ бъдС ΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ Β«i32Β»
    Π½Π΅ΠΊΠ° _: String = gen_value(); # Ρ‰Π΅ сС ΠΈΠ·Π²Π΅Π΄Π΅ Β«alloc::string::StringΒ»
    }

  • Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°:
    • slice::{concat, connect, join} сСга ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° стойност &[T] освСн &T;
    • Β«*const TΒ» ΠΈ Β«*mut TΒ» Π²Π΅Ρ‡Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ marker::Unpin;
    • Β«Arcβ€Ή[T]β€ΊΒ» ΠΈ Β«Rcβ€Ή[T]β€ΊΒ» Π²Π΅Ρ‡Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ FromIteratorβ€ΉTβ€Ί;
    • iter::{StepBy, Peekable, Take} сСга Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ DoubleEndedIterator.
    • ascii::EscapeDefault Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° Clone ΠΈ Display.
  • Π’ разряд стабилни Π΅ ΠΏΡ€Π΅Π²Π΅Π΄Π΅Π½Π° Π½ΠΎΠ²Π° порция API, Π² Ρ‚ΠΎΠ²Π° число стабилизирани ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ
    • β€Ή*const Tβ€Ί::cast, β€Ή*mut Tβ€Ί::cast,
    • Duration::as_secs_f{32|64},
    • Duration::div_duration_f{32|64},
    • Duration::div_f{32|64},
    • Duration::from_secs_f{32|64},
    • Duration::mul_f{32|64},
    • ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° Π΄Π΅Π»Π΅Π½ΠΈΠ΅ с ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ
      div_euclid ΠΈ rem_euclid Π·Π° всички цСлочислСни ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΈ;
  • Π’ пакСтния ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ cargo сС Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΡƒΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° опцията Β«β€”featuresΒ» няколко ΠΏΡŠΡ‚ΠΈ Π·Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ;
  • Π’ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° Π΅ осигурСн Ρ‚Ρ€Π΅Ρ‚ΠΈ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Ρ†Π΅Π»Π΅Π²ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-msvc, armv7-unknown-linux-gnueabi, armv7-unknown-linux-musleabi, hexagon-unknown-linux-musl ΠΈ riscv32i-unknown-none-elf. Π’Ρ€Π΅Ρ‚ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π° основна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°, Π½ΠΎ Π±Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ тСстванС ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΈ сборки.

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

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