نسخهای از پروژه Nuitka 2.0 در دسترس است، که یک کامپایلر برای ترجمه اسکریپتهای پایتون به یک نمایش C توسعه میدهد، که سپس میتواند با استفاده از libpython در یک فایل اجرایی برای حداکثر سازگاری با CPython (با استفاده از ابزارهای بومی CPython برای دستکاری اشیا) کامپایل شود. سازگاری کامل با نسخه های فعلی Python 2.6، 2.7، 3.3 - 3.11 ارائه شده است. در مقایسه با CPython، اسکریپت های کامپایل شده 335% بهبود عملکرد را در تست های پیستون نشان می دهند. کد پروژه تحت مجوز آپاچی توزیع می شود.
از جمله تغییرات نسخه جدید:
- قابلیت استفاده از متغیرها در پیکربندی بسته را اضافه کرد که به شما امکان می دهد در زمان کامپایل مقادیر را از بسته های نصب شده جستجو کنید و از آن مقادیر برای تعریف backend استفاده کنید. پشتیبانی از متغیرها در پیکربندی به شما این امکان را میدهد تا بسیاری از وظایف را به روشهای استانداردی که قبلاً به پلاگینهای متصل نیاز داشتند، حل کنید.
- پشتیبانی از پارامترهای تعریف شده توسط کاربر برای تأثیرگذاری بر پیکربندی هر بسته اضافه شده است. پارامترها را می توان با استفاده از تابع get_parameter جدید خواند و برای انتخاب رفتار ماژول ها استفاده کرد (به عنوان مثال، می توانید پارامتری را برای غیرفعال کردن Numba JIT یا Torch JIT تنظیم کنید).
- گزینه "--include-onefile-external-data" اضافه شد تا الگوهای فایل دادهای را که در پیکربندی تعریف شدهاند، اما هنگام ساخت در حالت تک فایل باید جداگانه از فایل اجرایی ارائه شوند، مشخص کنید.
- گزینه "--cf-protection" را برای تنظیم حالت حفاظتی CFI (Control Flow Integrity) در GCC اضافه کرد، که نقض دستور اجرای عادی (جریان کنترل) را مسدود می کند.
- برای فایلهای yaml افزونه، قابلیت ایجاد جمعهای چک برای بررسیهای یکپارچگی پیادهسازی شده است که در آینده قصد دارند از آن برای سازماندهی تأیید زمان اجرا استفاده کنند.
- Actions اجازه می دهد تا چندین گزینه مشخص شود، که با خطوط از هم جدا شوند (یک خط جدید به عنوان جداکننده استفاده می شود). به عنوان مثال: include-data-dir: | a=bc=d
- تجزیه و تحلیل انواع حلقه ها پیاده سازی شده است که در آینده برای پیاده سازی بهینه سازی های انتخابی استفاده خواهد شد.
- بهینه سازی اضافه شده برای سرعت بخشیدن به کار با متغیرهای غیر مشترک و فرار.
- قابلیتهای پلاگین ضد نفخ افزایش یافته است که اکنون میتوان از آن برای کاهش تعداد بستهها در هنگام استفاده از کتابخانههای streamlit، torch، knetworkx، توزیعشده، skimage، bitsandbytes، tf_keras، pip، networkx و pywt استفاده کرد. به pytest، IPython، nose، triton حذف شده و dask).
منبع: opennet.ru