blitzar/lib.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
// Copyright 2023-present Space and Time Labs, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Refuse to compile if documentation is missing.
#![deny(missing_docs)]
//! <p align="center">
//! <picture>
//! <source media="(prefers-color-scheme: dark)" width="200px" srcset="https://raw.githubusercontent.com/spaceandtimelabs/blitzar-rs/assets/logo_dark_background.png">
//! <source media="(prefers-color-scheme: light)" width="200px" srcset="https://raw.githubusercontent.com/spaceandtimelabs/blitzar-rs/assets/logo_light_background.png">
//! <img alt="Blitzar" width="200px" src="https://raw.githubusercontent.com/spaceandtimelabs/blitzar-rs/assets/logo_light_background.png">
//! </picture>
//! </p>
//! <p align="center">
//! <a href="https://crates.io/crates/blitzar">
//! <img alt="crates.io version" src="https://img.shields.io/crates/v/blitzar.svg">
//! </a>
//! <a href="https://www.rust-lang.org/">
//! <img alt="Rust" src="https://img.shields.io/badge/rust-1.80-blue">
//! </a>
//! <a href="https://developer.nvidia.com/cuda-downloads">
//! <img alt="CUDA" src="https://img.shields.io/badge/CUDA-12.6.1-green?style=flat&logo=nvidia">
//! </a>
//! <a href="https://github.com/spaceandtimelabs/blitzar-rs">
//! <img alt="Build states" src="https://github.com/spaceandtimelabs/blitzar-rs/actions/workflows/release.yml/badge.svg">
//! </a>
//! </p>
//!
//! High-Level Rust wrapper for the `blitzar-sys` crate.
//! For the Rust sys-crate and the C++ repo, check
//! [here](https://github.com/spaceandtimelabs/blitzar).
//!
//! ## Considerations:
//!
//! 1. The current library only supports `x86_64` architectures and only the Linux operating system.
//! 2. The library was tested in the `ubuntu22.04` Linux environment.
//! 3. Consider using `docker` or a virtual machine.
//! 4. You must have the latest Rust environment installed in your Linux machine. Download [here](https://www.rust-lang.org/tools/install).
//!
//! ## Use
//!
//! Add the following two lines to your `Cargo.toml` file:
//! ```text
//! [dependencies]
//! blitzar = <version_number>
//! ```
//!
//! Import the necessary modules to your rust code:
//! ```text
//! extern crate blitzar;
//!
//! use blitzar::sequence::*;
//! use blitzar::compute::*;
//! ```
//!## Examples
//!
//!All the examples are located in the `examples/` directory. Each one has its own `.rs` file. To run some example, use the following command:
//!
//!```text
//! cargo run --features <cpu|gpu> --example <example_name>
//!```
//!
//! ## Tests
//! ```text
//! cargo test
//! ```
//! ## Benchmarks
//! Benchmarks are run using [criterion.rs](https://github.com/bheisler/criterion.rs):
//! ```text
//! cargo bench --features gpu
//! ```
//------------------------------------------------------------------------
// blitzar public modules
//------------------------------------------------------------------------
// Wrappers for data table
pub mod sequence;
// Responsible for all computations (commitments and generator computation)
pub mod compute;
// Responsible for all proof primitives
pub mod proof;