Əsas dəyişikliklər:
- C++ və Java kodunda atılan istisnalar indi Python kodunda istisna baş verdikdə istisna yığını təmin edir. Beləliklə, istisna yığını haqqında məlumat əldə etmək üçün artıq stacktrace() funksiyasına zəng etmək lazım deyil.
- Zəngin qaytarılması sürəti üç dəfə artırılıb.
- Əhəmiyyətli dərəcədə (böyüklük əmrləri ilə) ötürmə sürətini artırdı
çoxölçülü massivlərin saysız tamponları. Çoxölçülü primitivlər, bitişik C layoutu ilə JVM daxilində yaradılmış yalnız oxumaq üçün nəzərdə tutulmuş nüsxələri keçir. - Bütün açıqlanmış daxili elementlər CPython tətbiqləri və __javaclass__, __javavalue__ və __javaproxy__ simvolları ilə əvəz edilmişdir.
silindi. jpype sinif növlərindən miras qalan bütün CPython növlərinə xüsusi Java yuvası əlavə edilmişdir. Bütün şəxsi cədvəllər CPython-a köçürüldü. Java növləri indi tip yuvalarından istifadə edən JClass metaclassdan miras almalıdır. Python əsas sinifləri üçün miksinlərə icazə verilmir. Növlər Obyekt, Proksi, İstisna, Nömrə və Massivdir və birbaşa CPython-un daxili tətbiqlərindən miras qalır. - Təkmilləşdirilmiş izləmə və istisnaların idarə edilməsi.
- Massiv dilimləri indi numpy massiv kimi orijinala geri yazmağı dəstəkləyən görünüşlər kimi işlənir. Massivin dilimlənməsi üçün dəyərləri addımlarla təyin etmək və əldə etmək üçün dəstək verilir (dilim (başla, dayandır, addım)).
- Massivlər indi "__reversed__"-ı dəstəkləyir.
- Java massivləri indi yaddaşa baxış API-ni dəstəkləyir və bufer məzmununu ötürmək üçün numpy-dən asılılığı aradan qaldırır.
- Numpy artıq asılılıq deyil (əlavə) və yaddaşın numpy dəstəyi ilə tərtib edilmədən numpy-ə ötürülməsi mümkündür.
- JInterface meta sinfi kimi hazırlanmışdır. İnterfeysləri yoxlamaq üçün isinstance (cls, JInterface) istifadə edin.
- Defolt idxallara çatışmayan TLD "mil", "net" və "edu" əlavə edildi.
- Başlanğıc zamanı UnsupportedClassVersion üçün təkmilləşdirilmiş xəta mesajları.
- java.util.Map indi element tapılmadıqda KeyError atır. Sıfır olan dəyərlər hələ də gözlənildiyi kimi heç birini qaytarmır. Boş düymələri Yox kimi qəbul etmək istəyirsinizsə get() funksiyasından istifadə edin.
- Siyahılardakı remove(Object) və remove(int) arasında qəribə həddən artıq yükləndiyi üçün java.util.Collection silindi. Doğma Java davranışına daxil olmaq üçün Java remove() metodundan istifadə edin, lakin həddən artıq yüklənməyə nəzarət üçün tipin ötürülməsi tövsiyə olunur.
- java.lang.IndexOutOfBoundsException indi java.util.List elementlərinə daxil olarkən IndexError istisna sinifindən istifadə etməklə tutula bilər.
Mənbə: opennet.ru