Grote veranderingen:
- Uitzonderingen die in C++- en Java-code worden gegenereerd, bieden nu een uitzonderingsstapel wanneer er een uitzondering optreedt in Python-code. Om informatie over de uitzonderingsstapel te verkrijgen, hoeft u dus niet langer stacktrace() aan te roepen.
- De terugbelsnelheid is verdrievoudigd.
- Aanzienlijk (in ordes van grootte) verhoogde transmissiesnelheid in
numpy buffers van multidimensionale arrays. Multidimensionale primitieven geven alleen-lezen kopieën door die in de JVM zijn gemaakt met een aaneengesloten C-indeling. - Alle blootgestelde internals zijn vervangen door CPython-implementaties en de symbolen __javaclass__, __javavalue__ en __javaproxy__
verwijderd. Er is een speciaal Java-slot toegevoegd aan alle CPython-typen die overerven van jpype-klassetypen. Alle privétafels zijn verplaatst naar CPython. Java-typen moeten nu overerven van de JClass-metaklasse, die typeslots gebruikt. Mixins voor Python-basisklassen zijn niet toegestaan. De typen zijn Object, Proxy, Exception, Number en Array en nemen rechtstreeks over van de interne implementaties van CPython. - Verbeterde tracering en afhandeling van uitzonderingen.
- Array-plakken worden nu verwerkt als weergaven die het terugschrijven naar het origineel ondersteunen, zoals een numpy-array. Voor array slicing wordt ondersteuning geboden voor het stapsgewijs instellen en ophalen van waarden (slice(start, stop, step)).
- Arrays ondersteunen nu "__reversed__".
- Java-arrays ondersteunen nu de memoryview API en verwijderen de afhankelijkheid van numpy om de bufferinhoud door te geven.
- Numpy is niet langer een afhankelijkheid (extra) en geheugenoverdracht naar numpy is beschikbaar zonder compileren met numpy-ondersteuning.
- JInterface is ontworpen als een metaklasse. Gebruik isinstance(cls, JInterface) om te controleren op interfaces.
- Ontbrekende TLD's "mil", "net" en "edu" toegevoegd aan standaardimporten.
- Verbeterde foutmeldingen voor UnsupportedClassVersion tijdens het opstarten.
- java.util.Map genereert nu een KeyError als het element niet wordt gevonden. Waarden die null zijn, retourneren nog steeds Geen zoals verwacht. Gebruik get() als u lege sleutels als Geen wilt behandelen.
- Java.util.Collection verwijderd omdat het vreemd genoeg overbelast raakt tussen remove(Object) en remove(int) in lijsten. Gebruik de Java remove()-methode om toegang te krijgen tot native Java-gedrag, maar typecasting wordt sterk aanbevolen voor overbelastingsbeheersing.
- java.lang.IndexOutOfBoundsException kan nu worden opgevangen met behulp van de uitzonderingsklasse IndexError bij toegang tot java.util.List-elementen.
Bron: opennet.ru