> What might an ideal IPC API look like to you?
Erlang's internal IPC is doing it pretty well since before there was a Linux kernel. I don't know if that approach can be ported into the kernel and how complex they are behind the scenes, but spawn / send / receive are apparently simple concepts.
In Erlang: http://erlang.org/doc/getting_started/conc_prog.html#id68696
In Elixir: http://elixir-lang.org/getting-started/processes.html