Py4J 0.9 Released

Py4J 0.9 has just been released on pypi and maven central.

This is a backward-compatible release with many features and bugfixes:

  • Python side: constructor parameters have been deprecated in favor of GatewayParameters and CallbackServerParameters. This was necessary because the number of configuration options is growing fast. Old parameters will be supported until Py4J 1.0 (at least two more minor versions).
  • Python side: IDEs and interactive interpreters such as IPython can now get help text/autocompletion for Java classes, objects, and members. This makes Py4J an ideal tool to explore complex Java APIs (e.g., the Eclipse API). Thanks to @jonahkichwacoders
  • Python side: the callback gateway server (necessary for Java to call back Python functions) can be daemonized and can be started after the main JavaGateway is started.
  • Python side: py4j.java_gateway.launch_gateway has now a cleaner implementation that discards stdout and stderr output by default. It is also possible to redirect the output from these channels to separate files, deques, or queues. Thanks to @davidcsterratt for finding the root cause and work on the fix.
  • It is now possible to install Py4J from git with pip: pip install git+https://github.com/bartdag/py4j.git. This has been working for some time but was never officially announced before.
  • The Eclipse components of Py4J have been moved to another repository. Existing forks and pull requests can still use the @before-eclipse-split branch until Py4J reaches 1.0. Fixes won’t be backported to this branch, but pull requests will be merged by the main maintainer to @master if requested.
  • Major cleanup of Python source code to make it fully flake8 (pep8 + pyflakes) compliant. This should be easier to contribute now.
  • Major test cleanup effort to make Python tests more reliable. Testing Py4J is difficult because there are many versions of Python and Java to test and Python 2.6 lacks many interesting test features. Effort to make tests even more robust will continue in the next milestone.
  • We introduced a contributing guide and an implicit contributor license agreement that indicates that anyone contributing to Py4J keeps the copyright of the contribution but gives a non-revokable right to license the code using Py4J’s license (3-clause BSD). The copyright statement has been changed to “Copyright (c) 2009-2015, Barthelemy Dagenais and individual contributors. All rights reserved.” to make it clear that individual contributors retain copyrights of their contributions. An AUTHORS.txt file has been added to the repository to keep track of contributors: if your name is not in the file and you have contributed to Py4J, do not hesitate to write on the mailing list or open a pull request.
  • Cleaned up the doc that was referring to broken links or refactored classes. Long-time users may want to review the advanced topics page.
  • Added support for Python Wheels.
  • We have a new website: https://www.py4j.org
  • We have a new blog: https://blog.py4j.org
  • Eclipse features have moved to: http://eclipse.py4j.org
  • We have a new mailing list
  • github 0.9 milestone

If you see any backward-incompatible changes, do not hesitate to fill a bug report (https://github.com/bartdag/py4j/issues/new).

This release has been made possible by the generous contributions from many users. Every bug reports, patches, pull requests, ideas or help on the mailing list (thanks @agronholm) is greatly appreciated.

Leave a Reply

Your email address will not be published. Required fields are marked *