I’m interested in using Elixir as a control language for managing data streams across and between various external applications and libraries. I can tolerate the latency of Erlang Ports and don’t want the development complexity of well behaved IO intensive NIFs.
I’m looking at two projects that appear helpful:
Does anyone have experience with either or preferably both of these projects that could lend some insights into picking between the two?
I found this to be a pretty insightful demonstration of Porcelain usage (thx John): https://github.com/johnwahba/vdemo2017
I found erlexec more featureful, but porcelain was also new at the time. Regardless you probably want the extra compiled file that both offer to make it more reliable.
Don’t use either if you control what your Port is controlling though, you really only need those to interact with programs that, for example, don’t close when their stdin closes and so forth. Basically if you are writing your Port program, just use Port directly; if you are using someone else’s program as a Port and not your own, then use a wrapper like that if they are not good stdin citizens. ^.^
I agree with the extra compiled file statement. The vdemo Porcelain project was pretty broken without installing the extra goon add-on. Porcelain fell back to some compatibility mode but didn’t function properly. I haven’t tried Erlexec yet. Does someone have an easy to consume idiomatic Erlexec project they could point me to?
Maybe I should port vdemo to Erlexec and see how that goes.
It would appear that Erlexec’s add-on ships with Erlexec and is C++ without an additional Go dependency. The Go dependency might not be the end of the world, but it is something to consider I guess.