openvm_circuit_primitives/lib.rs
1//! This crate contains a collection of primitives for use when building circuits.
2//! The primitives are separated into two types: standalone
3//! [Air](openvm_stark_backend::p3_air::Air)s and [SubAir]s.
4//!
5//! The following modules contain standalone [Air](openvm_stark_backend::p3_air::Air)s:
6//! - [range]
7//! - [range_gate]
8//! - [range_tuple]
9//! - [var_range]
10//! - [xor]
11//!
12//! The following modules contain [SubAir]s:
13//! - [assert_less_than]
14//! - [bigint]
15//! - [bitwise_op_lookup]
16//! - [encoder]
17//! - [is_equal]
18//! - [is_equal_array]
19//! - [is_less_than]
20//! - [is_less_than_array]
21//! - [is_zero]
22
23// Allows our own derive macros to refer to `::openvm_circuit_primitives::...`
24// when expanded inside this crate.
25extern crate self as openvm_circuit_primitives;
26
27/// Derive macros
28pub use openvm_circuit_primitives_derive::*;
29/// Struct reflection for column names
30pub use struct_reflection::{StructReflection, StructReflectionHelper};
31
32mod columns_air;
33pub use columns_air::ColumnsAir;
34
35pub mod assert_less_than;
36pub mod bigint;
37pub mod bitwise_op_lookup;
38pub mod encoder;
39#[cfg(feature = "cuda")]
40pub mod hybrid_chip;
41pub mod is_equal;
42pub mod is_equal_array;
43pub mod is_less_than;
44pub mod is_less_than_array;
45pub mod is_zero;
46pub mod range;
47pub mod range_gate;
48pub mod range_tuple;
49pub mod utils;
50pub mod var_range;
51pub mod xor;
52
53/// Trait for trace generation from logs
54mod chip;
55mod sub_air;
56pub use chip::*;
57pub use sub_air::*;
58
59#[cfg(feature = "cuda")]
60pub mod cuda_abi;