Not sure why you would choose to use a NIF and dirty schedulers for this, as 1) the Erlang driver facility was designed specifically for this kind of problem, and 2) I'm the person who wrote the dirty schedulers for the Erlang VM, and so I feel pretty confident saying they're the wrong approach for this problem because you end up having to reimplement what the driver API already gives you. --steve On Tue, Oct 7, 2014 at 10:58 PM, Jihyun Yu <yjh0502@xxxxxxxxx> wrote: > Just FYI, I also made erlang nanomsg bindings with erlang NIF & dirty > schedulars. > > https://github.com/yjh0502/nanomsg-erlang > > Biggest issue I encountered while implementing binding is abort() from > nanomsg library. Nanomsg library calls abort() when it detects invalid or > unexpected state [1], and It will kill erlang VM without giving chance to > recover error. > > [1] https://github.com/nanomsg/nanomsg/issues/307 > > > > On Wed, Oct 8, 2014 at 11:41 AM, Steve Vinoski <vinoski@xxxxxxxx> wrote: > >> I've built an Erlang port driver around the nanomsg C library, available >> here: >> >> https://github.com/basho/enm >> >> It's new and so it still lacks some features, may still undergo API >> changes, etc. It's currently based on a recent commit of nanomsg (742e46d). >> >> Of course it would also be possible to reimplement nanomsg capabilities >> and semantics in pure Erlang, and this effort does not preclude that, but I >> figured wrapping the C library was a faster and more easily maintainable >> way to let Erlang applications use nanomsg. >> >> Feedback, issues, and pull requests welcomed. >> >> --steve >> > >