Խոշոր փոփոխություններ.
- C++-ում և Java կոդի մեջ գցված բացառությունները այժմ ապահովում են բացառությունների կույտ, երբ բացառություն է տեղի ունենում Python կոդում: Այսպիսով, բացառությունների կույտի մասին տեղեկատվություն ստանալու համար այլևս կարիք չկա զանգահարել stacktrace():
- Զանգի վերադարձի արագությունը եռապատկվել է.
- Զգալիորեն (մեծության կարգերով) ավելացել է փոխանցման արագությունը
Բազմաչափ զանգվածների անհարթ բուֆերներ: Բազմաչափ պրիմիտիվները փոխանցում են միայն կարդալու պատճեններ, որոնք ստեղծված են JVM-ի ներսում՝ հարակից C դասավորությամբ: - Բոլոր բացված ինտերնալները փոխարինվել են CPython իրականացումներով, և խորհրդանիշները __javaclass__, __javavalue__ և __javaproxy__
ջնջված է։ Java-ի հատուկ բնիկ ավելացվել է բոլոր CPython տեսակներին, որոնք ժառանգում են jpype դասի տեսակներից: Բոլոր մասնավոր աղյուսակները տեղափոխվել են CPython: Java-ի տեսակներն այժմ պետք է ժառանգեն JClass metaclass-ից, որն օգտագործում է տիպի slots: Python-ի բազային դասերի միքսներն անթույլատրելի են: Տեսակներն են՝ Object, Proxy, Exception, Number և Array և ժառանգվում են անմիջապես CPython-ի ներքին իրականացումներից: - Բարելավված հետագծում և բացառությունների մշակում:
- Զանգվածի հատվածներն այժմ մշակվում են որպես դիտումներ, որոնք աջակցում են վերադառնալ բնօրինակին, օրինակ՝ անփույթ զանգված: Զանգվածի կտրման համար աջակցություն է տրամադրվում արժեքները քայլերով սահմանելու և առբերելու համար (կտոր (սկիզբ, կանգառ, քայլ)):
- Զանգվածներն այժմ աջակցում են «__reversed__»:
- Java զանգվածներն այժմ աջակցում են memoryview API-ին և հեռացնում են numpy-ից կախվածությունը՝ բուֆերային բովանդակությունը փոխանցելու համար:
- Numpy-ն այլևս կախվածություն չէ (լրացուցիչ), և հիշողության փոխանցումը numpy-ին հասանելի է առանց numpy աջակցությամբ կոմպիլյացիայի:
- JInterface-ը նախագծված է որպես մետա դաս: Օգտագործեք ininstance (cls, JInterface) միջերեսները ստուգելու համար:
- Լռելյայն ներմուծումներին ավելացվել են բացակայող «mil», «net» և «edu» TLD-ները:
- Գործարկման ընթացքում բարելավված սխալի հաղորդագրություններ UnsupportedClassVersion-ի համար:
- java.util.Map-ն այժմ գցում է KeyError, եթե տարրը չի գտնվել: Արժեքները, որոնք զրոյական են, դեռևս չեն վերադառնում, ինչպես սպասվում էր: Օգտագործեք get()-ը, եթե ցանկանում եք դատարկ ստեղները համարել որպես None:
- Հեռացվել է java.util.Collection-ը, քանի որ այն տարօրինակ կերպով ծանրաբեռնում է remove(Object) և remove(int) միջև ցուցակներում: Օգտագործեք Java remove() մեթոդը՝ Java-ի բնիկ վարքագիծը մուտք գործելու համար, սակայն տիպի casting-ը խստորեն խորհուրդ է տրվում գերբեռնվածության վերահսկման համար:
- java.lang.IndexOutOfBoundsException-ն այժմ կարելի է բռնել՝ օգտագործելով IndexError բացառության դասը, երբ մուտք գործեք java.util.List տարրեր:
Source: opennet.ru