Skip to content

Commit 8c7f507

Browse files
191220029genedna
authored andcommitted
Update README.md
1 parent 889b6de commit 8c7f507

File tree

1 file changed

+29
-49
lines changed

1 file changed

+29
-49
lines changed

README.md

Lines changed: 29 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,45 @@
11
# Dagrs
22

3-
`dagrs` are suitable for the execution of multiple tasks with graph-like dependencies. `dagrs` has the characteristics of high performance and asynchronous execution. It provides users with a convenient programming interface.
3+
Welcome to **Dagrs**! Dagrs is an easy-to-use, high-performance asynchronous task programming framework written in Rust.
4+
Dagrs follows the concept of Flow based Programming, and aims to provide users with convenient programming interface.
45

5-
The development of `dagrs` follows the concept of Flow-based Programming.
6+
[Website](https://dagrs.com/) | [Guides](https://dagrs.com/docs/getting-started/introduction) | [Chat](https://discord.gg/4JzaNkRP)
67

7-
## Flow-based Programming
8+
## Project Overview
89

9-
Flow-based Programming (FBP) 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.
10+
### Dagrs's role in your project
1011

11-
FBP treats applications as networks of 'black box' processes that communicate by sending and receiving data, referred to as Information Packets, over predefined connections. It’s a component-oriented approach that fits well with modular software architecture.
12+
When you orchestrate multitasking applications asynchronously, you can make them scale better by reducing the cost of performing multiple operations simultaneously.
13+
However, writing correct asynchronous code and managing communication between different tasks is annoying.
14+
Dagrs provides convenient task abstraction and asynchronous running & communication mechanisms to reduce development costs.
1215

13-
FBP features
14-
15-
- Encapsulated processes and information packets.
16-
- The external definition of connections
17-
- Asynchronous
18-
- Information packets with unique ownership and defined lifetimes
19-
- Bounded connections with a finite capacity and reserve pressure.
20-
21-
## What can `dagrs` do
22-
23-
`dagrs` allows users to easily execute multiple sets of tasks with complex graph dependencies. It only requires:
24-
The user defines tasks and specifies the dependencies of the tasks, and `dagrs` can execute the tasks sequentially in the topological sequence of the graph.
25-
For example:
26-
27-
```mermaid
28-
flowchart LR
29-
A((Task a))-->B
30-
A-->C
31-
B((Task b))-->D
32-
C((Task c))-->D
33-
B-->F
34-
C-->E
35-
D((Task d))-->G
36-
E((Task e))-->G
37-
F((Task f))-->G((Task g))
38-
```
16+
The development of `dagrs` follows the concept of Flow-based Programming.
3917

40-
This graph represents the dependencies between tasks, and the graph composed of tasks must satisfy two points:
18+
### Flow based Programming
19+
[Flow-based Programming](https://en.wikipedia.org/wiki/Flow-based_programming)(FBP) was invented by J. Paul Morrison in the early 1970s. It was initially implemented in software for a Canadian bank.
20+
Over the years, it’s had various names but has always maintained its core principles of reducing development time and managing processes efficiently.
4121

42-
- A graph allows only one point with zero in-degree and zero out-degree(Only one start task and one end task are allowed).
22+
FBP treats applications as networks of 'black box' processes that communicate by sending and receiving data, referred to as Information Packets, over predefined connections. It’s a component-oriented approach that fits well with modular software architecture.
4323

44-
- The graph itself is directed, and the user must ensure that there are no loops in the graph, that is, the dependencies of tasks cannot form a closed loop, otherwise the engine will refuse to execute all tasks, for example:
24+
### Key Features of FBP
4525

46-
```mermaid
47-
flowchart LR
48-
A-->C
49-
A((Task a))-->B
50-
subgraph "Task b, c, and d form a loop"
51-
B((Task b))-->C
52-
C((Task c))-->D
53-
D((Task d))-->B
54-
end
55-
```
26+
| **Feature** | **Description** |
27+
|-------------------------------|----------------------------------------------------------|
28+
| "Black box" Processes | Encapsulated processes and information packets. |
29+
| Independent Network Construction |The external definition of connections.|
30+
| Asynchronism | Asynchronous execution of processes and asynchronous communication. |
31+
| Ownership and Lifetime | Information packets with unique ownership and lifetime. |
32+
| Bounded and Finite Connction| Connections between processes are bounded, with a finite capacity.|
33+
| Reverse Pressure | Congestion control when there are too many packets. |
5634

57-
Among them, each task may produce output, and may also require the output of some tasks as its input.
5835

36+
## Technology & Libraries
5937

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

40+
- **[Rust](https://www.rust-lang.org/)** - A language empowering everyone to build reliable and efficient software.
41+
- **[tokio](https://crates.io/crates/tokio)** - An event-driven, non-blocking I/O platform for writing asynchronous I/O backed applications.
42+
- **[async_trait](https://crates.io/crates/async-trait)** - Type erasure for async trait methods.
6143

6244

6345
## Contribution
@@ -117,11 +99,9 @@ Freighter is licensed under this Licensed:
11799

118100
## Contact us
119101

120-
Quanyi Ma (email: [email protected])
121-
122-
Xiaolong Fu (email: [email protected])
102+
123103

124104
### Discord
125105

126-
Welcome to join our discord channel https://discord.gg/z3d7d26U
106+
Welcome to join our discord channel https://discord.gg/4JzaNkRP
127107

0 commit comments

Comments
 (0)