التغييرات الرئيسية:
- تمت إضافة ذاكرة تخزين مؤقت إلى استدعاءات الطريقة لتجنب تحليل التحميل الزائد، مما يقلل بشكل كبير من تأثير أداء تحليل الطريقة، خاصة إذا تم استدعاء نفس التحميل الزائد عدة مرات، كما هو الحال أثناء تنفيذ الحلقة.
- من 4 إلى 100 مرة، اعتمادًا على نوع البيانات، يتم تسريع نقل القوائم والصفوف والمخازن المؤقتة إلى صفائف Java الأولية. يستخدم التحويل معالجة محسنة للمخازن المؤقتة في الذاكرة، بدلاً من Sequence API. عند مواجهة مخزن مؤقت لـ Python، يتم فحص العنصر الأول فقط للتحويل، نظرًا لأن هذه المخازن المؤقتة متجانسة.
- معالجة عمليات إيقاف التشغيل (تم تنفيذها في JPype 1.0.0، ولكن تم تخطيها عند إعداد سجل التغيير). يقوم JPype الآن باستدعاء روتين إيقاف تشغيل JVM، الذي يحاول الخروج بأمان. وهذا يؤدي إلى عدة تغييرات في السلوك. يمكن الآن للسلاسل غير الخلفية (استدعاءات الوكيل) أن تبقي JVM مفتوحًا حتى تنتهي. ستقوم مكالمات الوكيل بمعالجة إيقاف التشغيل حتى اكتمال المكالمة، ولكنها ستتلقى رسالة إحباط. يتم الآن إغلاق الملفات بشكل صحيح وتدفقها إلى القرص إذا تعاملت مؤشرات الترابط مع الاستثناء كما هو متوقع. يتم تنفيذ خطافات تنظيف الموارد وأدوات الإنهاء. عندما يتم إنشاء سلاسل الرسائل، يتم استدعاء خطافات AtExit. من خلال البرنامج الخفي، يتم تنفيذ مرفق الخيط التلقائي عند استخدام JVM من Python. من المحتمل أن يتعطل رمز الأخطاء الذي لا يمكنه التعامل مع تنظيف مؤشر الترابط بشكل صحيح عند تنفيذ إيقاف التشغيل. يمكن العثور على وثائق إضافية في دليل المستخدم.
- تلقى غلاف Throwable غلافًا لـ Object بدلاً من النتيجة المتوقعة، مما أدى إلى تحويلات غريبة من فئات Python.
- تم إصلاح الأخطاء المطبعية في نظام الاستيراد والتي أدت إلى الخطأ ""jname" غير موجود".
- تم التأكد من ترقية "^C" بشكل صحيح في KeyboardInterrupt.
- تم إصلاح مشكلة الرموز منذ إصدار Python 3.5.3. تم تقديم PySlice_Unpack في إصدار تصحيح لاحق (3.5.4) ولا ينبغي استخدامه.
- تم إصلاح الخلل في numpy.linalg.inv الذي أدى إلى حدوث عطل. تم إرجاع المشكلة إلى سلسلة الاتصال بين JVM وبعض النكهات غير المرغوب فيها. الحل المقترح هو الاتصال بـ numpy.linalg.inv قبل بدء تشغيل JVM.
المصدر: opennet.ru