Основні зміни:
- Винятки, викинуті в C++ і Java коді, тепер надають стек винятків у разі виключення у коді на Python. Таким чином, щоб отримати інформацію про стек винятків відтепер не потрібно більше викликати stacktrace().
- Втричі збільшено швидкість повернення при викликах.
- Істотно (на порядки) збільшено швидкість передачі в
numpy буферів багатовимірних масивів. Багатомірні примітиви передають доступні лише для читання копії, створені всередині JVM з безперервною розкладкою C. - Усі внутрішні компоненти замінені на реалізації з CPython, а символи __javaclass__, __javavalue__ і __javaproxy__
видалено. До всіх типів CPython, успадкованих від типів класу jpype, доданий виділений Java-слот. Всі приватні таблиці перенесені до CPython. Java-типи тепер повинні успадковуватись від метакласу JClass, який використовує слоти типів. Домішки для базових класів Python не допускаються. Типи Object, Proxy, Exception, Number та Array і успадковуються безпосередньо від внутрішніх реалізацій CPython. - Поліпшено трасування та обробка винятків.
- Зрізи масивів (Array slices) тепер обробляються у вигляді уявлень, що підтримують зворотний запис оригіналу, такий як масив numpy. Для зрізів масивів забезпечено підтримку встановлення та отримання значення з кроком (slice(start, stop, step)).
- У масивах реалізовано підтримку «__reversed__».
- У Java-масивах забезпечена підтримка API memoryview і прибрана залежність від numpy передачі вмісту буфера.
- Numpy тепер не є залежністю (extra) і передача пам'яті numpy доступна без компіляції з підтримкою numpy.
- JInterface оформлений у вигляді мета-класу. Використовуйте isinstance(cls, JInterface), щоб перевірити інтерфейси.
- У імпорті за умовчанням додані пропущені TLD "mil", "net" та "edu".
- Під час запуску покращено повідомлення про помилки для UnsupportedClassVersion.
- java.util.Map видає KeyError, якщо елемент не знайдено. Значення, які null, як і раніше, повертають None як і очікується. Використовуйте get(), якщо порожні ключі потрібно обробляти як None.
- Видалено java.util.Collection, оскільки він дивно перевантажується між remove(Object) і remove(int) на List-ах. Використовуйте Java-метод remove() для доступу до оригінальної Java-поведінці, але приведення типу суворо рекомендується для керування навантаженням.
- java.lang.IndexOutOfBoundsException тепер може бути спійманий за допомогою класу для виключень IndexError при доступі до елементів java.util.List.
Джерело: opennet.ru