diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml new file mode 100644 index 0000000..4735738 --- /dev/null +++ b/.github/workflows/release-please.yml @@ -0,0 +1,33 @@ +name: Release Please🙏! + +permissions: + contents: write + pull-requests: write + +on: + push: + branches: + - main +jobs: + release-please: + runs-on: ubuntu-latest + steps: + - uses: google-github-actions/release-please-action@v4 + id: release + with: + release-type: rust + - uses: actions/checkout@v4 + - name: tag major and minor versions + if: ${{ steps.release.outputs.release_created }} + run: | + git config user.name github-actions[bot] + git config user.email 41898282+github-actions[bot]@users.noreply.github.com + git remote add gh-token "https://${{ secrets.GITHUB_TOKEN }}@github.com/google-github-actions/release-please-action.git" + git tag -d v${{ steps.release.outputs.major }} || true + git tag -d v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} || true + git push origin :v${{ steps.release.outputs.major }} || true + git push origin :v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} || true + git tag -a v${{ steps.release.outputs.major }} -m "Release v${{ steps.release.outputs.major }}" + git tag -a v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} -m "Release v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }}" + git push origin v${{ steps.release.outputs.major }} + git push origin v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 01eed66..7445494 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,8 +12,8 @@ jobs: - uses: actions/checkout@v4 - uses: actions-rs/toolchain@v1 with: - toolchain: stable - override: true + toolchain: stable + override: true - uses: katyo/publish-crates@v2 with: - registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }} \ No newline at end of file + registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..e69de29 diff --git a/Cargo.lock b/Cargo.lock index 6e05674..a7937e2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -743,7 +743,7 @@ checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "jetstream" -version = "0.1.4" +version = "0.1.6" dependencies = [ "anyhow", "async-stream", @@ -782,7 +782,7 @@ dependencies = [ [[package]] name = "jetstream_p9" -version = "0.1.4" +version = "0.1.5" dependencies = [ "genfs", "jetstream_p9_wire_format_derive", @@ -794,7 +794,7 @@ dependencies = [ [[package]] name = "jetstream_p9_wire_format_derive" -version = "0.1.4" +version = "0.1.5" dependencies = [ "pretty_assertions", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index b5ceab0..da2eb55 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "jetstream" -version = "0.1.5" +version = "0.1.6" edition = "2021" description = "Jetstream is a RPC framework for Rust, based on the 9P protocol and QUIC." license = "BSD-3-Clause" diff --git a/README.md b/README.md index ba69f67..3f672f6 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ JetStream is not ready for production use. It's still in the early stages of dev - [capnproto](https://capnproto.org/) - [thrift](https://thrift.apache.org/) - [jsonrpc](https://www.jsonrpc.org/) -- [xmlrpc](http://xmlrpc.scripting.com/) +- [tarpc](https://crates.io/crates/tarpc) ## [License](LICENSE) diff --git a/rust-toolchain b/rust-toolchain index a62750b..89797d0 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1,3 +1,3 @@ [toolchain] -channel = "1.75" +channel = "1.76" components = [ "rustfmt", "clippy", "llvm-tools-preview" ] diff --git a/src/lib.rs b/src/lib.rs index 58d9870..416fc13 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,43 @@ -#![doc(html_logo_url = "https://raw.githubusercontent.com/sevki/jetstream/main/logo/JetStream.png")] -#![doc(html_favicon_url = "https://raw.githubusercontent.com/sevki/jetstream/main/logo/JetStream.png")] +//! +//! +//! # JetStream [![crates.io](https://img.shields.io/crates/v/jetstream.svg)](https://crates.io/crates/jetstream) [![docs.rs](https://docs.rs/jetstream/badge.svg)](https://docs.rs/jetstream) ![Build Status](https://github.com/sevki/jetstream/actions/workflows/rust.yml/badge.svg) ![Build Status](https://github.com/sevki/jetstream/actions/workflows/release.yml/badge.svg) +//! +//! +//! JetStream is an RPC framework built on top of [s2n-quic](https://crates.io/crates/s2n-quic) and [p9](https://crates.io/crates/p9). It's designed to be a high performance, low latency, secure, and reliable RPC framework. +//! +//! Features: +//! +//! - Bidirectional streaming +//! - 0-RTT +//! - [mTLS](https://github.com/aws/s2n-quic/tree/main/examples/s2n-mtls) +//! - binary encoding +//! +//! ## Motivation +//! +//! Building remote filesystems over internet, is the main motivation behind JetStream. +//! +//! ## Ready? +//! +//! JetStream is not ready for production use. It's still in the early stages of development. +//! +//! ## Alternatives +//! +//! - [grpc](https://grpc.io/) +//! - [capnproto](https://capnproto.org/) +//! - [thrift](https://thrift.apache.org/) +//! - [jsonrpc](https://www.jsonrpc.org/) +//! - [tarpc](https://crates.io/crates/tarpc) +//! +//! ## [License](LICENSE) +//! +//! BSD-3-Clause + +#![doc( + html_logo_url = "https://raw.githubusercontent.com/sevki/jetstream/main/logo/JetStream.png" +)] +#![doc( + html_favicon_url = "https://raw.githubusercontent.com/sevki/jetstream/main/logo/JetStream.png" +)] #![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] pub use jetstream_p9::protocol; @@ -7,9 +45,10 @@ pub use jetstream_p9::protocol; pub mod async_wire_format; pub mod log; -pub mod server; -pub mod service; -#[cfg(feature = "filesystem")] -pub mod filesystem; #[cfg(feature = "client")] pub mod client; +#[cfg(feature = "filesystem")] + +pub mod filesystem; +pub mod server; +pub mod service;