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