iridis
iridis is a framework that allows you to define and build dataflow applications with ease.
It consists of two main APIs:
iridis-node: the primary API used to implement each node in the dataflow graph.iridis: theruntimeAPI responsible for loading all nodes and launching the application.
In addition, we provide two plugin APIs:
iridis-file-ext: the plugin API for handling file extensions. It defines how the runtime should load files with specific extensions.iridis-url-scheme: the plugin API for handling URL schemes. It defines how the runtime should load URLs with specific schemes.
Each plugin can be loaded into the iridis runtime upon initialization.
See the official wiki for more information.
Usage
In a lib crate, you can define a node like this:
use ;
Next, create a layout and define the flows for the application:
use ;
async
Finally, create a runtime, load your plugins, and load a node implementation for each node in the layout:
let runtime = new
.await?;
runtime
.run
.await
}
In this example, three nodes are loaded as statically linked libraries. However, it’s also possible to load a node dynamically from a URL. The node must be compiled as a cdylib with the cdylib feature flag enabled:
loader.load_url
.await?;
For a complete example of a project with multiple nodes—both statically linked and dynamically loaded—see iridis-benchmark.
Examples
Multiple examples can be found in this directory and can be launched with just:
Example of full layouts, ready to be put inside the runtime
Example of message definitions
Example of nodes implementation
Example of applications
Python
It's possible to write your nodes in python. You will need to add the PythonFileExt plugin into your runtime to be able to load a .py file. See
pyridis for a detailed description of the python support.
Benchmark
See iridis-benchmark for a detailed description of the benchmark.