Both sides: Python exception trace is now propagated to the Java side as a string. If the Python exception is caused by a Java exception it is possible to rethrow the Java exception on the Java side, making it easy to implement Java protocols in Python (e.g., Iterator protocol). Because this could break backward compatibily, Java exceptions are only rethrown if propagate_java_exceptions is True in CallbackServerParameters. Thanks to @batterseapower for the patch.
Both sides: small fixes to the code examples on documentation front page.
Both sides: added optional authentication method that requires a token at the start of every connection. Thanks to @vanzin for initial patch and follow up.
Python side: support for Python 3.6
Python side: removed two spurious line breaks in sub commands.
Java side: as part of the addition of the authentication method, made protocol stricter: unknown commands now raise an exception and stops a connection.
Java side: ClientServer now uses the passed SocketFactory in PythonClient instead of always falling back to the default socket factory.