Planned features

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.

Variables

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

There is a just-in-time compiler available under an optional flag in Codeflow engine. The JIT compiler compiles flows into JavaScript. This provides performance almost as good as native Node.js applications.

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.

Clustered triggers

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.

Parallel computing

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.

Distributed computing

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.

Many more

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.