Py-Interface
Description
The Py-Interface is a python-implementation of an
Erlang node.
The py_interface provides the possibility to create a node that may
be used for communication with other Erlang nodes.
Some characteristics:
- The Python nodes are hidden, like the Java nodes
- The Python node supports
- registering the Python node in the epmd
- sending and receiving message
- executing remote procedure calls (the
rpc:call(M,F,A)
mechanism)
- The Python node does currently not do:
- The Python node translates Erlang types to Python types as far as
there is a reasonable Python counterpart. If there is not, then
a class is used.
- The Python node is a single threaded callback-driven process.
- The Python node runs on Python 2.5+ and Erlang R13.
It may well still work with older version of both Python and Erlang.
Development started on Python 1.5 and Erlang R7.
- The source of information for this Python node has been the files
`distribution_handshake.txt' and `erl_ext_dist.txt' together with
the Java node source files, the `net_kernel.erl' and the
`dist_util.erl' files in the Erlang source code distribution.
Screenshot (well, sort of)
Here's a screenshot of one of the test programs (since the
main code is a library, it doesn't look like anything at all on a
picture :-)
![[Screenshot of the test program]](screenshot.png)
Download
Download the latest version:
py_interface-0.98.tar.gz (70 kB).
Py-Interface is written entirely in Python,
for communication with Erlang
so you need to download
and install Python and you need to download
and install a copy of Erlang on your machine first.
Development
A git repository is hosted at repo.or.cz.
To clone it, run:
git clone git://repo.or.cz/py_interface.git
Known bugs
Probably a few.
One known issue, though: Sending a fun from Erlang to Python and
back to Erlang won't result in the original fun on the Erlang side.
Authors
Tomas Abrahamsson
<tab@lysator.liu.se>,
with great help from David King, Ed Blake, Luke Gorrie, Jimmy Olgeni
and Nigel Head. (I hope I haven't forgotten anyone; please let me know
if that's the case.)
Legal issues
Py-Interface is distributed under the
GNU Library General Public License.
History
- version 0.98, 2009-Nov-18
py_interface-0.98.tar.gz
- Changes: Bugfix for handling negative integers, reported by bird devdoer.
- version 0.97, 2009-Jul-27
py_interface-0.97.tar.gz
- Changes:
- py_interface/erl_eventhandler.py: handles interrupted system
call exceptions also in the timeout case.
- py_interface/erl_node.py: doc string fix for methods
ErlMBox.Send and ErlNode.SendMsgFromMBox: the order of the process
name and node name had gotten mixed up. Noted by Paul TBBle
Hampson.
- py_interface/erl_node_conn.py: Python 2.6 compatibility patch by
David Reiss applied: uses md5 from hashlib
if that one is available.
- version 0.96, 2008-Dec-17
py_interface-0.96.tar.gz
- Changes: Applied two patches from Anton Krasovsky: fixes for
programming errors triggered by internode communication
failures.
Also fixed is version number propagation to all files, and
building problems: the tar file now contains all files necessary
to build the package.
- version 0.95, 2008-Jul-15
py_interface-0.95.tar.gz
- Changes: Applied patch from David King: the socket connection
now also checks for
EWOULDBLOCK. Previously it only
checked for EAGAIN.
- The code now resides in its own namespace:
py_interface
- Now supports packaging as an easy_install egg
- Bugfix: Queued writes attempted to access an undefined variable.
- version 0.94, 2008-Jul-13
py_interface-0.94.tar.gz
- Changes: Applied patches and bugfixes from David King:
- The code now resides in its own namespace:
py_interface
- Now supports packaging as an easy_install egg
- Bugfix: Queued writes attempted to access an undefined variable.
- version 0.93, 2006-Jul-25
py_interface-0.93.tar.gz
- Changes:
- Updated to work with Erlang R10 and R11 (15-->28 bits in
pids and ports).
- Now also works with threaded Tcl (as with Debian) as
well.
- Also fixed a deprecation issue: integer vs floating-point
timeout values in
erl_event_handler.py.
- Also added
an installation support (the
__init__.py file),
based on information by Ed Blake.
- version 0.92, 2004-Jul-13
py_interface-0.92.tar.gz
- Several bugfixes in packing/unpacking of erlang terms. A lot of
thanks to Jimmy Olgeni and Nigel Head for patches. See the file
erl_term.py, in the tar file, for details.
- version 0.91, 2002-Jul-21
py_interface-0.91.tar.gz
- Added autoconf stuff. This version is/was also on
the Erlang User
contribution page
- version 0.9, 2002-May-29
py_interface-0.9.tar.gz
- First version