Hello, I just submitted a PR for a pretty large amount of work I did to 
stabilize the OpenWhisk runtime for Go.

The user-visible changes are:

- updated the runtime to golang 1.11
- changed the signature of actions to "func Main(args map[string]interface{}) 
map[string]interface{}"
- implemented all the mandatory tests for runtimes, both to GoLang and "pure" 
ActionLoop (with shell scripts)
- the runtime can still be used as a compiler to precompile and redure the 
startup time, but now in a simpler way as a filter (no more volume mounts)
- In the tests, there are also examples showing the base runtime (the action 
loop) is also a good runtime for shell script

Under the hood, I did a lot of work:

- internally now the compiler is a python script, no more a shell script, 
easier to understand an maintain
- I use now the same code to process the action at init and when I use the 
runtime as a compiler
- the compiler is now compiling also packages and vendor folder
- I optimized code in many places to avoid converting byte in string and 
copying files
- I fixed a lot of bugs that emerged trying to implement the test, everything 
from Unicode handling to environment  variables to unexpected limits in buffers 
and so on
- I also refactored tests to be easier to maintain (I had since I run them a 
lot of times)

The runtime is really very general, not just for Go. Just a python script,  a 
docker file, and an "epilogue" file should allow supporting a lot of languages, 
and I hope to release some interesting developments I have in mind in the next 
few months.  At least I will complete soon the Swift runtime I promised Carlos 
and the work I did is also making easier to support more languages. And also be 
used alone as a basis as an alternative to the dockerskeleton.  Examples in the 
unit tests shows this usage and the runtime passes those tests even without 
golang (just using bash).


-- 
  Michele Sciabarra
  [email protected]

Reply via email to