ИзлСзС Rust 1.93. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ‚Π΅ Rex, Fjall 3 ΠΈ Arti 1.9.0

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

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

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

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

  • Π’Π³Ρ€Π°Π΄Π΅Π½Π° Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π° Rust стандартна C-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Musl, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΠΏΡ€ΠΈ статична ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° Π·Π° Ρ†Π΅Π»Π΅Π²ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ Β«*-linux-muslΒ» (aarch64-unknown-linux-musl, x86_64-unknown-linux-musl, powerpc64le-unknown-linux-musl ΠΈ Π΄Ρ€.) Π½Π° систСми Π±Π΅Π· Musl, Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΄ΠΎ вСрсия 1.2.5. Минимално ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π°Ρ‚Π° вСрсия Musl ΠΏΡ€ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° ΡΡŠΡ‰ΠΎ Π΅ повишСна Π΄ΠΎ 1.2.5. По-Ρ€Π°Π½ΠΎ Π² Rust Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° вСрсия 1.2.3 Π½Π° Musl, която имашС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с рСализацията Π½Π° DNS Ρ€Π΅Π·ΠΎΠ»Π²Π΅Ρ€Π°. Π’ вСрсия 1.2.4 Π½Π° Musl Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° заявки ΠΏΠΎ TCP Π² случай Π½Π° нСуспСх ΠΏΡ€ΠΈ UDP, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ€Π΅ΡˆΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Π³ΠΎΠ»Π΅ΠΌΠΈ DNS записи ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚Ρ‚Π° с рСкурсивни DNS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° частични ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ Π² скъсСни UDP ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ. Π’ вСрсия 1.2.5 Π½Π° Musl Π² DNS Ρ€Π΅Π·ΠΎΠ»Π²Π΅Ρ€Π° Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ с дълги CNAME послСдоватСлности ΠΈ Π΅ Ρ€Π΅ΡˆΠ΅Π½ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ с ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅Ρ‚ΠΎ Π½Π° някои Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ, ΠΏΡ€Π΅Π΄Π°Π²Π°Π½ΠΈ Ρ‡Ρ€Π΅Π· TCP.
  • Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Π°Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π΅ ΠΏΡ€Π΅Ρ€Π°Π±ΠΎΡ‚Π΅Π½Π°, Π·Π° Π΄Π° сС Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с рССнтСрабилността ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ Π°Π»ΠΎΠΊΠ°Ρ‚ΠΎΡ€ΠΈ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚, написани Π½Π° Rust, с макроса std::thread_local! ΠΈ функцията std::thread::current, ΠΊΠΎΠΈΡ‚ΠΎ Π²ΠΎΠ΄Π΅Ρ…Π° Π΄ΠΎ Π±Π΅Π·ΠΊΡ€Π°ΠΉΠ½Π° рСкурсия. Π—Π° Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π΅ ситуация, Π² която std::thread_local! ΠΈ std::thread::current ΠΏΡ€ΠΈ ΠΎΠΏΠΈΡ‚ Π·Π° алокация Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚ ΡΡŠΡ‰ΠΈΡ Π°Π»ΠΎΠΊΠ°Ρ‚ΠΎΡ€, Π² ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚, сСга сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ систСмният ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° алокация Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚.
  • Π’ Π±Π»ΠΎΠΊΠΎΠ²Π΅Ρ‚Π΅ Β«asm!Β» с асСмблСрСн ΠΊΠΎΠ΄ Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ Β«cfgΒ», ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ позволява ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ‚Π΅ Π½Π°Π±ΠΎΡ€ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π½Π° CPU Π² контСкста Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° asm Π±Π»ΠΎΠΊΠ° (ΠΏΡ€Π΅Π΄ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈΡ‚Π΅ Β«cfgΒ» ΠΌΠΎΠΆΠ΅Ρ…Π° Π΄Π° сС Π·Π°Π΄Π°Π²Π°Ρ‚ само Π·Π° цСлия asm Π±Π»ΠΎΠΊ). asm!( // ΠΈΠ»ΠΈ global_asm! ΠΈΠ»ΠΈ naked_asm! "nop", #[cfg(target_feature = "sse2")] "nop", // … #[cfg(target_feature = "sse2")] a = const 123, // ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° сС само Π½Π° sse2 );
  • Π’ катСгорията стабилни Π΅ ΠΏΡ€Π΅Π²Π΅Π΄Π΅Π½Π° Π½ΠΎΠ²Π° порция API, ΠΊΠ°Ρ‚ΠΎ са стабилизирани ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° Ρ‚ΠΈΠΏΠ°ΠΆΠΈΡ‚Π΅:
    • <[MaybeUninit]>::assume_init_drop
    • <[MaybeUninit]>::assume_init_ref
    • <[MaybeUninit]>::assume_init_mut
    • <[MaybeUninit]>::write_copy_of_slice
    • <[MaybeUninit]>::write_clone_of_slice
    • String::into_raw_parts
    • Vec::into_raw_parts
    • ::unchecked_neg
    • ::unchecked_shl
    • ::unchecked_shr
    • ::unchecked_shl
    • ::unchecked_shr
    • ::as_array
    • ::as_array_mut
    • ::as_array
    • ::as_mut_array
    • VecDeque::pop_front_if
    • VecDeque::pop_back_if
    • Duration::from_nanos_u128
    • char::MAX_LEN_UTF8
    • char::MAX_LEN_UTF16
    • std::fmt::from_fn
    • std::fmt::FromFn
  • Π¦Π΅Π»Π΅Π²Π°Ρ‚Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Β«riscv64a23-unknown-linux-gnuΒ» Π΅ прСмСстСна Π½Π° Π²Ρ‚ΠΎΡ€ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π° гаранция Π·Π° компилация, Π½ΠΎ липса Π½Π° гаранция Π·Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ Π½Π° тСстовия Π½Π°Π±ΠΎΡ€.

МоТС Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ ΠΈ няколко ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с Rust:

  • Π—Π° ядрото Π½Π° Linux сС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Rex, ΠΊΠΎΠΉΡ‚ΠΎ позволява ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Π·Π° ядрото Π½Π° Linux Π½Π° Π΅Π·ΠΈΠΊΠ° Rust, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ Π½Π° функционалността Π½Π° ядрото вмСсто eBPF. Rex прСдоставя ΡΡŠΡ‰ΠΈΡ‚Π΅ Π³Π°Ρ€Π°Π½Ρ†ΠΈΠΈ Π·Π° бСзопасност, ΠΊΠ°ΠΊΠ²ΠΈΡ‚ΠΎ ΠΈ eBPF, Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Rust ΠΈ Π»Π΅ΠΊ Runtime Π·Π° изолация ΠΈ осигуряванС Π½Π° бСзопасност. Π—Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ Π½Π΅ сС ΠΏΡ€ΠΈΠ»Π°Π³Π° Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Ρ‚ Π² Π½Π°Ρ‚ΠΈΠ²Π΅Π½ ΠΊΠΎΠ΄ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° Rust.

    Π’ Rex-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° подмноТСство ΠΎΡ‚ Π΅Π·ΠΈΠΊΠ° Rust, ΠΊΠΎΠΉΡ‚ΠΎ прСдоставя Π³Π°Ρ€Π°Π½Ρ†ΠΈΠΈ Π·Π° бСзопасност. Π’ тСкущия си Π²ΠΈΠ΄ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ 5 Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ eBPF: kprobe, perf_event, tracepoint, xdp ΠΈ tc. Има Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° eBPF, взаимодСйствиС с map-структури eBPF, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° рСсурси Π² ядрото, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠΈ ΠΈ абстракции Π½Π°Π΄ структури Π½Π° ядрото.

  • Π”ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ Π΅ Ρ€Π΅Π»ΠΈΠ·ΡŠΡ‚ Fjall 3, написан Π½Π° Rust, Π²Π³Ρ€Π°Π΄Π΅Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ с Π΄Π°Π½Π½ΠΈ във Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠ»ΡŽΡ‡-стойност. Π‘ΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Π»ΠΎΠ³ с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° LSM-Π΄Π΅Ρ€Π΅Π²ΠΎ (Log-Structured-Merge), ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° RocksDB, ΠΏΡ€ΠΈ ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ сС записват Ρ‡Ρ€Π΅Π· добавянС Π½Π° Π΄Π°Π½Π½ΠΈ Π² края Π½Π° Ρ„Π°ΠΉΠ»Π°. Π—Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π‘Π” Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½ΠΎ API Π² стил BTreeMap. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ сС Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°, Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ, Π²Π³Ρ€Π°Π΄Π΅Π½ΠΎ компрСсиранС, сСриализуСми Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ ΠΈ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с тях ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ стойности, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Ρ„ΠΎΠ½ΠΎΠ²ΠΎ обслуТванС Π½Π° Π‘Π”. ΠšΠΎΠ΄ΡŠΡ‚ Π΅ ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΏΠΎΠ΄ лицСнзия Apache 2.0.
  • ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Tor ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° вСрсия Arti 1.9.0, Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‰Π° Tor инструмСнти, написани Π½Π° Rust. ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΊΠΎΠ΄ΡŠΡ‚ Π½Π° Arti достигнС Π½ΠΈΠ²ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ напълно Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈ вСрсията Π½Π° C, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Tor ΠΏΠ»Π°Π½ΠΈΡ€Π°Ρ‚ Π΄Π° прСдоставят Π½Π° Arti статус Π½Π° основна рСализация Π½Π° Tor ΠΈ постСпСнно Π΄Π° спрат ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° C вСрсията. Π’ Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Π½Π° рСализацията Π½Π° функционалността Π·Π° Ρ€Π΅Π»Π΅ΠΉ ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ (Directory Authority), ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΈ ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅ (proxy.socks_listen = β€žautoβ€œ), Π΄ΠΎΠ±Π°Π²Π΅Π½ Π΅ СкспСримСнталСн API Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅Ρ‚Π΅ Π·Π° onion-сСрвизи.

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

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