ityonemo
Zigler - Zig nifs for Elixir
Currently just starting out on a new mini-project - getting zig NIFs to run in elixir.
https://github.com/ityonemo/zigler
The idea here is to make the zig NIFs be “embedded” in the elixir code, much like an “asm” call in C. It also makes the bridge between the zig function call and the elixir “basically transparent”. Several adapters are provided: i64, f64, string (as a c string or a zig slice), i64 arrays, f64 arrays. Of course it’s not terribly hard to do the unmarshalling of the erlang terms yourself inside the NIF.
Haven’t started documenting yet, but if you want to see how it works, the test/ directory has quite a few instructive examples which are all passing as of zig 0.4.0
Comments and criticism appreciated!
Most Liked
ityonemo
Updated to 0.8.1
Zig version is bumped to 0.8.1
Major highlights:
- Supports cancellation of threaded and yielding nifs by killing the owning process.
- When compiled with debug symbols, zig “error return traces” are merged with elixir exception stacktraces.
- Supports idiomatic "std.testing.*’ zig stdlib functions for running zig tests
ityonemo
Zigler version 0.10.1 is released, with a redone API, fully updated documentation and guides.
Big highlight is “easy_c” which lets you mount a c library (or supplied c code) and allows you to integrate C libraries as nifs in an intuitive fashion without having to write error-prone glue code by hand.
ityonemo
Version 0.9.1 is released!
Zig version updated to 0.9.1:
Major highlights: Support for c and c++ compilation using the sources option:
Last Post!
venkatd
We’ve been using Zigler/Zig in production and I love how seamless the experience is.
We opted for Zig over Rust for personal preferences. I think Zig is closer to C while Rust is closer to C++. We’re more C-kind of personality.
It also comes in handy when trying to integrate with 3rd party C libraries.
Popular in Announcing
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #hex










