lëshimi i ri i shtresës , që mundëson një qasje të plotë të aplikacioneve Python në libraritë e klasave në gjuhën Java. Me ndihmën e JPype, nga Python mund të përdoren libraritë specifike për Java, duke krijuar aplikacione hibride që kombinojnë kodin në Java dhe Python. Ndryshe nga Jython, integrimi me Java arrihet jo përmes krijimit të një varianti Python për JVM, por përmes ndërveprimit në nivelin e të dyja makinave virtuale, duke përdorur memorie të përbashkët. Qasja e propozuar nuk vetëm që ofron një performancë të mirë, por gjithashtu siguron qasje në të gjitha libraritë CPython dhe Java. Kodi i projektit nën licencën Apache 2.0.
Ndryshimet kryesore:
- Në thirrjet e metodave është shtuar një caches, që lejon shmangien e zgjidhjeve të mbingarkesave, duke reduktuar ndjeshëm ndikimin në performancë të zgjidhjes së metodave, veçanërisht kur e njëjta mbingarkesë thirret shumë herë, si gjatë ekzekutimit të cikleve.
- Shpejtësia e transferit të listave, tupleve dhe bufereve në masat primitive Java është përshpejtuar nga 4 deri në 100 herë, në varësi të llojit të të dhënave. Konvertimi përdor përpunim të optimizuar të bufereve në memorie, në vend të API-së Sequence. Kur takon një buffer Python, vetëm elementi i parë kontrollohet për konvertim, pasi të dhënat në bufer janë homogjene.
- Trajtimi i operacioneve të shutdown (implementuar që në JPype 1.0.0, por i haruar gjatë përgatitjes së listës së ndryshimeve). JPype tani thërret procedurën e shutdown të JVM, e cila përpiqet të ekzekutojë daljen në mënyrë "gracefully". Kjo çon në disa ndryshime në sjellje. Thirrjet e prapambetur (proxy call) tani mund të mbajnë JVM të hapur deri sa të përfundojnë. Thirrjet Proxy do të menaxhojnë shutdown deri sa thirrja të përfundojë, por do të marrin një mesazh ndërprerjeje. Skedarët tani mbyllen siç duhet dhe shkarkojnë të dhënat në disk (flush), nëse thithësit menaxhojnë përjashtimin në mënyrën e duhur. Kryhen hapat e pastrimit të burimeve dhe finalizuesit. Kur krijohen thirrje, thirren hapat AtExit. Kjo realizohet automatikisht për anëtarët e thirrjeve në përdorimin e JVM nga Python. Kodi i gabuar që nuk mund të menaxhojë saktësisht pastrimin e thirrjeve, mund të varë gjatë ekzekutimit të shutdown. Dokumentacioni shtesë ndodhet në manualin e përdorimit.
- Lidhja për Throwable merr një lidhje për Object në vend të rezultatit të pritur, duke çuar në transformime të çuditshme nga klasat Python.
- Korrigjohen gabimet e shtypjes në sistemin e importit, që çojnë në daljen e gabimit '»jname» not found'.
- Siguruar përparimin e saktë të 'C^' në KeyboardInterrupt.
- Zgjidhur problemi me simbolet nga Python 3.5.3. PySlice_Unpack është futur në lëshimin e ardhshëm të patch-it (3.5.4) dhe nuk duhet të përdoret.
- NjĂ« gabim me numpy.linalg.inv, qĂ« çonte nĂ« krisje, Ă«shtĂ« analizuar. Problemi u ndoq deri te ndĂ«rveprimi i eksponentĂ«ve midis JVM dhe disa varianteve tĂ« numpy. Zgjidhja e propozuar â thirrja e numpy.linalg.inv para se tĂ« startohet JVM.
Burimi: opennet.ru
