Grandes mudanças:
- As exceções lançadas no código C++ e Java agora fornecem uma pilha de exceções quando ocorre uma exceção no código Python. Assim, para obter informações sobre a pilha de exceções, não é mais necessário chamar stacktrace().
- A velocidade de retorno da chamada foi triplicada.
- Aumento significativo (em ordens de grandeza) da velocidade de transmissão em
buffers numpy de matrizes multidimensionais. As primitivas multidimensionais passam cópias somente leitura criadas dentro da JVM com um layout C contíguo. - Todos os componentes internos expostos foram substituídos por implementações CPython e os símbolos __javaclass__, __javavalue__ e __javaproxy__
excluído. Um slot Java dedicado foi adicionado a todos os tipos CPython que herdam dos tipos de classe jpype. Todas as tabelas privadas foram movidas para CPython. Os tipos Java agora devem herdar da metaclasse JClass, que usa slots de tipo. Mixins para classes base do Python não são permitidos. Os tipos são Object, Proxy, Exception, Number e Array e herdam diretamente das implementações internas do CPython. - Rastreamento e tratamento de exceções aprimorados.
- As fatias da matriz agora são processadas como visualizações que suportam a gravação no original, como uma matriz numpy. Para fatiamento de array, é fornecido suporte para configuração e recuperação de valores em etapas (slice(start, stop, step)).
- Matrizes agora suportam "__reversed__".
- Matrizes Java agora suportam a API memoryview e removem a dependência de numpy para passar o conteúdo do buffer.
- Numpy não é mais uma dependência (extra) e a transferência de memória para numpy está disponível sem compilação com suporte numpy.
- JInterface foi projetado como uma metaclasse. Use isinstance(cls, JInterface) para verificar interfaces.
- Adicionados TLDs ausentes "mil", "net" e "edu" às importações padrão.
- Mensagens de erro aprimoradas para UnsupportedClassVersion durante a inicialização.
- java.util.Map agora lança um KeyError se o elemento não for encontrado. Valores nulos ainda retornam None conforme o esperado. Use get() se quiser tratar chaves vazias como None.
- Removido java.util.Collection, pois sobrecarrega estranhamente entre remove(Object) e remove(int) em listas. Use o método Java remove() para acessar o comportamento nativo do Java, mas a conversão de tipo é altamente recomendada para controle de sobrecarga.
- java.lang.IndexOutOfBoundsException agora pode ser capturado usando a classe de exceção IndexError ao acessar elementos java.util.List.
Fonte: opennet.ru