Interfacing Erlang with the Outer World ======================================= Native Libraries ---------------- .. note:: This page was created between 2016 and 2018, more changes might have happened since. There are plenty of different approaches on integrating NIFs written in other languages: C ```` * `edtk, a port driver toolkit `_ * `dryverl `_ (license BSD) * `C/C++ Generic Erlang Port Driver `_ (license MIT) * `Nifty, a NIF wrapper generator `_ C++ ```` * `EPI `_ (license LGPL) * `eixx `_ (license Apache2) * `C/C++ Generic Erlang Port Driver `_ (license MIT) * `C++11 NIFPP `_ (license Boost) Lua ```` * erlua * `erlualib `_ (license MIT) Python `````` * `Pyrlang `_ (Erlang node written in asyncio) (license Apache2) * ErlPort (see below in "Ports") * `erlang_py `_ (license MIT) * py_interface `Website `_, `Github `_ (license LGPL) * PyErl `Github `_ (license MPL) Ruby ```` * ErlPort (see below in "Ports") * `Erlang Term Format (Ruby) `_ (MIT) PHP ```` * `Erlang Term Format (PHP) `_ (MIT) Rust ```` * `Rustler `_ (license Apache, MIT) * `erlang-rust-nif `_ Nim ```` * `nimler `_ (MIT) Javascript `````````` * `Erlang Term Format (Javascript) `_ (MIT) Perl ```` * `Erlang Term Format (Perl) `_ (MIT) Ports and Network ----------------- For the situations when you still need the speed and can tolerate some call latency over, but don't want to risk crashing your node: choose interaction over network or a port. * `Erlport `_ * `CloudI, A private cloud engine `_ (C/C++, Erlang/Elixir, Java, JavaScript/node.js, Perl, PHP, Python and Ruby)