Thanks for your feedback. However I am trying to run the existing nodejs tests using "action loop" and I see it is mostly compatible.
The "action loop" proxy reports errors at init time in the answer not on the logs, but I fixed tests for that. Also the only "real" incompatibility is in the fact that I use typescript import to include a multi file action, while nodejs uses (at least I think) some sort of eval. So you do not have to do "export.main = function(args)" but just "function main(args)". With my runtime you can omit the export only with a single file action (because I fix the source on the fly and then I compile it with typescript). Since the recommended way of doing that in typescript is to use "import" I would keep this way and skip those tests. So I am going to submit the typescript runtime as a patch to the nodejs runtime repo, with name action-typescript-v3.7, and document those (small) difference. Thoughts? -- Michele Sciabarra mich...@sciabarra.com ----- Original message ----- From: Dascalita Dragos <ddrag...@gmail.com> To: dev@openwhisk.apache.org Subject: Re: Requesting feedback about the new typescript runtime Date: Friday, January 10, 2020 3:33 AM Thanks for the details Rodric. I’m then +1 for a dedicated repo. On Thu, Jan 9, 2020 at 5:18 PM Rodric Rabbah <rod...@gmail.com> wrote: > It wasn’t done previously because there was no advantage - the go proxy > lead to performance gains for the python runtime and a few others iirc but > was the same for node. There was also no support for intra container > concurrency. > > -r > > > On Jan 9, 2020, at 8:04 PM, Dascalita Dragos <ddrag...@gmail.com> wrote: > > > > The argument that the way this new runtime is constructed is very > different > > from the existing nodejs one, seems a strong one in my opinion to > consider > > a dedicated repo. > > > > The unclear part to me is whether it would make sense to consider > applying > > the “action loop” pattern to the existing NodeJs Runtime. Are there any > > thoughts on this ? > > > > > > > > > > > >> On Wed, Jan 8, 2020 at 12:43 PM Michele Sciabarra < > mich...@sciabarra.com> > >> wrote: > >> > >> Hello, > >> I developed a new openwhisk runtime with native support for typescript > as > >> part of my work at Nimbella and I intend to donate this code the Apache > >> Openwhisk project. The new runtime works for node/javascript as well. > Since > >> typescript is compiled, I reused the compilation support from the > "action > >> loop" proxy. This runtime is intended as a new action kind, which can > >> support both node and typescript. > >> This email is to solicit feedback for the next 48 hrs on the question of > >> new repo vs reuse the existing repo for node.js. I will decide based on > >> community feedback and follow up with the next steps. > >> Features of the new runtime: > >> - supports precompilation, meaning you use the runtime as a compiler to > >> "precompile" the sources. Compilation here means translating typescript > to > >> javascript, resolve the package.json downloading all the node_modules > and > >> producing a zip that includes everything ready to run. > >> You do this with a command like: > >> > >> docker run openwhisk/action-typescript-v3.7 <src.zip >bin.zip > >> > >> then you can create the action using bin.zip. > >> - supports on the fly compilation, so that an action made up of > typescript > >> sources will also work. > >> - supports debugging, but in a different way than adobe/wskdebug. If you > >> set an environment variable __OW_DEBUG_PORT it will start the runtime > >> listening on a port for a debugger to attach. > >> > >> - an action must always "export" the main function. So in typescript you > >> need to do: `export function main(args) { .. }' and in javascript > >> `export.main = function args(...)`. I did manage to make sure a single > file > >> with 'function main(args)' works but it does not work when there are > >> multiple files zipped. I think the current apache openwhisk nodejs > runtime > >> uses eval, I use a `require` to import action code. > >> > >> Since this is a new language runtime (typescript) and also differs in > the > >> node.js support from the existing apache openwhisk nodejs runtime, I am > >> proposing a new apache repo to host this code. It's possible to include > the > >> new sources in the existing node.js runtime repo to avoid adding yet > >> another repository, but may be confusing since the code base is very > >> different. > >> > >> -- > >> Michele Sciabarra > >> mich...@sciabarra.com > >> >