openwhisk-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Carlos Santana <csantan...@gmail.com>
Subject Re: Completed support for GoLang actions (and more...)
Date Sun, 22 Apr 2018 23:52:17 GMT
This is excellent Michele thanks for the contributions. +1

I certainly will be reviewing the PRs.

I will help out looking into Codable Swift using the new goproxy

I was giving talk this week at a Meetup and mentioned the on going work on
the new go support and there were a few folks very excited about it.

— Carlos

On Sun, Apr 22, 2018 at 4:54 PM Michele Sciabarra <openwhisk@sciabarra.com>
wrote:

> Hello all,
>
> I am happy to announce I have closed my "TODO" list for Go Actions (and
> more) providing unit tests in ScalaTests for the images I created.
>
> It has been a long journey, but I recap what I accomplished so far:
>
> 1. developed a new "actionloop" protocol allowing for high performing
> binary actions. It basically  works reading json line by line in stdin,
> outputting in fd3, with logs in stdout and stderr
> 2. The image "actionloop" implements a replacement of the python proxy in
> go implementing this protocol. Note it works also for bash actions and
> generic binaries. It is meant to replace (or complement) the docker skeleton
> 3. The image actionloop-golang supports action loops in GoLang. It accepts
> either binaries or source actions in the format as in [1].
> 4. The image actionloop-swift supports action loops in Swift. It accepts
> either binaries or source actions in the format as in [2]
> 5. As a side effect, I defined (and implemented) a "compiler" protocol for
> using the runtimes as offline compilers to resolve the warm start problem.
> Basically the images are also usable as standalone compilers. I used this
> feature in tests, but it can be also leveraged, for example, in wskdeploy
>
> Where is all this stuff?
>
> 1. Submitted PR#8 for complete handover of the actionloop (aka goproxy) to
> incubator-openwhisk-runtime-go
> 2. Submitted PR#3 for handover of the swift support to
> incubator-openwhisk-runtime-swift/
> 3. Submitter PR#47 including tests for the images actionloop,
> actionloop-golang-v1.9, actionloop-swift-v4.1
>
> The 3 PR should be reviewed and merged in order but I have checked they
> should merge cleanly. Luckily they are not so big because the biggest one
> (the first) has been already reviewed.
>
> Now, I think I should focus on writing documentation for this stuff. I can
> present it to the next interchange meeting.
>
>
> [1] Example of Action in GoLang:
> package action
>
> import (
>     "encoding/json"
>     "fmt"
> )
>
> func Main(event json.RawMessage) (json.RawMessage, error) {
>     var obj map[string]interface{}
>     json.Unmarshal(event, &obj)
>     name, ok := obj["name"].(string)
>     if !ok {
>         name = "Stranger"
>     }
>     fmt.Printf("name=%s\n", name)
>     msg := map[string]string{"message": ("Hello, " + name + "!")}
>     return json.Marshal(msg)
> }
>
> [2] Example of Action in Swift:
> func main(args: [String:Any]) -> [String:Any] {
>     if let name = args["name"] as? String {
>         print(name)
>         return [ "main" : "Hello \(name)!" ]
>     } else {
>         return [ "main" : "Hello swif4!" ]
>     }
> }
> --
>   Michele Sciabarra
>   openwhisk@sciabarra.com
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message