Huvudändringar:
- Undantag som kastas i C++ och Java-kod ger nu en undantagsstack när ett undantag inträffar i Python-kod. För att få information om undantagsstacken behöver du alltså inte längre anropa stacktrace().
- Samtalsåtergångshastigheten har tredubblats.
- Avsevärt (i storleksordningar) ökad överföringshastighet in
numpy buffertar av flerdimensionella arrayer. Flerdimensionella primitiver skickar skrivskyddade kopior skapade inuti JVM med en sammanhängande C-layout. - Alla exponerade interna delar har ersatts med CPython-implementationer, och symbolerna __javaclass__, __javavalue__ och __javaproxy__
raderade. En dedikerad Java-slot har lagts till alla CPython-typer som ärver från jpype-klasstyper. Alla privata bord har flyttats till CPython. Java-typer måste nu ärva från JClass-metaklassen, som använder typslots. Mixins för Python-basklasser är inte tillåtna. Typerna är Object, Proxy, Exception, Number och Array och ärver direkt från CPythons interna implementeringar. - Förbättrad spårning och undantagshantering.
- Arrayskivor bearbetas nu som vyer som stöder skrivning tillbaka till originalet, till exempel en numpy array. För array slicing tillhandahålls stöd för att ställa in och hämta värden i steg (slice(start, stop, step)).
- Arrayer stöder nu "__reversed__".
- Java-arrayer stöder nu memoryview API och tar bort beroendet av numpy för att skicka buffertinnehållet.
- Numpy är inte längre ett beroende (extra) och minnesöverföring till numpy är tillgänglig utan kompilering med numpy-stöd.
- JInterface är designad som en metaklass. Använd isinstance(cls, JInterface) för att söka efter gränssnitt.
- Lade till saknade TLD:er "mil", "net" och "edu" till standardimporter.
- Förbättrade felmeddelanden för UnsupportedClassVersion under uppstart.
- java.util.Map kastar nu ett KeyError om elementet inte hittas. Värden som är null returnerar fortfarande Inga som förväntat. Använd get() om du vill behandla tomma nycklar som Inga.
- Tog bort java.util.Collection eftersom det konstigt nog överbelastas mellan remove(Object) och remove(int) på Lists. Använd metoden Java remove() för att komma åt inbyggt Java-beteende, men typcasting rekommenderas starkt för överbelastningskontroll.
- java.lang.IndexOutOfBoundsException kan nu fångas med hjälp av undantagsklassen IndexError vid åtkomst till java.util.List-element.
Källa: opennet.ru