6 ms·
It's more of "yeah it worked, but I had to do a lot of hand-holding" and "it passes the tests but I cannot tell if the code has memory leaks". Actually, I can
by overbring_labs 1y ago
It's more of "yeah it worked, but I had to do a lot of hand-holding" and "it passes the tests but I cannot tell if the code has memory leaks".
Actually, I can tell; I ran split on the C source and got things like this:
disk_space.c:144:16: Only storage bin.ref_bin (type void *) derived from
variable declared in this scope is not released (memory leak)
So I'm looking into a Rust version with Rustler now.
- Zxian 1y agoI'd also recommend having a look at the Zig library for Elixir. For simple stuff, you can just inline, but support for pretty complex setups too. Also comes with a built-in BEAM allocator so the runtime properly reports NIF memory consumption. https://hexdocs.pm/zigler/Zig.html https://hexdocs.pm/zigler/Zig.html
- overbring_labs 1y agoThanks, one day I'll look into Zig too, because I've been impressed with what Tigerbeetle has achieved with it! For now, I'm all-in on Elixir.
- dnautics 1y agoyou can use zigler for a c nif, using easy_c (or c_src) options. the big advantage is that it will automatically box/unbox to/from c values for you and generate sane error messages (which rustler does not, last i checked) when you pass incompatible terms in to the function. on the other hand rustler lets you precompile (which is coming in a future version of Zigler)