Interfacing Erlang with the Outer World ======================================= Native Libraries ---------------- 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 BSD) C++ ```` * `EPI `_ (license LGPL) * `eixx `_ (license Apache2) * `C/C++ Generic Erlang Port Driver `_ (license BSD) * `C++11 NIFPP `_ (license Boost) Lua ```` * erlua * `erlualib `_ (license MIT) Python `````` * `erlang_py `_ (license BSD) * py_interface `Website `_, `Github `_ (license GPL) Rust ```` * `Rustler `_ (license Apache, MIT) * `erlang-rust-nif `_ 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 `_ * C/C++, Erlang/Elixir, Java, JavaScript/node.js, Perl, PHP, Python and Ruby `_ * Erlang Term Format (Ruby) https://github.com/okeuday/erlang_rb (BSD) * Erlang Term Format (Javascript) https://github.com/okeuday/erlang_js (BSD) * Erlang Term Format (Perl) https://github.com/okeuday/erlang_pl (BSD) * Erlang Term Format (PHP) https://github.com/okeuday/erlang_php (BSD)