-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #9 from 0xPolygonZero/zbrown/update-docs
Add badges to README
- Loading branch information
Showing
2 changed files
with
52 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
# Paladin | ||
|
||
Bringing divine order to distributed computation. | ||
|
||
[![Crates.io version](https://img.shields.io/crates/v/paladin-core.svg?style=flat-square)](https://crates.io/crates/paladin-core) | ||
[![docs.rs docs](https://img.shields.io/badge/docs-latest-blue.svg?style=flat-square)](https://docs.rs/paladin-core) | ||
|
||
## Paladin in 2 sentences | ||
|
||
Paladin is a Rust library that aims to simplify writing distributed programs. It provides a declarative API, allowing developers to articulate their distributed programs clearly and concisely, without thinking about the complexities of distributed systems programming. | ||
|
||
## Features | ||
- **Declarative API**: Express distributed computations with clarity and ease. | ||
- **Automated Distribution**: Paladin’s runtime seamlessly handles task | ||
distribution and execution across the cluster. | ||
- **Simplified Development**: Concentrate on the program logic, leaving the complexities of distributed systems to Paladin. | ||
- **Infrastructure Agnostic**: Paladin is generic over its messaging backend and infrastructure provider. Bring your own infra! | ||
|
||
## Example | ||
Below is a (contrived) example of how a typical Paladin program looks. | ||
|
||
```rust | ||
#[tokio::main] | ||
async fn main() { | ||
let stream = IndexedStream::from([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); | ||
// Compute the fibonacci number at each element in the stream. | ||
let fibs = stream.map(FibAt); | ||
// Sum the fibonacci numbers. | ||
let sum = fibs.fold(Sum); | ||
|
||
// Run the computation. | ||
let result = sum.run(&runtime).await.unwrap(); | ||
assert_eq!(result, 143); | ||
} | ||
``` | ||
In this example program, we define an algorithm for computing the fibonacci number at each element in a stream, after which we sum the results. Behind the scenes, Paladin will distribute the computations across the cluster and return the result back to the main thread. | ||
|
||
## License | ||
|
||
Licensed under either of | ||
|
||
* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) | ||
* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) | ||
|
||
at your option. | ||
|
||
|
||
### Contribution | ||
|
||
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. |