Go is an open-source language with builtin primitives to easily handle concurrency.
Python is the de facto glue language in science.
More and more analyses are written in Python with performance hotspots being rewritten in C/C++
or Cython
.
What if we could leverage the concurrency features of Go
from Python
?
This is the goal of the gopy tool.
gopy
takes a Go
package, inspects it and generates C
code to wrap it with the CPython-2
API.
This is a process that is made relatively straightforward thanks to the high level constructs of Go
and its standard libraries to inspect Go
code (mainly go/build
and go/types
.)
However, gopy
only generates wrappers for CPython-2
.
The science ecosystem is finally migrating to Python-3
: gopy
needs to support this migration.
This project intends to modify the code generation mechanism to generate (pure Python) cffi
code so that Go
packages can be used from CPython
(2 and 3), PyPy
and IronPython
.
Go (>=1.6)
and a Python
VM
gopy
unit tests to this new mechanismGo
error
and make them pythonic (raising an Exception
)Go
map
sGo
interfacesA new gopy
command that can generate wrapping code (using cffi
) for the current set of unit tests of gopy
, with Go >= 1.5
.
Go language, Python language, git.