Навсозии JPype 1.0.2, китобхонаҳо барои дастрасӣ ба синфҳои Java аз Python

Дастрас барориши нави интерлейер JPype 1.0.2, ки ба барномаҳои Python имкон медиҳад, ки ба китобхонаҳои синфӣ бо забони Java дастрасии пурра дошта бошанд. Бо JPype аз Python, шумо метавонед китобхонаҳои махсуси Java-ро барои сохтани барномаҳои гибридӣ, ки рамзи Java ва Python-ро муттаҳид мекунанд, истифода баред. Баръакси Jython, ҳамгироӣ бо Java на тавассути эҷоди варианти Python барои JVM, балки тавассути ҳамкорӣ дар сатҳи ҳарду мошини виртуалӣ бо истифода аз хотираи муштарак ба даст оварда мешавад. Усули пешниҳодшуда имкон медиҳад, ки на танҳо ба дастовардҳои хуб ноил гардад, балки дастрасиро ба ҳамаи китобхонаҳои CPython ва Java таъмин мекунад. Рамзи лоиҳа паҳн мекунад дар зери Apache 2.0 литсензия шудааст.

Тағйироти асосӣ:

  • Барои пешгирӣ кардани ҳалли изофаборӣ ба зангҳои усул кэш илова карда шудааст, ки таъсири иҷрои ҳалли усулро хеле кам мекунад, хусусан агар ҳамон изофабори изофа борҳо даъват карда шавад, ба монанди ҳангоми иҷрои ҳалқа.
  • Вобаста ба намуди додаҳо аз 4 то 100 маротиба интиқоли рӯйхатҳо, кортаҳо ва буферҳо ба массивҳои ибтидоии Java суръат мегирад. Табдил ба ҷои API Sequence коркарди оптимизатсияшудаи буферҳои хотираро истифода мебарад. Вақте ки буфери Python дучор мешавад, танҳо унсури аввал барои табдилдиҳӣ тафтиш карда мешавад, зеро ин буферҳо якхелаанд.
  • Амалиёти коркарди қатъкунӣ (дар JPype 1.0.0 амалӣ карда мешавад, аммо ҳангоми омода кардани тағирот гузаронида шуд). JPype ҳоло реҷаи қатъшавии JVM-ро даъват мекунад, ки кӯшиши ба таври зебо баромаданро дорад. Ин ба якчанд тағйирот дар рафтор оварда мерасонад. Риштаҳои ғайризаминӣ (зангҳои прокси) акнун метавонанд JVM-ро то анҷоми онҳо кушода нигоҳ доранд. Зангҳои прокси то анҷоми занг хомӯширо коркард мекунанд, аммо паёми қатъро қабул мекунанд. Файлҳо ҳоло дуруст баста мешаванд ва ба диск тоза карда мешаванд, агар риштаҳо истисноро тавре ки интизор буданд, иҷро кунанд. Ҳокҳои тозакунии захираҳо ва анҷомдиҳандагон иҷро карда мешаванд. Вақте ки риштаҳо пайдо мешаванд, қалмоқҳои AtExit даъват карда мешаванд. Тавассути демон, ҳангоми истифодаи JVM аз Python замимаи риштаи автоматӣ амалӣ карда мешавад. Рамзи хатогие, ки тозакунии риштаро дуруст идора карда наметавонад, ҳангоми анҷоми хомӯшкунӣ эҳтимол овезон мешавад. Ҳуҷҷатҳои иловагиро дар дастури корбар пайдо кардан мумкин аст.
  • Ба ҷои натиҷае, ки интизор буд, парпеч барои Throwable барои Объектро гирифт, ки боиси табдили аҷиби синфҳои Python гардид.
  • Хатогиҳои собит дар системаи воридотӣ, ки боиси хатогии "jname" ёфт нашуд' шуд.
  • Боварӣ ҳосил кунед, ки "^C" дар KeyboardInterrupt дуруст пешбарӣ карда шудааст.
  • Мушкилоти собит бо рамзҳо аз Python 3.5.3. PySlice_Unpack дар версияи пачҳои минбаъда (3.5.4) ҷорӣ карда шуд ва набояд истифода мешуд.
  • Хатогиро бо numpy.linalg.inv ислоҳ кард, ки ба садама оварда расонд. Масъала дар робита бо иртиботи байни JVM ва баъзе маззаҳои номуайян пайгирӣ карда шудааст. Ҳалли пешниҳодшуда ин даъват кардани numpy.linalg.inv пеш аз оғози JVM мебошад.

Манбаъ: opennet.ru

Илова Эзоҳ