CPython ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Rust ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ сборочной Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΊ вСрсии 3.17

Π­ΠΌΠΌΠ° Π‘ΠΌΠΈΡ‚ (Emma Smith) ΠΈ ΠšΠΈΡ€ΠΈΠ»Π» ΠŸΠΎΠ΄ΠΎΠΏΡ€ΠΈΠ³ΠΎΡ€Π° (Kirill Podoprigora), входящиС Π² число ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Python (core team), ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Pre-PEP) ΠΎ постСпСнном Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ возмоТности использования языка Rust Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ CPython, эталонной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ языка программирования Python. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Rust ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌΡ‹Ρ… Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Modules/. Π’ пСрспСктивС, ΠΊ вСрсии Python 3.17, Rust ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈ сборкС CPython.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ внСдрСния Rust β€” обСспСчСниС бСзопасной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ошибок ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ use-after-free ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ² Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π±ΡƒΡ„Π΅Ρ€Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ потокобСзопасного ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ особСнно Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ Π² свСтС ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ сборки CPython Π±Π΅Π· глобальной Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° (GIL, Global Interpreter Lock) для распараллСливания ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π° многоядСрных систСмах (ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ free-threaded Python). Rust Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт высокоуровнСвыС, Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚ΡƒΡŽ систСму мСтапрограммирования, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π³ΠΈΠ³ΠΈΠ΅Π½ΠΈΡ‡Π½Ρ‹Π΅ макросы.

План внСдрСния:

  • Python 3.15 (2026 Π³ΠΎΠ΄): ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ отсутствии Rust Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ сборки.
  • Python 3.16 (2027 Π³ΠΎΠ΄): сборка Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π±Π΅Π· Rust Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Ρ„Π»Π°Π³ΠΎΠΌ Β«β€”with-rust=noΒ».
  • Python 3.17 (2028 Π³ΠΎΠ΄): Rust ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π½Π° этапС сборки.

Для взаимодСйствия с C API CPython прСдполагаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ автоматичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ привязки Ρ‡Π΅Ρ€Π΅Π· bindgen, Π° Π½Π΅ сторонниС абстракции, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ PyO3, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ API. Вопросы управлСния зависимостями, кросс-компиляции ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ€Π΅Π΄ΠΊΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ находятся Π² стадии обсуТдСния.

Π’ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ подчёркиваСтся, Ρ‡Ρ‚ΠΎ всС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° PEP 11 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Rust ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Tier 2. НСкоторыС ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ ΠΈΠ»ΠΈ Π½ΠΈΡˆΠ΅Π²Ρ‹Π΅ систСмы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, HPPA ΠΈ RISC OS) Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈΡ… доля Π² экосистСмС Python считаСтся Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ.

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ