Elektra’s API is written in C, but many different bindings allow applications in different programming languages to use Elektra.
Note that a binding does not automatically allow you to implement plugins in the respective programming languages, but you additionally need an Interpreter Plugin. Nevertheless, bindings can be immediately used in applications without plugins.
List of currently supported bindings (use ALL;-EXPERIMENTAL;-DEPRECATED
):
- cpp C++11 bindings (included per default)
- glib GLib bindings
- intercept_env Intercepts calls to environment (e.g. getenv())
- swig_lua Lua SWIG bindings
- swig_python Python 3 SWIG bindings
- swig_python2 Python 2 SWIG bindings
- swig_ruby Ruby bindings
Experimental bindings (included in EXPERIMENTAL
):
- gsettings GLib bindings (experimental)
- haskell Haskell bindings
- intercept_fs Intercepts file system calls to configuration files (experimental)
- io_uv I/O binding for uv (experimental)
- io_ev I/O binding for ev (experimental)
- io_glib I/O binding for glib (experimental)
- jna A full java binding using JNA
Deprecated bindings (included in DEPRECATED
):
- gi_lua GObject Introspection binding with Lua specific overrides (deprecated)
- gi_python GObject Introspection binding with Python specific overrides (deprecated)
These bindings allow Elektra to integrate into different main loop APIs using a
thin abstraction layer called "I/O binding".
The build all available I/O bindings use -DBINDINGS="IO"
when configuring cmake
.
For more information please check out the notification tutorial or the API documentation. The doc directory contains an example binding for a fictive asynchronous I/O management library.
- See COMPILE for how to specify the bindings to build, e.g.
ALL
.