GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing python.github.io — پایداری رابط برنامهنویسی کاربردی و رابط دودویی کاربردی C پایداری رابط برنامهنویسی کاربردی و رابط دودویی کاربردی C¶مگر آنکه خلاف آن مستند شده باشد، C API پایتون مشمول سیاست سازگاری رو به عقب، PEP 387، است. بیشتر تغییرات آن با کد منبع سازگار هستند (source-compatible) (معمولاً فقط با افزودن APIهای جدید). تغییر APIهای موجود یا حذف API تنها پس از یک دورهی منسوخسازی یا برای رفع مشکلات جدی انجام میشود. رابط دودویی برنامه (ABI) سیپایتون در طول یک انتشار جزئی، به جلو و به عقب سازگار است (اگر اینها به یک شکل کامپایل شده باشند؛ به ملاحظات پلتفرم در ادامه مراجعه کنید). بنابراین، کدی که برای پایتون 3.10.0 کامپایل شده باشد، روی 3.10.8 کار خواهد کرد و برعکس، اما برای 3.9.x و 3.11.x باید جداگانه کامپایل شود. دو سطح از C API با انتظارات پایداری متفاوت وجود دارد:
این موارد در ادامه با جزئیات بیشتر بررسی میشوند. نامهایی که با خط زیر آغاز میشوند، مانند API ناپایدار C¶هر API که با پیشوند این بهطور کلی برای ابزارهای تخصصی و سطح پایین مانند اشکالزداها در نظر گرفته شده است. انتظار میرود پروژههایی که از این API استفاده میکنند، توسعهی سیپایتون را دنبال کنند و برای سازگاری با تغییرات تلاش اضافی صرف کنند. رابطهای دودویی کاربردی پایدار¶Stable ABI پایتون به افزونهها اجازه میدهد بدون نیاز به کامپایل مجدد، با چندین نسخهی پایتون سازگار باشند. نکته برای سادگی، این سند دربارهی توسعهها صحبت میکند، اما ABI پایدار برای همهی استفادههای API – برای مثال، تعبیهی پایتون – به همین شکل کار میکند. دو ABI پایدار وجود دارد:
این امکان وجود دارد که یک افزونه برای هر دو نسخهی هر ABI پایدار با استفاده از دو رقم اول نسخهی پایتون شمارهگذاری میشود. برای مثال، ABI پایدار ۳.۱۴ با پایتون ۳.۱۴ مطابقت دارد. افزونهای که برای ABI پایدار ۳.x کامپایل شده باشد، از نظر ABI با پایتون ۳.x و بالاتر سازگار است. افزونههایی که یک ABI پایدار را هدف قرار میدهند، باید تنها از زیرمجموعهی محدودی از C API استفاده کنند. این زیرمجموعه به نام Limited API شناخته میشود؛ محتویات آن در فهرست زیر آمده است. روی ویندوز، توسعههایی که از یک ABI پایدار استفاده میکنند باید به جای یک کتابخانهی وابستهی نسخه مانند در برخی پلتفرمها، پایتون به دنبال پروندههای کتابخانهی مشترکی با برچسب پایتون لزوماً بررسی نمیکند که افزونههایی که بارگذاری میکند دارای ABI سازگار باشند. به توسعهدهندگان افزونهها توصیه میشود با استفاده از جایگاه تمام توابع موجود در ABI پایدار به عنوان تابع در کتابخانهی مشترک پایتون حضور دارند، نه صرفاً به صورت کلاندستورها (ماکروها). این امر باعث میشود که آنها در زبانهایی که از پیشپردازندهی C استفاده نمیکنند، از جمله کامپایل کردن برای ABI پایدار¶نکته ابزارهای ساخت (مانند meson-python، scikit-build-core یا Setuptools) اغلب مکانیزمی برای تنظیم ماکروها و همگامسازی آنها با نام پروندههای افزونه و سایر فرااطلاعات دارند. در صورت وجود چنین مکانیزمی، استفاده از آن را به تعریف دستی ماکروها ترجیح دهید. باقی ماندهی این بخش عمدتاً برای توسعهدهندگان ابزارها و افرادی که افزونهها را به صورت دستی کامپایل میکنند، کاربرد دارد. همچنین ببینید فهرست ابزارهای پیشنهادی در راهنمای کاربر بستهبندی پایتون برای کامپایل کردن برای یک ABI پایدار، یکی از ماکروهای زیر یا هر دو آنها را روی پایینترین نسخهی پایتونی که افزونهی شما باید پشتیبانی کند، در قالب ماکروها باید پیش از گنجاندن 0x30a0000 /* Py_PACK_VERSION(3,10) */ 0x30b0000 /* Py_PACK_VERSION(3,11) */ 0x30c0000 /* Py_PACK_VERSION(3,12) */ 0x30d0000 /* Py_PACK_VERSION(3,13) */ 0x30e0000 /* Py_PACK_VERSION(3,14) */ 0x30f0000 /* Py_PACK_VERSION(3,15) */ هنگامی که یکی از ماکروها تعریف میشود،
هر دو ماکرو یک ABI هدف را مشخص میکنند؛ سبک نامگذاری متفاوت به دلیل سازگاری با نسخههای قبلی است. نکتهی تاریخی همچنین میتوانید هنگامی که هر دو تعریف شوند، در یک ساخت نخآزاد -- یعنی زمانی که
محدوده و کارایی ABI پایدار¶هدف از ABI پایدار این است که همهی کارهایی که با API کامل C امکانپذیر است، اما احتمالاً همراه با جریمهی کارایی، اجازه داده شود. به طور کلی، سازگاری با ABI پایدار نیازمند برخی تغییرات در کد منبع توسعه است. برای مثال، در حالی که برای مثالی دیگر، هنگام عدم کامپایل برای ABI پایدار، برخی از توابع API پایتون درونخطی میشوند یا با کلاندستورها جایگزین میشوند. کامپایل کردن برای ABI پایدار این درونخطیسازی را غیرفعال میکند، و با بهبود ساختارهای دادهی پایتون اجازه میدهد پایداری حفظ شود، اما احتمالاً کارایی را کاهش میدهد. با کنار گذاشتن تعریف هشدارهای ABI پایدار¶توجه داشته باشید که کامپایل کردن برای Stable ABI تضمین کامل نمیکند که کد با نسخههای مورد انتظار پایتون سازگار باشد. Stable ABI از مشکلات ABI، مانند خطاهای پیونددهنده به دلیل نمادهای مفقود یا خرابی دادهها به دلیل تغییرات در طرحبندی ساختارها یا امضای تابع، جلوگیری میکند. با این حال، سایر تغییرات در پایتون میتواند رفتار افزونهها را تغییر دهد. یکی از مشکلاتی که ماکروهای به همین دلیل، توصیه میکنیم یک افزونه را با تمام نسخههای فرعی پایتون که پشتیبانی میکند، آزمایش کنید. همچنین توصیه میکنیم مستندات تمام APIهای استفادهشده را بررسی کنید تا مشخص شود که آیا بهطور صریح بخشی از API محدود هستند یا خیر. حتی با تعریف همچنین توجه داشته باشید که اگرچه کامپایل کردن با ملاحظات پلتفرم¶پایداری ABI نه تنها به پایتون، بلکه به کامپایلر استفادهشده، کتابخانههای سطح پایینتر و گزینههای کامپایلر نیز بستگی دارد. برای اهداف Stable ABIs، این جزئیات یک «پلتفرم» را تعریف میکنند. آنها معمولاً به نوع سیستمعامل و معماری پردازنده بستگی دارند. مسئولیت هر توزیعکنندهی خاص پایتون است که اطمینان حاصل کند تمام نسخههای پایتون روی یک پلتفرم خاص به گونهای ساخته شدهاند که Stable ABIها یا ABIهای خاصِ نسخه را مختل نکنند. این مورد در خصوص نسخههای ویندوز و macOS ارائه شده از سوی بررسی ABI¶اضافه شده در نسخهی 3.15. پایتون شامل یک بررسی مقدماتی برای سازگاری ABI است. این بررسی جامع نیست. این بررسی تنها در برابر موارد رایج نصب ماژولهای ناسازگار برای مفسر اشتباه محافظت میکند. همچنین ناسازگاریهای platform incompatibilities را در نظر نمیگیرد. این کار تنها پس از بارگذاری موفقیتآمیز یک افزونه قابل انجام است. با وجود این محدودیتها، توصیه میشود که ماژولهای توسعهای از این مکانیزم استفاده کنند تا ناسازگاریهای قابلتشخیص به جای فروپاشی، استثناهایی را ایجاد کنند. بیشتر ماژولها میتوانند از طریق جایگاه PyABIInfo_VAR(abi_info); static PyModuleDef_Slot mymodule_slots[] = { {Py_mod_abi, &abi_info}, ... }; API کامل در ادامه برای موارد استفادهی پیشرفته شرح داده شده است.
محتویات API محدود¶این فهرست قطعی Limited API برای پایتون 3.15 است:
© حق نشر 2001 Python Software Foundation.
این صفحه تحت مجوز بنیاد نرمافزار پایتون نسخه ۲ منتشر شده است. مثالها، دستورالعملها، و سایر کدهای موجود در مستندات همچنین تحت مجوز بدون بند BSD منتشر شدهاند. برای اطلاعات بیشتر به تاریخچه و مجوز مراجعه کنید. بنیاد نرمافزار پایتون یک شرکت غیرانتفاعی است. لطفاً کمک مالی کنید. آخرین بهروزرسانی در نوامبر 12, 2026 (06:19 UTC). آیا اشکالی یافتید؟ ساخته شده با Sphinx 9.1.0. |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |