Vigtigste ændringer:
- Undtagelser kastet i C++ og Java-kode giver nu en undtagelsesstak, når der opstår en undtagelse i Python-kode. For at få information om undtagelsesstakken behøver du således ikke længere kalde stacktrace().
- Opkaldsreturhastigheden er blevet tredoblet.
- Betydeligt (i størrelsesordener) øget transmissionshastighed i
numpy buffere af flerdimensionelle arrays. Multidimensionelle primitiver videregiver skrivebeskyttede kopier oprettet inde i JVM med et sammenhængende C-layout. - Alle synlige interne elementer er blevet erstattet med CPython-implementeringer, og symbolerne __javaclass__, __javavalue__ og __javaproxy__
slettet. En dedikeret Java-slot er blevet tilføjet til alle CPython-typer, der arver fra jpype-klassetyper. Alle private borde er blevet flyttet til CPython. Java-typer skal nu arve fra JClass metaclass, som bruger type slots. Mixins til Python-basisklasser er ikke tilladt. Typerne er Object, Proxy, Exception, Number og Array og arver direkte fra CPythons interne implementeringer. - Forbedret sporing og undtagelseshåndtering.
- Array-udsnit behandles nu som visninger, der understøtter skrivning tilbage til originalen, såsom en numpy-array. Til array-slicing ydes der støtte til at indstille og hente værdier i trin (slice(start, stop, step)).
- Arrays understøtter nu "__reversed__".
- Java-arrays understøtter nu memoryview API og fjerner afhængigheden af numpy for at videregive bufferindholdet.
- Numpy er ikke længere en afhængighed (ekstra), og hukommelsesoverførsel til numpy er tilgængelig uden kompilering med numpy-understøttelse.
- JInterface er designet som en metaklasse. Brug isinstance(cls, JInterface) til at tjekke for grænseflader.
- Tilføjede manglende TLD'er "mil", "net" og "edu" til standardimporter.
- Forbedrede fejlmeddelelser for UnsupportedClassVersion under opstart.
- java.util.Map kaster nu en KeyError, hvis elementet ikke findes. Værdier, der er null, returnerer stadig Ingen som forventet. Brug get() hvis du vil behandle tomme nøgler som Ingen.
- Fjernet java.util.Collection, da det mærkeligt nok overbelaster mellem remove(Object) og remove(int) på Lists. Brug Java remove()-metoden til at få adgang til indbygget Java-adfærd, men typecasting anbefales kraftigt til overbelastningskontrol.
- java.lang.IndexOutOfBoundsException kan nu fanges ved hjælp af IndexError-undtagelsesklassen ved adgang til java.util.List-elementer.
Kilde: opennet.ru