ШСстата вСрсия Π½Π° ΠΏΠ°Ρ‡ΠΎΠ²Π΅ Π·Π° ядрото Π½Π° Linux с ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π΅Π·ΠΈΠΊΠ° Rust

МигСл ΠžΡ…Π΅Π΄Π° (Miguel Ojeda), Π°Π²Ρ‚ΠΎΡ€ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Rust-for-Linux, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈ Π½Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° ядрото Π½Π° Linux пусканСто Π½Π° v6 ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ Π½Π° устройства Π½Π° Π΅Π·ΠΈΠΊΠ° Rust. Π’ΠΎΠ²Π° Π΅ сСдмото ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΏΠ°Ρ‚Ρ‡ΠΎΠ²Π΅Ρ‚Π΅, ΠΊΠ°Ρ‚ΠΎ Π΅ Π²Π·Π΅Ρ‚Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ ΠΏΡŠΡ€Π²Π°Ρ‚Π° вСрсия, ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π° Π±Π΅Π· Π½ΠΎΠΌΠ΅Ρ€ Π½Π° вСрсия. ΠŸΠΎΠ΄ΠΊΡ€Π΅ΠΏΠ°Ρ‚Π° Π·Π° Rust сС Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°Ρ‚ΠΎ СкспСримСнтална, Π½ΠΎ Π²Π΅Ρ‡Π΅ Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² ΠΊΠ»ΠΎΠ½Π° linux-next ΠΈ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π½Π°ΠΏΡ€Π΅Π΄Π½Π°Π»Π°, Π·Π° Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° абстрактни слоСвС Π½Π°Π΄ подсистСмитС Π½Π° ядрото, Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΈ Π·Π° писанС Π½Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° сС финансира ΠΎΡ‚ компанията Google ΠΈ организацията ISRG (Internet Security Research Group), която Π΅ основатСл Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Let’s Encrypt ΠΈ ΠΏΠΎΠ΄ΠΏΠΎΠΌΠ°Π³Π° популяризиранСто Π½Π° HTTPS ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π·Π° повишаванС Π½Π° сигурността Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚.

Π’ Π½ΠΎΠ²Π°Ρ‚Π° вСрсия:

  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡƒΠΌΡŠΡ‚ ΠΈ вСрсията Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° alloc, освободСна ΠΎΡ‚ възмоТни ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ Π½Π° "panic" ΠΏΡ€ΠΈ възникванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ, са Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π΄ΠΎ вСрсия Rust 1.60, Π² която Π΅ стабилизирана ΠΏΠΎΠ΄ΠΊΡ€Π΅ΠΏΠ°Ρ‚Π° Π·Π° Ρ€Π΅ΠΆΠΈΠΌΠ° "maybe_uninit_extra", ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² ΠΏΠ°Ρ‚Ρ‡ΠΎΠ²Π΅Ρ‚Π΅ Π·Π° ядрото.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° изпълнСниС Π½Π° тСстовС ΠΎΡ‚ докумСнтацията (тСстовС, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π² докумСнтацията), Ρ‡Ρ€Π΅Π· трансформираност ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° компилация Π½Π° тСстовСтС, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ядрСното API, Π² тСстовС KUnit, изпълнявани ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ядрото.
  • ΠŸΡ€ΠΈΠ΅Ρ‚ΠΈ са изисквания, съгласно ΠΊΠΎΠΈΡ‚ΠΎ тСстовСтС Π½Π΅ трябва Π΄Π° водят Π΄ΠΎ ΠΈΠ·Ρ…ΠΎΠ΄ Π½Π° прСдупрСТдСния ΠΎΡ‚ Π»ΠΈΠ½Ρ‚Π΅Ρ€Π° Clippy, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΊΠΎΠ΄ΡŠΡ‚ Π·Π° ядрото Π½Π° Π΅Π·ΠΈΠΊΠ° Rust.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π΅ Π½Π°Ρ‡Π°Π»Π½Π° рСализация Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π° "net" с ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π—Π° ΠΊΠΎΠ΄Π° Π½Π° Π΅Π·ΠΈΠΊΠ° Rust Π΅ прСдоставСн Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ‚Π°ΠΊΠΈΠ²Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ структури Π½Π° ядрото ΠΊΠ°Ρ‚ΠΎ "Namespace" (Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° структурата Π½Π° ядрото "struct net"), SkBuff (struct sk_buff), TcpListener, TcpStream (struct socket), Ipv4Addr (struct in_addr), SocketAddrV4 (struct sockaddr_in) ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚ΠΈ Π·Π° IPv6.
  • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ Π½Π°Ρ‡Π°Π»Π½Π° ΠΏΠΎΠ΄ΠΊΡ€Π΅ΠΏΠ° Π·Π° асинхронно ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ (async), Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΌΠΎΠ΄ΡƒΠ» kasync. НапримСр, ΠΌΠΎΠΆΠ΅ Π΄Π° сС създава ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² асинхронСн Ρ€Π΅ΠΆΠΈΠΌ Π·Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Π½Π΅ с TCP сокСти: async fn echo_server(stream: TcpStream) -> Result { let mut buf = [0u8; 1024]; loop { let n = stream.read(&mut buf).await?; if n == 0 { return Ok(()); } stream.write_all(&buf[..n]).await?; } }
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ ΠΌΠΎΠ΄ΡƒΠ» net::filter Π·Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Π½Π΅ с Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ Π·Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ. Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ rust_netfilter.rs с рСализация Π½Π° Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ Π½Π° Π΅Π·ΠΈΠΊΠ° Rust.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° рСализация Π½Π° простия ΠΌΡŽΡ‚Π΅ΠΊΡ smutex::Mutex, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ изисква ΠΏΡ€ΠΈΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ (pinning).
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° NoWaitLock, която Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°Π½Π΅ Π·Π° освобоТдаванС ΠΈ Π² случай Π½Π° заСтост ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ ΠΏΠΎΡ‚ΠΎΠΊ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ° ΠΏΡ€ΠΈ ΠΎΠΏΠΈΡ‚ Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° вмСсто спиранС Π½Π° извикващия.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° RawSpinLock, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π° с raw_spinlock_t Π² ядрото, ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π° към сСкции, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π² ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°Π½Π΅.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ Ρ‚ΠΈΠΏ ARef Π·Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ към ΠΎΠ±Π΅ΠΊΡ‚, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΏΡ€ΠΈΠ»Π°Π³Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° Π±Ρ€ΠΎΠ΅Π½Π΅ Π½Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ (always-refcounted).
  • Π’ Π±Π΅ΠΊΠ΅Π½Π΄Π° rustc_codegen_gcc, позволяващ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° libgccjit ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GCC ΠΊΠ°Ρ‚ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π° ΠΊΠΎΠ΄ Π² rustc Π·Π° осигуряванС Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π½Π°Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π² GCC Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° (bootstrapping) rustc. Под Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° сС Ρ€Π°Π·Π±ΠΈΡ€Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² rustc Π½Π° Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π½Π° ΠΊΠΎΠ΄, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° GCC, Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° самия ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ rustc. ОсвСн Ρ‚ΠΎΠ²Π°, Π² послСдното ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ GCC 12.1 са Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ ΠΊΠΎΡ€Π΅ΠΊΡ†ΠΈΠΈ Π² libgccjit, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΊΠΎΡ€Π΅ΠΊΡ‚Π½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° rustc_codegen_gcc. ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π΅ Π² Ρ…ΠΎΠ΄ Π·Π° прСдоставянС Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° инсталиранС Π½Π° rustc_codegen_gcc с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ‚Π° rustup.
  • ΠžΡ‚Π±Π΅Π»ΡΠ·Π²Π° сС Π½Π°ΠΏΡ€Π΅Π΄ΡŠΠΊ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° GCC Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° gccrs с рСализация Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° Π½Π° Π΅Π·ΠΈΠΊΠ° Rust Π½Π° Π±Π°Π·Π° GCC. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π°Π΄ gccrs работят Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° пълно Π°Π½Π³Π°ΠΆΠΈΡ€Π°Π½Π΅ Π΄Π²Π°ΠΌΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ.

НапомнямС, Ρ‡Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ‚Π΅ измСнСния Π΄Π°Π²Π°Ρ‚ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Rust ΠΊΠ°Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΈ Π΅Π·ΠΈΠΊ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π° ядрото. ΠŸΠΎΠ΄ΠΊΡ€Π΅ΠΏΠ°Ρ‚Π° Π·Π° Rust сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΊΠ°Ρ‚ΠΎ опция, която Π½Π΅ Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΈ Π½Π΅ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Rust Π² броя Π½Π° Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΈΡ‚Π΅ зависимости Π½Π° ядрото. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Rust Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ Ρ‰Π΅ осигури с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ усилия ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° бСзопасни ΠΈ ΠΏΠΎ-качСствСни Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ, лишСни ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ освобоТдаваща ΠΏΠ°ΠΌΠ΅Ρ‚, Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΡƒΠ²Π°Π½Π΅ Π½Π° Π½ΡƒΠ»Π΅Π²ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ ΠΈΠ·Ρ…ΠΎΠ΄ извън Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Π±ΡƒΡ„Π΅Ρ€Π°.

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

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

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