Principais cambios:
- Engadiuse unha caché ás chamadas de métodos para evitar a resolución de sobrecarga, reducindo moito o impacto no rendemento da resolución de métodos, especialmente se a mesma sobrecarga se chama moitas veces, como nos bucles.
- De 4 a 100 veces, dependendo do tipo de datos, a transferencia de listas, tuplas e búfers a matrices de primitivas Java é acelerada. A transformación utiliza un manexo optimizado do búfer na memoria en lugar da API Sequence. Cando se atopa un búfer de Python, só se verifica a conversión do primeiro elemento, xa que estes búfers son homoxéneos.
- Xestionar operacións de apagado (implementado en JPype 1.0.0, pero omitido ao preparar o rexistro de cambios). JPype agora chama ao procedemento de apagado da JVM, que tenta saír con gracia. Isto dá lugar a varios cambios de comportamento. Os fíos que non sexan de segundo plano (chamadas de proxy) agora poden manter a JVM aberta ata que finalicen. As chamadas de proxy procesarán o peche ata que se complete, pero recibirán unha mensaxe de aborto. Os ficheiros agora pechanse correctamente e líganse ao disco se os fíos xestionan a excepción correctamente. Exécutanse os ganchos de limpeza de recursos e os finalizadores. Cando se xeran fíos, chámanse os ganchos AtExit. A través do daemon, a conexión automática de fíos implícase cando se usa a JVM de Python. É probable que o código erróneo que non poida xestionar correctamente a limpeza dos fíos se bloquee ao apagar. A documentación adicional está no manual de usuario.
- O envoltorio de Throwable estaba recibindo un envoltorio para Object en lugar do resultado esperado, o que levaba a estrañas conversións das clases de Python.
- Corrixíronse erros tipográficos no sistema de importación que orixinaban un erro "non se atopaba jname".
- Asegurouse a correcta promoción de "^C" en KeyboardInterrupt.
- Solucionouse un problema de carácter con Python 3.5.3. PySlice_Unpack foi introducido nunha versión de parche posterior (3.5.4) e non debería terse usado.
- Corrixiuse un fallo con numpy.linalg.inv. O problema remontouse á interacción de fío entre a JVM e algunhas variantes de numpy. A solución suxerida é chamar a numpy.linalg.inv antes de iniciar a JVM.
Fonte: opennet.ru