dont-rely-on-nulls/zerl

A Zig library to idiomatically communicate with other BEAM nodes

Zig

52

163 commits

updated Jun 22, 2026

See the code

README

* Zerl: Making Erlang + Zig communication EZ
#+html: <a href="https://builtwithnix.org"><img alt="built with nix" src="https://builtwithnix.org/badge.svg" /></a><br>
#+html: <a href="https://github.com/dont-rely-on-nulls/zerl/actions/workflows/build_zerl.yml"> <img alt="[Build] Client" src="https://github.com/dont-rely-on-nulls/zerl/actions/workflows/build_zerl.yml/badge.svg" /></a>

#+html: <p align="center"><img src="images/logo.png" alt="The Zerl Logo" style="width: 25%;"></p>

/WORK IN PROGRESS/

This is a library for communicating with the BEAM from Zig. It is a wrapper
around ~erl_interface~, which is provided with Erlang, and currently targets Zig version
~0.14.0~.

Note that ~erl_interface~ is not currently packaged for Zig, so users of Zerl will need
to provide the dependency themselves.

Please refer to [[doc/types.org][this document]] for how types are translated
between Zig and Erlang.

** Roadmap

*** 0.1 [1/1]
- [X] Add unit tests for the decoder and encoder.

*** 0.2 [1/1]
- [X] Update to Zig 0.14.0.

*** 0.3 [1/1]
- [X] Allow parsing tagged tuples with multiple items from Erlang into Zig tagged unions.

*** Before 1.0 [0/3]
- [ ] Expose the timeout version of the networking functions from ~erl_interface~.
- [ ] Remove all hidden allocations from the library.
- [ ] Either package ~erl_interface~ and add it to ~build.zig.zon~, or drop the dependency entirely.

** Examples

See the [[./examples]] directory for some code examples. If you are looking for a
non-trivial example, check [[https://github.com/Dr-Nekoma/lyceum][Lyceum]], it's a game built around this library.

** Developing

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

beam
c-node
erlang
erlang-otp
nix
zerl
zig
ziglang
zig-library

Contributors

z-silver

139 commits

schonfinkel

14 commits

EduardoLR10

3 commits

dont-rely-on-nulls/zerl

A Zig library to idiomatically communicate with other BEAM nodes

Zig

52

163 commits

updated Jun 22, 2026

See the code

README

* Zerl: Making Erlang + Zig communication EZ
#+html: <a href="https://builtwithnix.org"><img alt="built with nix" src="https://builtwithnix.org/badge.svg" /></a><br>
#+html: <a href="https://github.com/dont-rely-on-nulls/zerl/actions/workflows/build_zerl.yml"> <img alt="[Build] Client" src="https://github.com/dont-rely-on-nulls/zerl/actions/workflows/build_zerl.yml/badge.svg" /></a>

#+html: <p align="center"><img src="images/logo.png" alt="The Zerl Logo" style="width: 25%;"></p>

/WORK IN PROGRESS/

This is a library for communicating with the BEAM from Zig. It is a wrapper
around ~erl_interface~, which is provided with Erlang, and currently targets Zig version
~0.14.0~.

Note that ~erl_interface~ is not currently packaged for Zig, so users of Zerl will need
to provide the dependency themselves.

Please refer to [[doc/types.org][this document]] for how types are translated
between Zig and Erlang.

** Roadmap

*** 0.1 [1/1]
- [X] Add unit tests for the decoder and encoder.

*** 0.2 [1/1]
- [X] Update to Zig 0.14.0.

*** 0.3 [1/1]
- [X] Allow parsing tagged tuples with multiple items from Erlang into Zig tagged unions.

*** Before 1.0 [0/3]
- [ ] Expose the timeout version of the networking functions from ~erl_interface~.
- [ ] Remove all hidden allocations from the library.
- [ ] Either package ~erl_interface~ and add it to ~build.zig.zon~, or drop the dependency entirely.

** Examples

See the [[./examples]] directory for some code examples. If you are looking for a
non-trivial example, check [[https://github.com/Dr-Nekoma/lyceum][Lyceum]], it's a game built around this library.

** Developing

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

beam
c-node
erlang
erlang-otp
nix
zerl
zig
ziglang
zig-library

Contributors

z-silver

139 commits

schonfinkel

14 commits

EduardoLR10

3 commits

Languages

Zig

87.1%

Nix

12.9%