Principali modifiche:
- Le eccezioni generate nel codice C++ e Java ora forniscono uno stack di eccezioni quando si verifica un'eccezione nel codice Python. Pertanto, per ottenere informazioni sullo stack delle eccezioni, non è più necessario chiamare stacktrace().
- La velocità di risposta alla chiamata è stata triplicata.
- Significativamente (per ordini di grandezza) aumento della velocità di trasmissione
buffer numpy di array multidimensionali. Le primitive multidimensionali trasmettono copie di sola lettura create all'interno della JVM con un layout C contiguo. - Tutti gli interni esposti sono stati sostituiti con implementazioni CPython e i simboli __javaclass__, __javavalue__ e __javaproxy__
cancellato. Uno slot Java dedicato è stato aggiunto a tutti i tipi CPython che ereditano dai tipi di classe jpype. Tutte le tabelle private sono state spostate su CPython. I tipi Java devono ora ereditare dalla metaclasse JClass, che utilizza gli slot di tipo. I mixin per le classi base Python non sono consentiti. I tipi sono Object, Proxy, Exception, Number e Array ed ereditano direttamente dalle implementazioni interne di CPython. - Tracciamento e gestione delle eccezioni migliorati.
- Le sezioni dell'array vengono ora elaborate come visualizzazioni che supportano la riscrittura dell'originale, ad esempio un array Numpy. Per l'affettamento dell'array, viene fornito il supporto per l'impostazione e il recupero dei valori in passaggi (slice(start, stop, step)).
- Gli array ora supportano "__reversed__".
- Gli array Java ora supportano l'API memoryview e rimuovono la dipendenza da numpy per passare il contenuto del buffer.
- Numpy non è più una dipendenza (extra) e il trasferimento di memoria a Numpy è disponibile senza compilare con il supporto Numpy.
- JInterface è progettata come una meta classe. Utilizzare isinstance(cls, JInterface) per verificare la presenza di interfacce.
- Aggiunti i TLD mancanti "mil", "net" e "edu" alle importazioni predefinite.
- Messaggi di errore migliorati per UnsupportedClassVersion durante l'avvio.
- java.util.Map ora lancia un KeyError se l'elemento non viene trovato. I valori nulli restituiscono comunque None come previsto. Usa get() se vuoi trattare le chiavi vuote come None.
- Rimosso java.util.Collection poiché stranamente sovraccarica tra rimozione (Oggetto) e rimozione (int) negli elenchi. Utilizzare il metodo Java Remove() per accedere al comportamento Java nativo, ma il cast del tipo è fortemente consigliato per il controllo dell'overload.
- java.lang.IndexOutOfBoundsException ora può essere rilevato utilizzando la classe di eccezione IndexError quando si accede agli elementi java.util.List.
Fonte: opennet.ru