إصدار لغة برمجة Python 3.8

بعد عام ونصف من التطوير المقدمة إطلاق لغة البرمجة الرئيسية بيثون 3.8. التحديثات التصحيحية لفرع بايثون 3.8 مخطط الافراج في غضون 18 شهرا. سيتم إصلاح الثغرات الأمنية الحرجة لمدة 5 سنوات حتى أكتوبر 2024. سيتم إصدار التحديثات التصحيحية للفرع 3.8 كل شهرين، ومن المقرر إصدار الإصدار التصحيحي الأول من Python 3.8.1 في ديسمبر.

من بين المضافة الابتكارات:

  • Поддержка عمليات الإسناد ضمن التعبيرات المعقدة. باستخدام عامل التشغيل ":=" الجديد، من الممكن تنفيذ عمليات تعيين القيمة داخل تعبيرات أخرى، على سبيل المثال، لتجنب استدعاءات الوظائف المزدوجة في العبارات الشرطية وعند تعريف الحلقات:

    إذا (ن := لين(أ)) > 10:
    ...

    بينما (كتلة := f.read(256)) != ":
    ...

  • Поддержка بناء جملة جديد لتحديد وسائط الوظيفة. عند تعداد الوسائط أثناء تعريف الدالة، يمكنك الآن تحديد "/" لفصل الوسائط التي لا يمكن تعيين قيم لها إلا بناءً على الترتيب الذي يتم به تعداد القيم أثناء استدعاء الوظيفة، من الوسائط التي يمكن تعيينها بأي ترتيب (متغير = بناء جملة القيمة) ). على الجانب العملي، تسمح الميزة الجديدة للوظائف في Python بمحاكاة سلوك الوظائف الموجودة في لغة C بشكل كامل، وأيضًا لتجنب الارتباط بأسماء محددة، على سبيل المثال، إذا كان من المقرر تغيير اسم المعلمة في المستقبل.

    تكمل العلامة "/" العلامة "*" المضافة مسبقًا، وتفصل بين المتغيرات التي لا ينطبق عليها سوى تخصيص في النموذج "متغير=قيمة". على سبيل المثال، في الدالة "def f(a, b, /, c, d, *, e, f):" لا يمكن تعيين المتغيرات "a" و "b" إلا بالترتيب الذي تم إدراج القيم به ,
    المتغيران "e" و"f" فقط من خلال تعيين "المتغير = القيمة" والمتغيران "c" و"d" بأي من الطرق التالية:

    و(10، 20، 30، 40، ه=50، و=60)
    و(10، 20، ق=30، د=40، ه=50، و=60)

  • وأضاف واجهة برمجة تطبيقات C الجديدة
    لتكوين معلمات تهيئة Python، مما يسمح بالتحكم الكامل في الكل إعدادات وتوفير مرافق متقدمة لمعالجة الأخطاء. تسهل واجهة برمجة التطبيقات (API) المقترحة تضمين وظيفة مترجم Python في تطبيقات C الأخرى؛

  • مُنفّذ بروتوكول Vectorcall الجديد للوصول بشكل أسرع إلى الكائنات المكتوبة بلغة C. في CPython 3.8، لا يزال الوصول إلى Vectorcall يقتصر على الاستخدام الداخلي، ومن المخطط النقل إلى فئة واجهات برمجة التطبيقات التي يمكن الوصول إليها بشكل عام في CPython 3.9؛
  • مضاف استدعاءات Runtime Audit Hooks، التي توفر للتطبيقات والأطر في Python إمكانية الوصول إلى معلومات منخفضة المستوى حول تقدم البرنامج النصي لتدقيق الإجراءات التي تم تنفيذها (على سبيل المثال، يمكنك تتبع استيراد الوحدات، وفتح الملفات، باستخدام التتبع، الوصول إلى مآخذ الشبكة، وتشغيل التعليمات البرمجية من خلال exec، وeval، وrun_mod)؛
  • في الوحدة ورطة مؤمن دعم بروتوكول Pickle 5 المستخدم لإجراء تسلسل وإلغاء تسلسل الكائنات. يتيح لك Pickle تحسين نقل كميات كبيرة من البيانات بين عمليات Python في تكوينات متعددة النواة ومتعددة العقد عن طريق تقليل عدد عمليات نسخ الذاكرة وتطبيق تقنيات تحسين إضافية مثل استخدام خوارزميات الضغط الخاصة بالبيانات. يتميز الإصدار الخامس من البروتوكول بإضافة وضع الإرسال خارج النطاق، حيث يمكن نقل البيانات بشكل منفصل عن تيار المخلل الرئيسي.
  • افتراضيًا، يتم تنشيط الإصدار الرابع من بروتوكول Pickle، والذي، مقارنةً بالإصدار الثالث الذي تم تقديمه مسبقًا افتراضيًا، يسمح بأداء أعلى وتقليل حجم البيانات المرسلة؛
  • في الوحدة كتابة تم تقديم العديد من الميزات الجديدة:
    • فئة TypedDict للمصفوفات الترابطية التي يتم فيها تحديد معلومات النوع بشكل صريح للبيانات المرتبطة بالمفاتيح ("TypedDict('Point2D', x=int, y=int, label=str)").
    • نوع حرفي، والذي يسمح لك بقصر المعلمة أو القيمة المرجعة على عدد قليل من القيم المحددة مسبقًا ("حرفي ['متصل'، 'منقطع الاتصال']").
    • تصميم "نهائي"، مما يجعل من الممكن تحديد قيم المتغيرات والوظائف والأساليب والفئات التي لا يمكن تغييرها أو إعادة تعيينها ("pi: Final[float] = 3.1415926536").
  • تمت إضافة القدرة على تعيين ذاكرة تخزين مؤقت للملفات المجمعة باستخدام الكود الثانوي، وحفظها في شجرة FS منفصلة وفصلها عن الدلائل باستخدام الكود. يتم تعيين مسار حفظ الملفات باستخدام الكود الثانوي عبر متغير PYTHONPYCACHEPREFIX أو الخيار "-X pycache_prefix"؛
  • مُنفّذ القدرة على إنشاء إصدارات تصحيح الأخطاء لـ Python التي تستخدم واجهة برمجة تطبيقات (ABI) مماثلة للإصدار، مما يسمح لك بتحميل الامتدادات المكتوبة بلغة SI، والتي تم تجميعها للإصدارات المستقرة، في إصدارات تصحيح الأخطاء؛
  • توفر السلاسل f (الأحرف المنسقة المسبوقة بـ 'f') دعمًا لعامل التشغيل = (على سبيل المثال، "f'{expr=}'")، والذي يسمح لك بتحويل تعبير إلى نص لتسهيل تصحيح الأخطاء. على سبيل المثال:

    ››› المستخدم = 'eric_idle'
    ››› member_since = date(1975, 7, 31)
    ››› و'{مستخدم=} {عضو_منذ=}'
    "user='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • تعبير "استمر» يسمح باستخدامها داخل الكتلة أخيرا;
  • تمت إضافة وحدة جديدة multiprocessing.shared_memory، مما يسمح باستخدام أجزاء الذاكرة المشتركة في تكوينات متعددة العمليات؛
  • على نظام التشغيل Windows، تم نقل تطبيق asyncio لاستخدام الفئة ProactorEventLoop;
  • تمت زيادة أداء تعليمة LOAD_GLOBAL بنسبة 40% تقريبًا بسبب استخدام آلية جديدة للتخزين المؤقت لرمز الكائن.

المصدر: opennet.ru

إضافة تعليق