66[ ![ documentation] ( https://img.shields.io/docsrs/pregel-rs/latest )] ( https://docs.rs/pregel-rs/latest/pregel_rs/ )
77
88` pregel-rs ` is a Graph processing library written in Rust that features
9- a Pregel-based Framework for implementing your own algorithms in a
10- message-passing fashion. It is designed to be efficient and scalable,
9+ a Pregel-based Framework for implementing your own algorithms in a
10+ message-passing fashion. It is designed to be efficient and scalable,
1111making it suitable for processing large-scale graphs.
1212
1313## Features
1414
1515- _ Pregel-based framework_ : ` pregel-rs ` is a powerful graph processing model
16- that allows users to implement graph algorithms in a message-passing fashion,
17- where computation is performed on vertices and messages are passed along edges.
18- ` pregel-rs ` provides a framework that makes it easy to implement graph
19- algorithms using this model.
16+ that allows users to implement graph algorithms in a message-passing fashion,
17+ where computation is performed on vertices and messages are passed along edges.
18+ ` pregel-rs ` provides a framework that makes it easy to implement graph
19+ algorithms using this model.
2020
21- - _ Rust-based implementation_ : ` pregel-rs ` is implemented in Rust, a systems
22- programming language known for its safety, concurrency, and performance.
23- Rust's strong type system and memory safety features help ensure that ` pregel-rs `
24- is robust and reliable.
21+ - _ Rust-based implementation_ : ` pregel-rs ` is implemented in Rust, a systems
22+ programming language known for its safety, concurrency, and performance.
23+ Rust's strong type system and memory safety features help ensure that ` pregel-rs `
24+ is robust and reliable.
2525
2626- _ Efficient and scalable_ : ` pregel-rs ` designed to be efficient and scalable,
27- making it suitable for processing large-scale graphs. It uses parallelism and
28- optimization techniques to minimize computation and communication overhead,
29- allowing it to handle graphs with millions or even billions of vertices and edges.
30- For us to achieve this, we have built it on top of [ polars] ( https://github.com/pola-rs/polars )
31- a blazingly fast DataFrames library implemented in Rust using Apache Arrow
32- Columnar Format as the memory model.
33-
34- - _ Graph abstraction_ : ` pregel-rs ` provides a graph abstraction that makes
35- it easy to represent and manipulate graphs in Rust. It supports both directed and
36- undirected graphs, and provides methods for adding, removing, and querying vertices
37- and edges.
27+ making it suitable for processing large-scale graphs. It uses parallelism and
28+ optimization techniques to minimize computation and communication overhead,
29+ allowing it to handle graphs with millions or even billions of vertices and edges.
30+ For us to achieve this, we have built it on top of [ polars] ( https://github.com/pola-rs/polars )
31+ a blazingly fast DataFrames library implemented in Rust using Apache Arrow
32+ Columnar Format as the memory model.
33+
34+ - _ Graph abstraction_ : ` pregel-rs ` provides a graph abstraction that makes
35+ it easy to represent and manipulate graphs in Rust. It supports both directed and
36+ undirected graphs, and provides methods for adding, removing, and querying vertices
37+ and edges.
3838
3939- _ Customizable computation_ : ` pregel-rs ` allows users to implement their own
40- computation logic by defining vertex computation functions. This gives users the
41- flexibility to implement their own graph algorithms and customize the behavior
42- of ` pregel-rs ` to suit their specific needs.
40+ computation logic by defining vertex computation functions. This gives users the
41+ flexibility to implement their own graph algorithms and customize the behavior
42+ of ` pregel-rs ` to suit their specific needs.
4343
4444## Getting started
4545
4646To get started with ` pregel-rs ` , you can follow these steps:
4747
48481 . _ Install Rust_ : ` pregel-rs ` requires Rust to be installed on your system.
49- You can install Rust by following the instructions on the official Rust website:
50- https://www.rust-lang.org/tools/install
49+ You can install Rust by following the instructions on the official Rust website:
50+ https://www.rust-lang.org/tools/install
5151
52522 . _ Create a new Rust project_ : Once Rust is installed, you can create a new Rust
53- project using the Cargo package manager, which is included with Rust. You can
54- create a new project by running the following command in your terminal:
53+ project using the Cargo package manager, which is included with Rust. You can
54+ create a new project by running the following command in your terminal:
5555
5656``` sh
5757cargo new my_pregel_project
5858```
5959
60- 3 . _ Add ` pregel-rs ` as a dependency_ : Next, you need to add ` pregel-rs ` as a
61- dependency in your ` Cargo.toml ` file, which is located in the root directory
62- of your project. You can add the following line to your ` Cargo.toml ` file:
60+ 3 . _ Add ` pregel-rs ` as a dependency_ : Next, you need to add ` pregel-rs ` as a
61+ dependency in your ` Cargo.toml ` file, which is located in the root directory
62+ of your project. You can add the following line to your ` Cargo.toml ` file:
6363
6464``` toml
6565[dependencies ]
66- pregel-rs = " 0.0.11 "
66+ pregel-rs = " 0.0.12 "
6767```
6868
69694 . _ Implement your graph algorithm_ : Now you can start implementing your graph
70- algorithm using the ` pregel-rs ` framework. You can define your vertex computation
71- functions and use the graph abstraction provided by ` pregel-rs ` to manipulate the graph.
70+ algorithm using the ` pregel-rs ` framework. You can define your vertex computation
71+ functions and use the graph abstraction provided by ` pregel-rs ` to manipulate the graph.
7272
73735 . _ Build and run your project_ : Once you have implemented your graph algorithm, you
74- can build and run your project using the Cargo package manager. You can build your
75- project by running the following command in your terminal:
74+ can build and run your project using the Cargo package manager. You can build your
75+ project by running the following command in your terminal:
7676
7777``` sh
7878cargo build
@@ -87,14 +87,14 @@ cargo run
8787## Acknowledgments
8888
8989Read [ Pregel: A System for Large-Scale Graph Processing] ( https://15799.courses.cs.cmu.edu/fall2013/static/papers/p135-malewicz.pdf )
90- for a reference on how to implement your own Graph processing algorithms in a Pregel fashion. If you want to take some
90+ for a reference on how to implement your own Graph processing algorithms in a Pregel fashion. If you want to take some
9191inspiration from some curated-sources, just explore the [ /examples] ( https://github.com/angelip2303/graph-rs/tree/main/examples )
9292folder of this repository.
9393
9494## Related projects
9595
96- 1 . [ GraphX] ( https://github.com/apache/spark/tree/master/graphx ) is a library enabling Graph processing in the context of
97- Apache Spark.
96+ 1 . [ GraphX] ( https://github.com/apache/spark/tree/master/graphx ) is a library enabling Graph processing in the context of
97+ Apache Spark.
98982 . [ GraphFrames] ( https://github.com/graphframes/graphframes ) is the DataFrame-based equivalent to GraphX.
9999
100100## License
@@ -108,11 +108,11 @@ the Free Software Foundation, either version 3 of the License, or
108108
109109This program is distributed in the hope that it will be useful,
110110but WITHOUT ANY WARRANTY; without even the implied warranty of
111- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
111+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
112112GNU General Public License for more details.
113113
114114You should have received a copy of the GNU General Public License
115- along with this program. If not, see < https://www.gnu.org/licenses/ > .
115+ along with this program. If not, see < https://www.gnu.org/licenses/ > .
116116
117117** By contributing to this project, you agree to release your
118118contributions under the same license.**
0 commit comments