[nanomsg] Re: Erlang nanomsg driver

  • From: "Garrett D'Amore" <garrett@xxxxxxxxxx>
  • To: "nanomsg@xxxxxxxxxxxxx" <nanomsg@xxxxxxxxxxxxx>
  • Date: Tue, 7 Oct 2014 22:30:04 -0700

One of these days soon I need to learn erlang.  :-)  Maybe I'll tackle an
erlang native port same as I did for go.  (I am completely enamored of Go,
but I recognize that its not appropriate for all situations. :-)

On Tue, Oct 7, 2014 at 9:11 PM, Jihyun Yu <yjh0502@xxxxxxxxx> wrote:

> You're right, I already encountered problems with NIF. There was no
> erlang nanomsg driver when I needed one, and I used NIF because
> I had an experience on it.
>
> On Tue, Oct 07, 2014 at 11:31:43PM -0400, Steve Vinoski wrote:
> > 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
> > >>
> > >
> > >
>
>

Other related posts: