-
Notifications
You must be signed in to change notification settings - Fork 45
Home
Welcome to the Porcelain wiki!
Keep in mind that ideas that are not yet implemented aren't final. Some of the lower level details can be changed during implementation.
Porcelain aims to provide a simple API in Elixir on top of Erlang ports. It can
also augment the capabilities of Erlang ports by using the middleman program
called goon
.
Specifically, the features Porcelain should implement are:
-
simple API for spawning external processes (wrapping Erlang port functions)
-
being able to interact with "eof-driven" programs (those are programs that don't produce output before they reach EOF in the input; they don't work with bare ports); see this discussion for background story
-
sending signals to external processes
Below are some advanced features that may or may not be implemented at a later stage. Those are described here just for the sake of completeness. The current goal is to produce a working library ASAP with basic functionality described above.
-
chaining multiple external processes in a portable way (supporting POSIX and Windows platforms)
-
integrating external programs into an Elixir supervision tree
-
inspecting running OS processes
-
multiplexing multiple external processes onto a single running instance of
goon
(to avoid doubling the total amount of external processes spawned from Elixir when usinggoon
; also, to provide additional features by using process groups, etc.)