Skip to content
Alexei Sholik edited this page Jun 19, 2014 · 11 revisions

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.

Project goals

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 using goon; also, to provide additional features by using process groups, etc.)

Spec pages

Clone this wiki locally