Introduction

Dagrs is suitable for the execution of multiple tasks with graph-like dependencies. dagrs has the characteristics of high performance and asynchronous execution.

Welcome to Dagrs! Dagrs is an easy-to-use, high-performance asynchronous task programming framework written in Rust. Dagrs follows the concept of Flow based Programming, and aims to provide users with convenient programming interface.

Open Source Philosophy

Dagrs is proudly open-source! ๐ŸŽ‰ We believe in creating an accessible, collaborative platform that thrives on community contributions.

Contribute:

Interested in helping us improve? Check out our Dagrs to get started! From feature suggestions to bug fixes, all contributions are welcome.

Project Overview

Flow based Programming

Flow-based Programming was invented by J. Paul Morrison in the early 1970s. It was initially implemented in software for a Canadian bank. Over the years, itโ€™s had various names but has always maintained its core principles of reducing development time and managing processes efficiently.

Dagrs's role in your project

When you orchestrate multitasking applications asynchronously, you can make them scale better by reducing the cost of performing multiple operations simultaneously. However, writing correct asynchronous code and managing communication between different tasks is annoying. Dagrs provides convenient task abstraction and asynchronous running & communication mechanisms to reduce development costs.

Key Features

FeatureDescription
"Black box" ProcessesEncapsulated processes and information packets.
Independent Network ConstructionThe external definition of connections.
AsynchronismAsynchronous execution of processes and asynchronous communication.
Ownership and LifetimeInformation packets with unique ownership and lifetime.
Bounded and Finite ConnctionConnections between processes are bounded, with a finite capacity.
Reverse PressureCongestion control when there are too many packets.

Technology & Libraries

Dagrs leverages cutting-edge technologies to ensure functionality and performance:

  • Rust - A language empowering everyone to build reliable and efficient software.
  • tokio - An event-driven, non-blocking I/O platform for writing asynchronous I/O backed applications.
  • async_trait - Type erasure for async trait methods.