برنامه‌نویسی و معماری نرم‌افزار

تحول در معماری CPython: نقشه راه ادغام زبان Rust و استراتژی‌های تست تا سال ۲۰۲۹

جامعه توسعه‌دهندگان پایتون در رویداد اخیر Python Language Summit، گام‌های عملیاتی و استراتژی‌های دقیقی را برای ادغام زبان Rust در هسته CPython تدوین کرده‌اند. این پروژه که با هدف ارتقای ایمنی حافظه و بهبود عملکرد مطرح شده، قرار است به صورت تدریجی و با تکیه بر تجربیات موفق در پروژه‌هایی نظیر هسته لینوکس و اندروید، جای پای خود را در اکوسیستم پایتون محکم کند.

چرا پایتون به سراغ Rust می‌رود؟

یکی از محرک‌های اصلی این تغییر، افزایش نگران‌کننده باگ‌های مرتبط با خرابی حافظه (Memory-related crashes) در هسته پایتون است. گزارش‌های ست لارسن، توسعه‌دهنده امنیتی پایتون، نشان می‌دهد که تعداد 이슈‌های برچسب‌گذاری شده با “type-crash” روندی صعودی داشته‌اند. رویکرد Rust با شعار “سریع حرکت کن و مسائل را حل کن”، در سیستم‌عامل اندروید ثابت کرده است که می‌تواند تعداد بازبینی‌های مورد نیاز برای وصله‌ها (patches) را به شدت کاهش دهد. با جایگزینی بخش‌های حساس C با کد امن Rust، انتظار می‌رود پایداری CPython در برابر سرریز بافر و سایر آسیب‌پذیری‌های متداولِ حافظه به طرز چشمگیری افزایش یابد.

استراتژی فازبندی و تقویم اجرایی

تیم توسعه «Rust for CPython» به سرپرستی کریل پودوپریگورا و اما اسمیت، یک نقشه راه سه مرحله‌ای ارائه داده‌اند تا ریسک این گذار به حداقل برسد:

  • پایتون ۳.۱۶ (مهر ۱۴۰۶ / اکتبر ۲۰۲۷): معرفی کد Rust به عنوان یک قابلیت اختیاری. در این مرحله، کدهای C فعلی به عنوان جایگزین (Fallback) باقی می‌مانند تا از سازگاری کامل اطمینان حاصل شود.
  • دوره گذار: گزارش بازخوردها از توزیع‌کنندگان پایتون و شناسایی مشکلات وابسته به پلتفرم‌های مختلف تا زمان انتشار نسخه ۳.۱۷.
  • پایتون ۳.۱۸ (سال ۱۴۰۸ / ۲۰۲۹): حداقل زمانی که Rust ممکن است به عنوان پیش‌نیاز ساخت (Build Dependency) برای هسته CPython در نظر گرفته شود.

انتخاب استراتژیک zlib برای اولین نفوذ

تیم توسعه برای شروع، ماژول zlib را انتخاب کرده‌اند. انتخاب این ماژول هوشمندانه است؛ زیرا علاوه بر داشتن دامنه (Scope) کوچک و مدیریت‌پذیر، تأثیر گسترده‌ای بر اکوسیستم پایتون دارد. کتابخانه zlib-rs که در پروژه‌های بزرگی مانند uv، مرورگر فایرفاکس و ابزار Cargo استفاده شده، نه تنها ایمن‌تر است، بلکه در بسیاری از پلتفرم‌ها عملکرد سریعی نسبت به پیاده‌سازی فعلی (zlib و zlib-ng) ارائه می‌دهد. از آنجا که zlib در فرآیند بسته‌بندی پایتون نقشی کلیدی دارد، این تغییر می‌تواند سرعت نصب پکیج‌ها با استفاده از pip را در نسخه ۳.۱۶ برای اکثر کاربران بهبود بخشد.

پوشش پلتفرم‌ها و چالش‌های زیرساختی

در سال‌های گذشته، یکی از بزرگترین دغدغه‌های جامعه پایتون، پوشش محدود پلتفرم‌های Rust در مقایسه با C بود که پایتون را روی بیش از ۲۰ معماری پشتیبانی می‌کند. با این حال، دیوید هیویت، سفیر این پروژه، تأکید کرد که وضعیت پشتیبانی Rust از معماری‌های مختلف در سال اخیر به شدت بهبود یافته و این نگرانی اکنون کمرنگ‌تر از همیشه است. این پروژه با بهره‌گیری از تیم ۶۰ نفره‌ای متشکل از توسعه‌دهندگان هسته پایتون و متخصصان Rust، قصد دارد استانداردهای سخت‌گیرانه‌ای برای پذیرش نهایی اعمال کند تا اطمینان حاصل شود که هیچ پلتفرمی در این گذار به حاشیه رانده نمی‌شود.

مشخصات فنی و برنامه‌ریزی

  • پروژه میزبان: CPython (Core)
  • زبان هدف: Rust (نرم‌افزار اختیاری در فاز اول)
  • فاز اولیه: ماژول zlib (بهینه شده با zlib-rs)
  • تاریخ احتمالی الزام برای Build: سال ۲۰۲۹ (نسخه ۳.۱۸)
  • تأثیر اصلی: بهبود ایمنی حافظه و افزایش سرعت عملیات IO/Compression
📌 منبع و مطالعه بیشتر: Slashdot: How Python Will Test Adding Rust Into CPython
حامد

حامد

مسئول مجله فناوری آسمان نقره‌ای