Point to local wiki page for cppyy instead of external as per the "hint".
Add link to article in SciPy as it's current; dated the others; removed dead links. Marked weave as deprecated.
|Deletions are marked like this.||Additions are marked like this.|
|Line 14:||Line 14:|
|* [[weave]] - include C code lines in Python program||* [[weave]] - include C code lines in Python program (deprecated in favor of Cython)|
|Line 35:||Line 35:|
| * Embedding Python in Multi-Threaded C/C++ Applications in [[http://www.linuxjournal.com/article.php?sid=3641|LinuxJournal]]
* Building Hybrid Systems with Boost.Python in [[http://www.boost.org/doc/libs/develop/libs/python/doc/html/article.html|C/C++ User Journal]]
* [[http://dales.rmplc.co.uk/Duncan/accu/integratingpython.html|Integrating Python, C and C++]], presented at the ACCU conference by Duncan Booth, and his [[http://dales.rmplc.co.uk/Duncan/accu|conference slides]]
| * Using Python as glue [[https://docs.scipy.org/doc/numpy/user/c-info.python-as-glue.html|SciPy Documentation]]
* Building Hybrid Systems with Boost.Python in [[http://www.boost.org/doc/libs/develop/libs/python/doc/html/article.html|C/C++ User Journal]] (2003)
* Integrating Python, C and C++, presented at the ACCU conference by Duncan Booth (2003)
* Embedding Python in Multi-Threaded C/C++ Applications in [[http://www.linuxjournal.com/article.php?sid=3641|LinuxJournal]] (2000)
[Hint: The idea is to create pages for the stuff, not just link it.]
There a various tools which make it easier to bridge the gap between Python and C/C++:
Pyrex - write your extension module on Python
Cython -- Cython -- an improved version of Pyrex
CXX - PyCXX - helper lib for writing Python extensions in C++
ctypes is a Python module allowing to create and manipulate C data types in Python. These can then be passed to C-functions loaded from dynamic link libraries.
elmer - compile and run python code from C, as if it was written in C
PicklingTools is a collection of libraries for exchanging Python Dictionaries between C++ and Python.
weave - include C code lines in Python program (deprecated in favor of Cython)
ackward exposes parts of Python's standard library as idiomatic C++
CFFI - interact with almost any C code from Python, based on C-like declarations that you can often copy-paste from header files or documentation.
C/C++ Binding Generators
Tools to make C/C++ functions/methods accessible from Python by generating binding (Python extension or module) from header files.
boost.python - Expose C++ classes functions and objects to Python, and vice-versa, using just C++ compiler
PyAutoC - Automatically wrap C functions and structs, using just C compiler.
pwig is a SWIG extension for writing new language modules in Python.
PyBindGen Python bindings code generator for pure C or C++ APIs. The generator is written in Python and has low complexity. The generated code is lean, efficient, and highly readable
SWIG - generate extension module from your .h files
pybind11 - Similar to Boost.Python, but with a lean header-only implementation for C++11-capable compilers.
pyclif - Google tool. Similar to SWIG, but user-friendly and targeted only C++11 well-written libs.
cppyy - Interact with C/C++ through LLVMs JIT with automatic pythonizations for a "python feel." Support tools are available for large scale projects.
Using Python as glue SciPy Documentation
Building Hybrid Systems with Boost.Python in C/C++ User Journal (2003)
- Integrating Python, C and C++, presented at the ACCU conference by Duncan Booth (2003)
Embedding Python in Multi-Threaded C/C++ Applications in LinuxJournal (2000)
CLPython - Python implemented in Common Lisp
Lython (archived page) - Lisp front-end for Python
Pymacs - integration of Python with Emacs Lisp
PyLog (actually two different products)
bedevere - Python wrapper to GNU Prolog http://bedevere.sourceforge.net/
pwig includes examples of wrapping Python for SWI-Prolog.
pyswip is a ctypes based module that enables querying SWI-Prolog.
Jython - Python implemented in Java
JPype - Allows Python to run java commands
Jepp - Java embedded Python
JCC - a C++ code generator for calling Java from C++/Python
Javabridge - a package for running and interacting with the JVM from CPython
py4j - Allows Python to run java commands.
p2j - Converts Python code to Java. No longer developed.
Python for .NET is a near-seamless integration of the CPython runtime with the .NET Common Language Runtime (CLR).
IronPython is an implementation of Python for .net, which allows you to import .net class libraries seamlessly in Python.
For converting/porting Perl code to Python the tool 'Bridgekeeper' http://www.crazy-compilers.com/bridgekeeper/ may be handy.
PiP (Python in PHP) http://www.csh.rit.edu/~jon/projects/pip/
elmer - compile and run python code from Tcl, as if it was written in Tcl
TclPython - A package for Tcl that allows you to pass strings of Python code from a Tcl environment to a Python (Python 2.x or 3.x) interpreter.
Tcl and other languages - Tcl's equivalent of this page.
LunaticPython - a two-way bridge between Python and Lua.
Lupa - fast wrapper for LuaJIT2 written in Cython.
Lux - a mutant Lua emphasizing interoperation with Python, Perl, etc.
Pycaml - write Python extension modules in OCaml (instead of C), and use Python code and native libraries from OCaml programs.
Eiffel and Haskell
Eiffel/Haskell http://epolyglot.sourceforge.net/ (last updated 2001)
PythonVsHaskell has a section "Using both Python & Haskell with ctypes".
CorbaPython: for a generic solution to language integration
to name a few. There are much more...
Other (standards and protocols)
- XMLRPC and SOAP