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)