lëshimi i ri i shtresës , e cila mundëson qasje të plotë të aplikacioneve Python në bibliotekat e klasave në gjuhën Java. Me ndihmën e JPype, nga Python mund të përdoren biblioteka specifike për Java, duke krijuar aplikacione hibride që kombinojnë kodin në Java dhe Python. Ndryshe nga Jython, integimi me Java arrihet jo përmes krijimit të një varianti Python për JVM, por përmes ndërveprimit në nivelin e të dyja makinerive virtuale, duke përdorur memorie të ndarë. Qasja e propozuar lejon jo vetëm arritjen e performancës së lartë, por gjithashtu ofron qasje në të gjitha bibliotekat CPython dhe Java. Kodi i projektit nën licencën Apache 2.0.
Ndryshimet kryesore:
- Shtuar një cache në thirrjet e metodave për të shmangur zgjidhjen e ngarkesave, e cila ndjeshëm redukton ndikimin në performancë të zgjidhjes së metodave, veçanërisht nëse e njëjta ngarkesë thirret shumë herë, si në ciklet në ekzekutim.
- Transferta e listave, tupleve dhe bufeve në sisteme 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ë së Sequences. Kur haset një buffer Python, kontrollohet vetëm elementi i parë për transformim, pasi të dhënat janë homogjene.
- Trajtimi i operacioneve të shutdown (implementuar që në JPype 1.0.0, por nuk ishte përfshirë në listën e ndryshimeve). JPype tani thirret procedurën e shutdown-it të JVM, e cila përpiqet të ekzekutojë daljen në mënyrë të 'graceful'. Kjo sjell disa ndryshime në sjellje. Theshtë e rëndësishme që thirrjet që nuk janë në sfond (thirrje proxy) tani mund të mbajnë JVM hapur derisa të përfundojnë. Thirrjet Proxy do të trajtojnë shutdown-in derisa thirrja të përfundojë, por do të marrin një mesazh ndërprerjeje. Skedarët tani mbyllen siç duhet dhe të dhënat shkarkohen në disk (flush), nëse fijet trajtojnë përjashtimin siç duhet. Ekzekutohen thirrjet për pastrimin e burimeve dhe finalizuesit. Në gjenerimin e fijave, thirrjet AtExit janë të aktivizuara. Përdorimi i JVM nga Python përmban bashkimin automatik të fijave përmes demonit. Kodi gabim që nuk mund të menaxhojë siç duhet pastrimin e fijës, mund të ngecë gjatë ekzekutimit të shutdown. Dokumentacioni shtesë ndodhet në udhëzuesin e përdorimit.
- Ambale për Throwable merrte ambalazhimin për Object në vend të rezultatit të pritur, duke çuar në transformime të çuditshme nga klasat Python.
- Korrigjohen gabimet nĂ« sistemin e importit, qĂ« çojnĂ« nĂ« dalje tĂ« gabimit â»jname» not foundâ.
- Siguruar promovimi i saktĂ« tĂ« â^Câ nĂ« KeyboardInterrupt.
- Problemin me karakteret që vinte nga Python 3.5.3 është zgjidhur. PySlice_Unpack u fut në një patch-release të ardhshëm (3.5.4) dhe nuk duhej të përdorej.
- ĂshtĂ« zgjidhur problemi me numpy.linalg.inv, qĂ« shkaktonte pĂ«rplasje. Problemi u identifikua si njĂ« ndĂ«rveprim ndĂ«rmjet rrjetave JVM dhe disa varianteve tĂ« numpy. Zgjidhja e propozuar Ă«shtĂ« thirrja e numpy.linalg.inv para se tĂ« nisĂ« JVM.
Burimi: opennet.ru
