Continuing on my earlier post about the native function interface, and
following up on the latest changes as suggest by Vadim, i wanted to also point
out that the /init protocol today is synchronous, whereas to do validation on
the binary or to exec a new process, it’s worth considering an asynchronous
handoff.
So one thought is to augment the protocol to allow /init to initiate the new
binary (load it, exec it) and a /ready to poll which waits for a response. This
bring you closer to the original prototype where you exec’ed the binary.
It also makes for a consistent protocol for a native Functions with their own
builtin proxy (go, swift, rust, and also has less copying of data at runtime),
and later can be adapted for a native function like a bash script which needs a
proxy to relay payloads and results.
The /init equivalent for the latter is starting the script, and /ready is
waiting for {openwhisk: 1}.
-r