Выпуск Rust 1.84. Π―Π΄Ρ€Π° Tock ΠΈ Vekos, написанныС Π½Π° Rust. Π”ΠΈΠ°Π»Π΅ΠΊΡ‚ Mini-C

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· языка программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния Rust 1.84, основанного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Mozilla, Π½ΠΎ Π½Ρ‹Π½Π΅ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ΄ ΠΏΠΎΠΊΡ€ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎΠΌ нСзависимой нСкоммСрчСской ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Rust Foundation. Π―Π·Ρ‹ΠΊ сфокусирован Π½Π° бСзопасной Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ прСдоставляСт срСдства для достиТСния высокого ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° выполнСния Π·Π°Π΄Π°Π½ΠΈΠΉ, ΠΏΡ€ΠΈ этом ΠΎΠ±Ρ…ΠΎΠ΄ΡΡΡŒ Π±Π΅Π· использования сборщика мусора ΠΈ runtime (runtime сводится ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ).

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² Rust ΠΈΠ·Π±Π°Π²Π»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΎΡ‚ ошибок ΠΏΡ€ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ указатСлями ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π°ΡŽΡ‚ ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΈΠ·-Π·Π° Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ области памяти послС Π΅Ρ‘ освобоТдСния, Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, Π²Ρ‹Ρ…ΠΎΠ΄ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π±ΡƒΡ„Π΅Ρ€Π° ΠΈ Ρ‚.ΠΏ. Для распространСния Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, обСспСчСния сборки ΠΈ управлСния зависимостями ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ развиваСтся ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Cargo. Для размСщСния Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ поддСрТиваСтся Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ crates.io.

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

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²Π°:

  • Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π΅ Cargo стабилизирован ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ зависимостСй, Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‰ΠΈΠΉ вСрсии зависимых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ совмСстимости с вСрсиями компилятора Rust, заявлСнными ΠΊΠ°ΠΊ минимально ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ (MSRV, Minimum Supported Rust Version). Новая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ позволяСт ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΡ… ΠΎΡ‚ нСобходимости Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° старых вСрсий ΠΊΠ°ΠΆΠ΄ΠΎΠΉ зависимости Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΡ… ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ со старыми вСрсиями инструмСнтария Rust. Новый Ρ€Π΅ΠΆΠΈΠΌ опрСдСлСния зависимостСй Π±ΡƒΠ΄Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² выпускС Rust 1.85, Π° ΠΏΠΎΠΊΠ° доступСн Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈ, для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² сСкции «[resolver]» Π² Ρ„Π°ΠΉΠ»Π΅ «.cargo/config.toml» слСдуСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ‘incompatible-rust-versions = «fallback»‘.
  • Начат ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ компилятора Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ‚ΠΈΠΏΠΎΠ² (trait solver), ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π³Ρ€Π°Π½ΠΈΡ† примСнимости Ρ‚ΠΈΠΏΠ°ΠΆΠ΅ΠΉ, Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΠΎΡ†Π΅Π½ΠΊΠΈ совмСстимости Ρ‚ΠΈΠΏΠΎΠ². Π’ вСрсии 1.84 Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ задСйствован для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ согласованности Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Ρ‚ΠΈΠΏΠ°ΠΆΠ΅ΠΉ, Ρ‚.Π΅. ΠΎΡ†Π΅Π½ΠΊΠΈ сущСствования Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°ΠΆΠ° для рассматриваСмого Ρ‚ΠΈΠΏΠ° с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ ΠΊΠΎΠ΄Π° ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… crate-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Указанная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² старой Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ², ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ способных привСсти ΠΊ появлСнию ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈΠ·-Π·Π° пСрСсСчСния Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Ρ‚ΠΈΠΏΠ°ΠΆΠ΅ΠΉ.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ API «Strict Provenance», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для привСдСния указатСля ΠΊ Ρ†Π΅Π»ΠΎΠΌΡƒ числу ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Ρ‘Π½Π½Ρ‹Ρ… ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ Π΅Π³ΠΎ происхоТдСнии ΠΈ области использования (ΠΏΠΎΠΌΠΈΠΌΠΎ адрСса ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ прикрСпляСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «provenance» с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ связи с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ указатСлями, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π³Π΄Π΅ ΠΈ ΠΊΠΎΠ³Π΄Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ памяти). ΠŸΡ€ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΈ указатСля ΠΊ Ρ†Π΅Π»ΠΎΠΌΡƒ числу ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΠ·-Π·Π° проблСматичности ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ происхоТдСниС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ указатСля. Новый API позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с указатСлями, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ сохранСниС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² ΠΌΠ»Π°Π΄ΡˆΠΈΡ… Π±ΠΈΡ‚Π°Ρ… указатСля, Π±Π΅Π· привСдСния указатСля ΠΊ Ρ†Π΅Π»ΠΎΠΌΡƒ числу.
  • Π’ разряд ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° новая порция API, Π² Ρ‚ΠΎΠΌ числС стабилизированы ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ°ΠΆΠ΅ΠΉ:
    • Ipv6Addr::is_unique_local
    • Ipv6Addr::is_unicast_link_local
    • core::ptr::with_exposed_provenance
    • core::ptr::with_exposed_provenance_mut
    • <ptr>::addr
    • <ptr>::expose_provenance
    • <ptr>::with_addr
    • <ptr>::map_addr
    • <int>::isqrt
    • <int>::checked_isqrt
    • <uint>::isqrt
    • NonZero::isqrt
    • core::ptr::without_provenance
    • core::ptr::without_provenance_mut
    • core::ptr::dangling
    • core::ptr::dangling_mut
    • Pin::as_deref_mut
  • ΠŸΡ€ΠΈΠ·Π½Π°ΠΊ «const» ΠΏΡ€ΠΈΠΌΠ΅Π½Ρ‘Π½ Π² функциях:
    • AtomicBool::from_ptr
    • AtomicPtr::from_ptr
    • AtomicU8::from_ptr
    • AtomicU16::from_ptr
    • AtomicU32::from_ptr
    • AtomicU64::from_ptr
    • AtomicUsize::from_ptr
    • AtomicI8::from_ptr
    • AtomicI16::from_ptr
    • AtomicI32::from_ptr
    • AtomicI64::from_ptr
    • AtomicIsize::from_ptr
    • <ptr>::is_null
    • <ptr>::as_ref
    • <ptr>::as_mut
    • Pin::new
    • Pin::new_unchecked
    • Pin::get_ref
    • Pin::into_ref
    • Pin::get_mut
    • Pin::get_unchecked_mut
    • Pin::static_ref
    • Pin::static_mut
  • Π‘Ρ‚Π°Π±ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ассСмблСрных inline-вставок для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ s390x ΠΈ Arm64EC.
  • Для Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ WebAssembly стабилизирована ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ multivalue, reference-types ΠΈ tail-call.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ wasm32v1-none. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡŽ сборки.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ нСсколько ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², связанных с Rust:

  • ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Tock 2.2, написанной Π½Π° языкС Rust ΠΈ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° использованиС Π² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ…. БистСма позволяСт ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π½Π΅ Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… довСрия ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° встраиваСмых устройствах, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠžΠ—Π£, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ, TPM (Trusted Platform Module), Π±Ρ€Π΅Π»ΠΎΠΊΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ носимыС устройства. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ с ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ Π½Π° Π±Π°Π·Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ ARM Cortex-M ΠΈ RISC-V. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Tock являСтся изоляция ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ядра ΠΈ слоя с Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ изоляция ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ прилоТСния ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Для изоляции ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ возмоТности языка Rust, Ρ‚Π°ΠΊ ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ памяти.
  • ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ VEKOS (Verified Experimental Kernel OS) Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ ядро ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Π½Π° языкС Rust, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ выполняСмых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². ΠŸΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой, создании процСсса ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ памяти формируСтся криптографичСскоС ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ Π²Π΅Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π²ΠΎ врСмя выполнСния (рСализация сравниваСтся с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π° для Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ дСйствий Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС). Π’ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС VKFS для обСспСчСния цСлостности ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ искаТСния Π·Π°Π΄Π½ΠΈΠΌ числом задСйствована структура «Π΄Π΅Ρ€Π΅Π²ΠΎ ΠœΠ΅Ρ€ΠΊΠ»Π°» (Merkle Tree), каТдая Π²Π΅Ρ‚ΠΊΠ° Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Π΅Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ всС Π½ΠΈΠΆΠ΅Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ ΠΈ ΡƒΠ·Π»Ρ‹, благодаря Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΌΡƒ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти производится Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ COW (Copy-On-Write).
  • Π“Ρ€ΡƒΠΏΠΏΠ° исслСдоватСлСй ΠΈΠ· Microsoft ΠΈ Inria Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ подмноТСство языка Π‘ΠΈ — Mini-C, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ для автоматичСской трансляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° языкС Π‘ΠΈ Π² прСдставлСниС Π½Π° языкС Rust. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ компилятора c2rust, Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ позволяСт Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Rust-ΠΊΠΎΠ΄ Π±Π΅Π· использования unsafe, Π½ΠΎ Π½Π°Ρ†Π΅Π»Π΅Π½ Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π‘ΠΈ-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ надёТности. ΠŸΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‰Π΅ Π²Π½Π°Ρ‡Π°Π»Π΅ пСрСвСсти Π‘ΠΈ-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² прСдставлСниС Π½Π° Mini-C, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с указатСлями, Ρ‡Π΅ΠΌ пСрСписываниС unsafe-Π±Π»ΠΎΠΊΠΎΠ² послС прямой компиляции ΠΈΠ· Π‘ΠΈ Π² Rust.

    РСализация компилятора базируСтся Π½Π° инструмСнтарии KaRaMeL. Mini-C Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΈ ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π½ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Π½ΠΈΡŽ Π½Π° Rust криптографичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ HACL*, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ прСдоставлСно Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ надёТности. ПодобноС Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π±Ρ‹Π»ΠΎ использовано для дСмонстрации возмоТности Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· Mini-C бСзопасный ΠΊΠΎΠ΄ Π½Π° Rust.

  • ДэниСл CΡ‚Π΅Π½Π±Π΅Ρ€Π³ (Daniel Stenberg), Π°Π²Ρ‚ΠΎΡ€ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ curl, объявил ΠΎ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Curl Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ HTTP-бэкСнда, написанного Π½Π° Rust с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Hyper. Π’ качСствС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Π½ΠΎ отсутствиС интСрСса со стороны Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.
  • Анонсирован Π±Π΅Ρ‚Π°-выпуск ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Fish 4.0, пСрСписанный Π½Π° языкС Rust. ΠžΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ послС Π΄Π²ΡƒΡ… Π»Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ кодовая Π±Π°Π·Π° Fish Π±Ρ‹Π»Π° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° с Π‘++ Π½Π° Rust. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Rust ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ соврСмСнный инструмСнтарий, Π²Ρ‹ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉ ошибки Π½Π° этапС компиляции, ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ для Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².
  • ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Tor ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» выпуск Arti 1.3.2, Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Tor-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π° языкС Rust. Arti прСдоставляСт Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Π΅ΠΌΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ прилоТСния. ΠŸΡ€ΠΈ создании Arti ΡƒΡ‡Ρ‚Ρ‘Π½ ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Tor для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ извСстных Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΌ ΠΈ эффСктивным. Π’Π΅Ρ‚ΠΊΠ° 1.x ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π° ΠΊΠ°ΠΊ пригодная для использования ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π°Ρ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΡŽΠ·Π°Π±ΠΈΠ»ΠΈΡ‚ΠΈ ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ основная рСализация Π½Π° языкС Π‘ΠΈ. Π’ Π½ΠΎΠ²ΠΎΠΉ вСрсии ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° RPC, ΠΏΠΎΠ²Π΅Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ€Π΅Π»Π΅Π΅Π² ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DoS-Π°Ρ‚Π°ΠΊ Π½Π° Onion-сСрвисы.
  • ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ выпуск ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° Bevy 0.15, написанного Π½Π° Rust. Π’ Π΄Π²ΠΈΠΆΠΊΠ΅ примСняСтся датацСнтричная модСль (Data Driven) опрСдСлСния ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ, построСнная ΠΏΠΎΠ²Π΅Ρ€Ρ… Π½Π°Π±ΠΎΡ€Π° Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Bevy ECS (Entity Component System), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ 2D ΠΈ 3D Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³, скСлСтная анимация, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„Π° Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°, систСма формирования сцСн, Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для построСния интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, внСсСниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² сцСны ΠΈ рСсурсы Π±Π΅Π· нСобходимости пСрСзапуска.
  • ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Helix 25.01, написанный Π½Π° Rust ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ΄Π΅ΠΈ, Π·Π°Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π² vim ΠΈ neovim. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ интСграция с LSP-сСрвСрами ΠΈ с Tree-sitter, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ², использованиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… курсоров ΠΏΡ€ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Ρ‚Π΅ΠΌΡ‹ оформлСния, ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» DAP (Debug Adapter Protocol).
  • Π’ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½Ρ‹ΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ Servo, написанный Π½Π° Rust, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚Ρ‘ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° оформлСния. На 20% сокращён Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ServoShell. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° web-спСцификаций Π΄ΠΎΠ²Π΅Π΄Π΅Π½Π° Π΄ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ…ΠΎΠ΄Π° ΠΈ чтСния сообщСний Π² Discord (ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сообщСний ΠΏΠΎΠΊΠ° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°).
  • Компания Mozilla прСдставила инструмСнтарий Uniffi for React Native для создания ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΊ React Native Π½Π° языкС Rust.
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ тСстированиС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠ² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ PNG. Π”Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΈ Π½Π° Rust (png, zune-png, wuffs) оказались быстрСС Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠ² Π½Π° Π‘ΠΈ (libpng, spng, stb_image). НапримСр, crate-ΠΏΠ°ΠΊΠ΅Ρ‚ png (image-rs) ΠΎΠ±ΠΎΠ³Π½Π°Π» libpng Π² 1.8 Ρ€Π°Π·Π° Π½Π° систСмС x86 ΠΈ Π² 1.5 Ρ€Π°Π·Π° Π½Π° систСмС ARM. image-rs: 375.401 MP/s (average) 318.632 MP/s (geomean) zune-png: 376.649 MP/s (average) 302.529 MP/s (geomean) wuffs: 376.205 MP/s (average) 287.181 MP/s (geomean) libpng: 208.906 MP/s (average) 173.034 MP/s (geomean) spng: 299.515 MP/s (average) 235.495 MP/s (geomean) stb_image: 234.353 MP/s (average) 171.505 MP/s (geomean)

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