Codeflow is a young project. Many of its features are currently in the pipeline and are aimed at making Codeflow more powerful and easy to use.
Groups are a way to group multiple steps into one logical group. Groups can be considered as an anonymous flow and can simplify looping constructs and event handlers, without needing to create separate flows.
Groups can provide better iterations without using separate sub flows, improved error handling especially across parallel paths, and support anonymous event handler logic.
First version of Codeflow shipped without variables. Having no state means no data races and opens up possibility for providing seamless parallel and distributed computing. An in-memory, persistent data storage is in the pipeline, that will allow update and access even across distributed, parallel processes.
Improving JIT compiler
However since Codeflow is typed, it opens up possibilities of even further optimizations, using specifications like asm.js and web assembly, which can makes use of type hints to generate code that runs even faster than native Node.js applications.
Currently a trigger listens on a single process. Clustering support will let a trigger spawn multiple processes with listener started on each one of them. This will let developers make efficient use of multi-core environments without additional effort.
One use case of clustering is improving HTTP listener performance. Even though the single threaded event loop model can scale to hundreds of connections, sometimes it might be necessary to have more than one listener per engine. With clustered listeners, the listeners will spawn worker processes seamlessly to distribute the work load efficiently on multi-core machines.
Writing parallel code requires manual effort from a programmer. In most of the programming platforms that allow mutable state, creating programs that work in parallel is a daunting task.
Codeflow, since being highly modular and asynchronous can achieve true parallelism by spawning worker processes (under V8, and using threads if available in other platforms) or using a pool of workers and serializing data in and out of it for executing each step. Since there are is no mutable state, you don't need to worry about data races or keeping the data synchronized.
One advantage of multi-process code is that it could be extended to make use of distributed instances across a network. When sending serialized data to another process, there is no major difference as far as Codeflow is concerned whether the execution happens on the same machine or another machine. Instead of sending data via IPC, it could be send across network.
There are many more quite significant features that are in the pipeline, like improved IDE, themes, plugins, improved schema editing, performance improvements, running on other platforms such as Arduino etc.
Sign up for our mailing list to keep track of the new features and other major announcements.