سي بايثون

CPython هو التطبيق المرجعي للغة البرمجة بايثون . مكتوب بلغة C وبايثون، وهو التطبيق الافتراضي والأكثر استخدامًا للغة بايثون.

يمكن تعريف CPython بأنه مترجم ومفسر في آن واحد ، حيث يقوم بتحويل كود بايثون إلى بايت كود قبل تفسيره. ويحتوي على واجهة وظائف خارجية مع عدة لغات، بما في ذلك لغة C، حيث يجب كتابة روابط الدوال صراحةً بلغة أخرى غير بايثون.

تصميم

من السمات المميزة لـ CPython استخدامها لقفل المفسر العام (GIL)، بحيث لا يمكن إلا لخيط واحد معالجة بايت كود في كل عملية مفسر CPython في الوقت نفسه. [ 2 ] هذا لا يعني عدم جدوى تعدد الخيوط ؛ فالسيناريو الأكثر شيوعًا لتعدد الخيوط هو عندما تنتظر الخيوط في الغالب اكتمال العمليات الخارجية.

قد يحدث هذا عندما تقوم عدة خيوط معالجة بخدمة عملاء منفصلين. قد ينتظر أحد الخيوط ردًا من العميل، بينما ينتظر خيط آخر تنفيذ استعلام قاعدة بيانات ، في حين يقوم الخيط الثالث بمعالجة كود بايثون فعليًا.

ومع ذلك، فإن GIL يعني أن CPython غير مناسب للعمليات التي تنفذ خوارزميات كثيفة الاستخدام لوحدة المعالجة المركزية في كود Python والتي يمكن توزيعها على عدة أنوية.

في التطبيقات العملية، نادراً ما يُمثل قفل المفسر العام (GIL) عائقاً كبيراً. ويعود ذلك إلى أن لغة بايثون بطيئة بطبيعتها، ولا تُستخدم عادةً في العمليات التي تتطلب موارد معالجة مكثفة أو حساسة للوقت. تُستخدم بايثون عادةً على المستوى الأعلى، وتستدعي دوالاً من مكتبات لتنفيذ مهام متخصصة. هذه المكتبات ليست مكتوبة بلغة بايثون في الغالب، ويمكن تنفيذ كود بايثون في خيط معالجة آخر أثناء استدعاء إحدى هذه العمليات الأساسية. المكتبة غير المكتوبة بلغة بايثون، والتي يتم استدعاؤها لتنفيذ المهمة التي تتطلب موارد معالجة مكثفة، لا تخضع لقفل المفسر العام (GIL)، ويمكنها تنفيذ العديد من خيوط المعالجة في وقت واحد على معالجات متعددة دون قيود.

لا يمكن تحقيق التزامن في تنفيذ كود بايثون إلا من خلال عمليات مترجم CPython منفصلة تُدار بواسطة نظام تشغيل متعدد المهام . يُعقّد هذا الأمر التواصل بين عمليات بايثون المتزامنة ، إلا أن وحدة المعالجة المتعددة تُخفف من هذا التعقيد إلى حد ما؛ مما يعني إمكانية تنفيذ التطبيقات التي تستفيد فعلاً من تنفيذ كود بايثون المتزامن بأقل قدر من النفقات العامة .

يُسهّل وجود قفل المفسر العام (GIL) عملية تنفيذ CPython، ويُيسّر إنشاء تطبيقات متعددة الخيوط لا تستفيد من تنفيذ أكواد بايثون المتزامنة. مع ذلك، في غياب قفل المفسر العام، يجب على تطبيقات المعالجة المتعددة التأكد من أن جميع الأكواد المشتركة آمنة للاستخدام في بيئات متعددة الخيوط.

على الرغم من تقديم العديد من المقترحات لإلغاء قفل المفسر العام (GIL)، إلا أن الإجماع العام يشير إلى أن مزايا قفل المفسر العام تفوق عيوبه في معظم الحالات؛ وفي الحالات النادرة التي يُشكل فيها قفل المفسر العام عائقًا، ينبغي بناء التطبيق حول بنية المعالجة المتعددة. وللمساعدة في زيادة التوازي، تم إصدار تحسين في أكتوبر 2023 يسمح بوجود قفل مفسر عام منفصل لكل مترجم فرعي في عملية بايثون واحدة، ووُصفت هذه التحسينات بأنها "خيوط قابلة للمشاركة الاختيارية". [ 3 ] [ 4 ]

بعد عدة مناقشات، تم إطلاق مشروع في عام 2023 لاقتراح جعل GIL اختياريًا بدءًا من الإصدار 3.13 من بايثون، [ 5 ] والذي تم إصداره في 7 أكتوبر 2024، في بايثون 3.13.0. [ 6 ] [ 7 ]

تاريخ

في عام ٢٠٠٩، تم إنشاء فرع مدعوم من جوجل باسم Unladen Swallow لدمج مُصرّف فوري في CPython. [ ٨ ] [ ٩ ] انتهى التطوير في عام ٢٠١١ دون دمجه في التنفيذ الرئيسي، [ ١٠ ] على الرغم من أن بعضًا من شفرته، مثل التحسينات التي أُدخلت على وحدة cPickle، قد تم تضمينها. [ ١١ ] [ ٨ ]

في عام 2021، تم اقتراح "مفسر تكيفي متخصص"، والذي أظهر تحسنًا في الأداء بنسبة تتراوح بين 10% و60% من خلال تخصيص التعليمات الشائعة التنفيذ التي تُظهر استقرارًا واضحًا في النوع ، وتحويلها إلى تعليمات أسرع وأكثر تحديدًا للنوع، مع إمكانية إلغاء تخصيص التعليمات عند الضرورة. [ 12 ] أُدرج المفسر التكيفي المتخصص (SAI) لأول مرة في بايثون 3.11، والذي أظهر، وفقًا لمجموعة اختبارات الأداء "pyperformance"، سرعةً أعلى بنسبة 25% في المتوسط ​​من بايثون 3.10. [ 13 ]

في عام ٢٠٢٤، دُمج مُترجم تجريبي يعمل بتقنية الترجمة الفورية (JIT) في فرع التطوير الرئيسي لـ CPython. يعتمد هذا المُترجم المبكر على LLVM ، بهدف تسريع عمليات تنفيذ التعليمات البرمجية الأكثر استخدامًا . عند دمجه، لم يكن المُترجم مُضمنًا في إعدادات البناء الافتراضية لـ CPython، وكان أداؤه يُقارب أداء SAI؛ وكان أحد شروط اعتماده الكامل هو زيادة الأداء بنسبة ٥٪ على الأقل. [ ١٤ ] ولا يزال مُعطلاً افتراضيًا، مع إمكانية تفعيله من قِبل المستخدمين للتجربة واستكشاف كيف يُمكن لـ Python أن يُنافس لغات البرمجة الأخرى التي تعتمد على تقنية JIT. [ ١٥ ]

توزيع

تشمل منصات المستوى الأول المدعومة رسميًا: لينكس لمعالجات إنتل 64 بت باستخدام مجموعة أدوات GCC، وماك أو إس لمعالجات إنتل وARM 64 بت، ومايكروسوفت ويندوز لمعالجات إنتل 32 و64 بت. أما منصات المستوى الثاني المدعومة رسميًا فتشمل: لينكس لمعالجات ARM 64 بت، وwasm32 ( Web Assembly ) مع دعم وقت تشغيل WASI، ولينكس لمعالجات إنتل 64 بت باستخدام مجموعة أدوات clang. وتشمل أنظمة المستوى الثالث المدعومة رسميًا: ويندوز ARM 64 بت، وiOS 64 بت، ونظام تشغيل Raspberry Pi (لينكس لمعالج armv7 مع الفاصلة العائمة الصلبة)، ولينكس لمعالجات PowerPC 64 بت في وضع little-endian، ولينكس لمعالجات s390x .

توجد تطبيقات عملية في المزيد من المنصات، بما في ذلك: [ 16 ]

شبيهة بنظام يونكس
خاص ومدمج
آخر

تُدرج PEP 11 [ 17 ] المنصات التي لا تدعمها مؤسسة برمجيات بايثون في CPython . مع ذلك، يمكن دعم هذه المنصات عبر منافذ خارجية. وتشمل هذه المنافذ ما يلي:

  • AtheOS (غير مدعوم منذ الإصدار 2.6)
  • نظام التشغيل BeOS (غير مدعوم منذ الإصدار 2.6)
  • نظام التشغيل DOS (غير مدعوم منذ الإصدار 2.0)
  • IRIX 4 (غير مدعوم منذ الإصدار 2.3)
  • IRIX 5 والإصدارات الأحدث (غير مدعوم منذ الإصدار 3.2، 3.7) [ 18 ]
  • نظام التشغيل ماك أو إس 9 (غير مدعوم منذ الإصدار 2.4)
  • MINIX (غير مدعوم منذ الإصدار 2.3)
  • نظام التشغيل OpenVMS (غير مدعوم منذ الإصدار 3.3)
  • نظام التشغيل OS/2 (غير مدعوم منذ الإصدار 3.3)
  • نظام التشغيل RISC OS (غير مدعوم منذ الإصدار 3.0)
  • نظام التشغيل ويندوز: بشكل عام، تستمر إصدارات ويندوز في تلقي دعم كامل من المستوى الأول طالما أنها مشمولة بسياسة دورة حياة الدعم الممتد من مايكروسوفت. بمجرد انتهاء فترة الدعم الممتد من مايكروسوفت لإصدار قديم من ويندوز، سيتوقف المشروع عن دعم هذا الإصدار في الإصدار الرئيسي التالي (XY0) من بايثون. مع ذلك، ستحتفظ إصدارات تصحيح الأخطاء (0.0.Z) لكل فرع من فروع الإصدار بدعم جميع إصدارات ويندوز التي كانت مدعومة في الإصدار الأولي XY0. تُعتبر إصدارات ويندوز المُخصصة للأنظمة المُدمجة وأنظمة إنترنت الأشياء خارج نطاق سياسة الدعم الرسمية لبايثون.

تتضمن المنافذ الخارجية غير المدمجة في الإصدار الرسمي من CPython التابع لمؤسسة برمجيات بايثون، والتي تحتوي على روابط لموقع التطوير الرئيسي الخاص بها، وحدات إضافية لوظائف خاصة بالمنصة، مثل واجهة برمجة تطبيقات الرسومات والصوت لأجهزة PSP وSMS، وواجهة برمجة تطبيقات الكاميرا لأجهزة S60. وتشمل هذه المنافذ ما يلي:

لينكس المؤسسي

تُوزَّع إصدارات بايثون هذه مع توزيعات لينكس المؤسسية المدعومة حاليًا. [ 26 ] يشير وضع دعم بايثون المذكور في الجدول إلى الدعم المقدم من فريق بايثون الأساسي، وليس من الجهة المسؤولة عن صيانة التوزيعة.

لينكس المؤسسي
نسخة التوزيعنهاية عمر التوزيعإصدار بايثون
أوبونتو 22.04 LTS (جامي جيليفيش)3.10
أوبونتو 20.04 LTS (فوكال فوسا)2030-04 [ 27 ][ 28 ]الإصدار المدعوم: 3.8 [ 29 ]
أوبونتو 18.04 LTS (بيونيك بيفر)2028-04 [ 30 ]غير مدعوم: 2.7 [ 31 ]غير مدعوم: 3.6 [ 32 ]
أوبونتو 16.04 LTS (زينال زيروس)2021-04-30 [ 33 ]غير مدعوم: 2.7 [ 31 ]غير مدعوم: 3.5 [ 32 ]
ديبيان 122028-06 [ 34 ]الإصدار المدعوم: 3.11 [ 34 ]
ديبيان 112026-06 [ 35 ]الإصدار المدعوم: 3.9 [ 35 ]
ديبيان 102024-06 [ 36 ]غير مدعوم: 2.7 [ 37 ]الإصدار المدعوم: 3.7 [ 38 ]
ديبيان 92022-06-30 [ 39 ]غير مدعوم: 2.7 [ 40 ]غير مدعوم: 3.5 [ 41 ]
ريد هات إنتربرايز لينكس 82029غير مدعوم: 2.7 [ 42 ]غير مدعوم: 3.6
ريد هات إنتربرايز لينكس 72024-11-30 [ 43 ]غير مدعوم: 2.7 [ 44 ]
CentOS 82029-05-31غير مدعوم: 2.7غير مدعوم: 3.6
CentOS 72024-06-30غير مدعوم: 2.7 [ 45 ]
SUSE Linux Enterprise Server 152031-07-31غير مدعوم: 2.7 [ 46 ]غير مدعوم: 3.6
SUSE Linux Enterprise Server 122027-10-31غير مدعوم: 2.7 [ 47 ]
SUSE Linux Enterprise Server 112022-03-31غير مدعوم: 2.7 [ 47 ]
أسطورة:
غير مدعوم
مدعوم
أحدث إصدار
نسخة معاينة
الإصدار المستقبلي

البدائل

CPython هي إحدى تطبيقات بايثون "ذات الجودة الإنتاجية" العديدة ، وتشمل: Jython ، المكتوبة بلغة جافا لآلة جافا الافتراضية (JVM)؛ وPyPy ، المكتوبة بلغة RPython والمترجمة إلى لغة C؛ و IronPython ، المكتوبة بلغة C# للبنية التحتية للغة المشتركة . وهناك أيضًا العديد من التطبيقات التجريبية. [ 48 ]

مراجع

  1. "الإصدار 3.14.6" . 10 يونيو 2026. تم الاطلاع عليه في 11 يونيو 2026 .
  2. "التهيئة، والإنهاء، والخيوط" . وثائق بايثون الإصدار 3.8.3 . تم الاطلاع عليها بتاريخ 4 يونيو 2020 .
  3. جيك إيدج (15 أغسطس 2023). "ملخص لكل مترجم" . LWN . تم الاسترجاع في 13 يناير 2024 .
  4. "PEP 684 – A Per-Interpreter GIL | peps.python.org" . تم الاطلاع عليه بتاريخ 13 يناير 2024 .
  5. "PEP 703 – جعل قفل المفسر العام اختياريًا في CPython | peps.python.org" . peps.python.org . تم الاطلاع عليه بتاريخ 17-09-2023 .
  6. "PEP 719 – جدول إصدار بايثون 3.13 | peps.python.org" . peps.python.org . تم الاطلاع عليه بتاريخ 17 سبتمبر 2023 .
  7. "إصدار بايثون 3.13.0" . Python.org . تم الاطلاع عليه بتاريخ 28-03-2025 .
  8. 1 2 وينتر، كولين؛ ياسكين، جيفري؛ كليكنر، ريد (17-03-2010). "PEP 3146 - دمج Unladen Swallow في CPython" . Python.org.
  9. "Unladen Swallow 2009Q1" . unladen-swallow، تطبيق أسرع للغة بايثون . تم الاطلاع عليه بتاريخ 19 أكتوبر 2012 .
  10. كليكنر، ريد (26 مارس 2011). "استعراض برنامج Unladen Swallow" . QINSB ليس مدونة برمجيات (qinsb.blogspot.com) .
  11. "المشكلة رقم 9410: إضافة تحسينات Unladen Swallow إلى pickle في بايثون 3. - متتبع أخطاء بايثون" . bugs.python.org . تم الاطلاع عليه بتاريخ 8 أغسطس 2019 .
  12. مارك شانون (13 أبريل 2021). "PEP 659 - المترجم التكيفي المتخصص" .
  13. بابلو جاليندو سالغادو. "ما الجديد في بايثون 3.11 § PEP 659: المفسر التكيفي المتخصص" .
  14. براندت بوخر؛ سافانا أوستروفسكي (11 أبريل 2024). "PEP 744 – تجميع JIT" . تم الاطلاع عليه في 5 فبراير 2025 .
  15. "ما الجديد في بايثون 3.13.3 والإصدار القادم 3.14 - دليل للمبتدئين" . تم الاطلاع عليه بتاريخ 25 أبريل 2025 .
  16. "PythonImplementations" . تم الاطلاع عليه بتاريخ 19 يوليو 2012 .
  17. "PEP 11 -- إزالة دعم المنصات قليلة الاستخدام" . Python.org . تم الاطلاع عليه بتاريخ 2019-08-08 .
  18. "هل ما زال نظام Irix مدعومًا؟" . 14 فبراير 2009.
  19. "الصفحة الرئيسية لـ AmigaPython" . www.monkeyhouse.eclipse.co.uk . تم الاطلاع عليه بتاريخ 20 فبراير 2025 .
  20. "I | Series | Python" . I | Series | Python . تم الاسترجاع في 20 فبراير 2025 .
  21. "PythonD 32bit Python for DOS and Windows" . www.caddit.net . تم الاطلاع عليه بتاريخ 20 فبراير 2025 .
  22. http://yellowblue.free.fr/yiki/doku.php/en:dev:python:start بايثون 2 و 3
  23. "أرشيف جوجل كود - تخزين طويل الأمد لاستضافة مشاريع جوجل كود" . code.google.com . تم الاطلاع عليه في 20 فبراير 2025 .
  24. "منفذ بايثون لنظام ويندوز سي إي" . سورس فورج . 22 يناير 2018. تم الاطلاع عليه في 20 فبراير 2025 .
  25. ^ "بايثون" . في إس آي . تم الاسترجاع بتاريخ 2021-08-31 .
  26. "دورات حياة الدعم لتوزيعات لينكس للمؤسسات" . مؤرشف من الأصل بتاريخ 30 أغسطس 2022. تم الاطلاع عليه بتاريخ 15 أكتوبر 2017 .
  27. "دورة إصدار أوبونتو" . أوبونتو . تم الاسترجاع في 18 يناير 2021 .
  28. "مع انتهاء دعم بايثون 2، يمضي نظام أوبونتو 20.04 LTS قدماً في إزالة بايثون 2 - فورونيكس" . phoronix.com . تاريخ الاسترجاع: 1 أبريل 2020 .
  29. "حزمة ثنائية "python3" في أوبونتو فوكال" . Launchpad.net .
  30. "تم تمديد دعم أوبونتو 18.04 حتى عام 2028" . ServerWatch.com. 15 نوفمبر 2018. تاريخ الاطلاع: 9 سبتمبر 2019 .
  31. 1 2 "حزمة python-defaults: أوبونتو" . شركة كانونيكال المحدودة. 2018-06-08 . تم الاسترجاع في 2018-06-08 .
  32. 1 2 "حزمة python3-defaults: أوبونتو" . شركة كانونيكال المحدودة. 2018-06-08 . تم الاسترجاع في 2018-06-08 .
  33. قسم علوم الحاسوب، جامعة كارنيجي ميلون. "أوبونتو 16.04 - نهاية الدعم في 2021 - مرافق الحوسبة - جامعة كارنيجي ميلون" . computing.cs.cmu.edu . تاريخ الاسترجاع: 15 فبراير 2021 .
  34. 1 2 "إصدار Debian 12 bookworm" . debian.org .
  35. 1 2 "ديبيان -- أخبار -- إصدار ديبيان 11 "بولز آي"" . debian.org . مؤرشف من الأصل بتاريخ 14 أغسطس 2021. تم الاطلاع عليه بتاريخ 4 يناير 2022 .
  36. "LTS - Debian Wiki" . wiki.debian.org . تم الاطلاع عليه بتاريخ 15 فبراير 2021 .
  37. "ديبيان -- تفاصيل حزمة بايثون في باستر" . packages.debian.org . تم الاطلاع عليه بتاريخ 13-09-2019 .
  38. "ديبيان -- أخبار -- إصدار ديبيان 10 "باستر"" . debian.org . مؤرشف من الأصل بتاريخ 22-10-2021 . تم الاطلاع عليه بتاريخ 09-08-2019 .
  39. "ديبيان -- أخبار -- دعم ديبيان 8 طويل الأمد يقترب من نهاية عمره الافتراضي" . debian.org . تم الاطلاع عليه بتاريخ 15 فبراير 2021 .
  40. "DistroWatch.com: Debian" . DistroWatch.com. 2017-10-15 . تم الاطلاع عليه بتاريخ 2017-10-15 .
  41. "ديبيان -- تفاصيل حزمة بايثون 3 في ستريتش" . تم الاطلاع عليه بتاريخ 19-12-2017 .
  42. "بايثون في RHEL 8" . مدونة مطوري ريد هات . 14 نوفمبر 2018. مؤرشف من الأصل في 10 مايو 2019. تم الاطلاع عليه في 10 مايو 2019 .
  43. "دورة حياة نظام التشغيل Red Hat Enterprise Linux" . بوابة عملاء Red Hat . تم الاطلاع عليه بتاريخ 1 أبريل 2020 .
  44. "DistroWatch.com: Red Hat Enterprise Linux" . DistroWatch.com. 2017-09-07 . تم الاطلاع عليه بتاريخ 2017-10-15 .
  45. "DistroWatch.com: CentOS" . DistroWatch.com. 2017-09-14 . تم الاطلاع عليه بتاريخ 2017-10-15 .
  46. "ملاحظات الإصدار | SUSE Linux Enterprise Desktop/SUSE Linux Enterprise Workstation Extension 15 GA" . suse.com . تم الاطلاع عليه بتاريخ 8 أغسطس 2019 .
  47. 1 2 "DistroWatch.com: openSUSE" . DistroWatch.com. 2017-10-14 . تم الاطلاع عليه بتاريخ 2017-10-15 .
  48. مارتيلي، أليكس (2006). بايثون باختصار ( الطبعة الثانية). أورايلي . الصفحات 5-7 . ISBN   978-0-596-10046-9.

للمزيد من القراءة

  • شو، أنتوني (2021). أساسيات لغة بايثون: دليلك إلى مترجم بايثون 3. ريال بايثون. ISBN 9781775093343.