Les principaux changements:
- Les exceptions levées dans le code C++ et Java fournissent désormais une pile d'exceptions lorsqu'une exception se produit dans le code Python. Ainsi, pour obtenir des informations sur la pile d'exceptions, vous n'avez plus besoin d'appeler stacktrace().
- La vitesse de retour d’appel a été triplée.
- Augmentation significative (par ordres de grandeur) de la vitesse de transmission dans
tampons numpy de tableaux multidimensionnels. Les primitives multidimensionnelles transmettent les copies en lecture seule créées dans la JVM avec une disposition C contiguë. - Tous les composants internes exposés ont été remplacés par des implémentations CPython et les symboles __javaclass__, __javavalue__ et __javaproxy__
supprimé. Un emplacement Java dédié a été ajouté à tous les types CPython qui héritent des types de classe jpype. Toutes les tables privées ont été déplacées vers CPython. Les types Java doivent désormais hériter de la métaclasse JClass, qui utilise les emplacements de types. Les mixins pour les classes de base Python ne sont pas autorisés. Les types sont Object, Proxy, Exception, Number et Array et héritent directement des implémentations internes de CPython. - Suivi amélioré et gestion des exceptions.
- Les tranches de tableau sont désormais traitées comme des vues prenant en charge la réécriture vers l'original, comme un tableau numpy. Pour le découpage de tableau, une prise en charge est fournie pour définir et récupérer les valeurs par étapes (slice(start, stop, step)).
- Les tableaux prennent désormais en charge "__reversed__".
- Les tableaux Java prennent désormais en charge l'API memoryview et suppriment la dépendance à numpy pour transmettre le contenu du tampon.
- Numpy n'est plus une dépendance (extra) et le transfert de mémoire vers numpy est disponible sans compilation avec le support numpy.
- JInterface est conçu comme une méta-classe. Utilisez isinstance(cls, JInterface) pour vérifier les interfaces.
- Ajout des TLD manquants « mil », « net » et « edu » aux importations par défaut.
- Messages d'erreur améliorés pour UnsupportedClassVersion lors du démarrage.
- java.util.Map renvoie désormais une KeyError si l'élément n'est pas trouvé. Les valeurs nulles renvoient toujours None comme prévu. Utilisez get() si vous souhaitez traiter les clés vides comme Aucune.
- Suppression de java.util.Collection car il surcharge étrangement entre Remove(Object) et Remove(int) sur les listes. Utilisez la méthode Java Remove() pour accéder au comportement Java natif, mais la conversion de type est fortement recommandée pour le contrôle des surcharges.
- java.lang.IndexOutOfBoundsException peut désormais être intercepté à l'aide de la classe d'exception IndexError lors de l'accès aux éléments java.util.List.
Source: opennet.ru