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 cmake -DBINDINGS=ALL;-EXPERIMENTAL;-DEPRECATED
):
- cpp C++11 bindings (included per default)
- glib GLib bindings
- intercept_env Intercepts calls to environment (e.g. getenv())
- lua Lua SWIG bindings
- python Python 3 SWIG bindings
- ruby Ruby bindings
- java Java binding using JNA
- kotlin Kotlin binding (based on JNA)
- rust Rust bindings
Experimental bindings (included in cmake -DBINDINGS=EXPERIMENTAL
):
- gsettings GLib bindings (experimental)
- 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)
- erl_nif_elixir Elixir bindings (experimental)
External bindings (in a separate repo):
- go Go bindings (experimental)
These bindings allow Elektra to integrate into different main loop APIs using a
thin abstraction layer called "I/O binding".
To build all available I/O bindings use cmake -DBINDINGS="IO"
.
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 INSTALL.
A few bindings are part of the core package libelektra5
.
The package that includes a binding which does not belong to the libelektra5
package can be found in it's README.md.
- See COMPILE for how to specify the bindings to build.