Nagy változások:
- A túlterhelés-feloldás elkerülése érdekében gyorsítótár került a metódushívásokhoz, ami nagymértékben csökkenti a metódusfeloldás teljesítményre gyakorolt hatását, különösen akkor, ha ugyanazt a túlterhelést többször hívják meg, mint a hurokvégrehajtás során.
- Adattípustól függően 4-100-szor felgyorsul a listák, sorok és pufferek átvitele Java primitívek tömbjébe. A konverzió a memórián belüli pufferek optimalizált feldolgozását használja a Sequence API helyett. Ha Python pufferrel találkozik, csak az első elem konverzióját ellenőrzi, mivel ezek a pufferek homogének.
- Leállítási műveletek feldolgozása (JPype 1.0.0-ban implementálva, de a változásnapló elkészítésekor kihagyták). A JPype most meghívja a JVM leállítási rutint, amely megpróbálja kecsesen kilépni. Ez számos viselkedésbeli változáshoz vezet. A nem háttér szálak (proxyhívások) mostantól nyitva tarthatják a JVM-et, amíg be nem fejeződnek. A proxyhívások a hívás befejezéséig leállnak, de megszakítási üzenetet kapnak. A fájlok most megfelelően bezáródnak és lemezre kerülnek, ha a szálak a várt módon kezelik a kivételt. Erőforrás-tisztító hook-ok és véglegesítők végrehajtásra kerülnek. Amikor szálak jönnek létre, az AtExit hook hívódnak. A démonon keresztül az automatikus szálcsatolás valósul meg a Pythonból származó JVM használatakor. A hibás kód, amely nem tudja megfelelően kezelni a száltisztítást, valószínűleg lefagy a leállítás végrehajtásakor. További dokumentáció a használati útmutatóban található.
- A Throwable burkolója a várt eredmény helyett az Object burkolóját kapott, ami furcsa konverziókhoz vezetett a Python osztályokból.
- Kijavítottuk azokat az elírási hibákat az importáló rendszerben, amelyek a „»jname» not found” hibát eredményezték.
- Biztosítottuk, hogy a "^C" helyes előléptetésre került a KeyboardInterrupt alkalmazásban.
- Javítva a szimbólumokkal kapcsolatos probléma a Python 3.5.3 óta. A PySlice_Unpack egy következő javítási kiadásban (3.5.4) került bevezetésre, és nem lett volna szabad használni.
- Kijavítottunk egy hibát a numpy.linalg.inv fájlban, amely összeomláshoz vezetett. A problémát a JVM és néhány zavaros íz közötti kommunikációra vezették vissza. A javasolt megoldás a numpy.linalg.inv meghívása a JVM elindítása előtt.
Forrás: opennet.ru