wltsmrz/nimler

Erlang/Elixir NIFs in Nim

Nim

107

201 commits

updated Nov 6, 2021

See the code

README

nimler

Nimler is a library for authoring Erlang and Elixir NIFs in the Nim programming language. It has mostly complete bindings for the Erlang NIF API and some accessories for making writing NIFs easier, including idiomatic functions for converting between Erlang terms and Nim types, and simplifications for using resource objects.

Mostly, Nimler is a minimal, zero-dependency wrapper for Erlang NIF API.

Build status

TargetStatus
x86_64-linux
arm64-linux
$ nimble install nimler

Documentation

Nimler is documented at smrz.dev/nimler.

Sample

import nimler

func add(env: ptr ErlNifEnv, a: int, b: int): (ErlAtom, int) {.xnif.} =
  (AtomOk, a + b)
  
func sub(env: ptr ErlNifEnv, a: int, b: int): (ErlAtom, int) {.xnif.} =
  (AtomOk, a - b)

exportNifs "Elixir.NifMath", [ add, sub ]
elixir
erlang
nif
nim

Contributors

wltsmrz

200 commits

fxn

1 commits

wltsmrz/nimler

Erlang/Elixir NIFs in Nim

Nim

107

201 commits

updated Nov 6, 2021

See the code

README

nimler

Nimler is a library for authoring Erlang and Elixir NIFs in the Nim programming language. It has mostly complete bindings for the Erlang NIF API and some accessories for making writing NIFs easier, including idiomatic functions for converting between Erlang terms and Nim types, and simplifications for using resource objects.

Mostly, Nimler is a minimal, zero-dependency wrapper for Erlang NIF API.

Build status

TargetStatus
x86_64-linux
arm64-linux
$ nimble install nimler

Documentation

Nimler is documented at smrz.dev/nimler.

Sample

import nimler

func add(env: ptr ErlNifEnv, a: int, b: int): (ErlAtom, int) {.xnif.} =
  (AtomOk, a + b)
  
func sub(env: ptr ErlNifEnv, a: int, b: int): (ErlAtom, int) {.xnif.} =
  (AtomOk, a - b)

exportNifs "Elixir.NifMath", [ add, sub ]
elixir
erlang
nif
nim

Contributors

wltsmrz

200 commits

fxn

1 commits

Languages

Nim

73.1%

Elixir

26.8%