//! A hiding Reed–Solomon tensor commitment with a zero-knowledge linear
//! test: the Ligero geometry (Ames, Hazay, Ishai, Venkitasubramaniam, CCS
//! 2017, §4–5) over Goldilocks with Fp3 challenges.
//!
//! Commit. The entries are laid out row-major in rows of `k` (message
//! width). Row `i`'s polynomial is `p_i(X) = Σ_{c<k} u_{i,c} X^c + X^k·ν_i(X)`
//! with `ν_i` uniform of degree `< k` (`K = 2k` coefficients in all), RS-
//! encoded on the order-`N = K·2^r` subgroup. Three masking rows follow the
//! data rows: `m_a` (uniform, degree `< K`), `m_b` (uniform, degree
//! `< k − 1`) and `m_P` (uniform, degree `< K`). Column `j` with four
//! uniform salt limbs is leaf `j` of a hemera Merkle tree; the root is the
//! commitment.
//!
//! Open a linear functional `Λ` (weights on the entries) at claimed value
//! `V = Σ Λ_e u_e`:
//!
//! 1. send `μ = [X^{k−1}] m_a`; draw `α, ρ_L ∈ Fp3`;
//! 2. send `p_P = Σ_i α^i p_i + α^T m_P` over all `T` codeword rows (degree
//!    `< K`) and `q = Σ_i Λ'_i·p_i + ρ_L·(m_a + X^K m_b)` (degree
//!    `< K + k − 1`), where `Λ'_i(X) = Σ_c Λ_{i,c} X^{k−1−c}`, so that
//!    `[X^{k−1}] q = V + ρ_L·μ`;
//! 3. grind, draw `t` column indices, open the columns, their salts and the
//!    Merkle multi-opening; the verifier checks the coefficient identity,
//!    `p_P(ω^j)` and `q(ω^j)` against every opened column.
//!
//! Soundness (unique decoding, `D = 2K` bounds the degree of the true `q*`
//! whatever the masking rows hold): with `e = ⌊(N − D + 1)/2⌋`, either the
//! committed rows are jointly `e`-far from RS[N, K] — then, except with
//! probability `(T − 1)·N/|Fp3|` over `α` (correlated agreement for the
//! powers generator, BCIKS20 as in WHIR eprint 2024/1586 Thm 4.8), the
//! combination is far and every query passes with probability `≤ 1 − e/N`
//! — or they are `e`-close with a common agreement set, and a `p_P` or `q`
//! other than the true one passes a query with probability `≤ (D − 1 +
//! e)/N`; when both are the true ones, a wrong `V` survives the coefficient
//! check only for one `ρ_L` (`1/|Fp3|`). Per query `≤ (1 + (D − 1)/N)/2`;
//! grinding adds `pow_bits` to the query round.
//!
//! Zero knowledge (honest verifier, salted leaves in the random-oracle
//! model): every data row has `k ≥ t` uniform padding coefficients, so its
//! values at the `≤ t` opened points are uniform and independent of its
//! message; `p_P` is one-time padded by `m_P`, `q` by `m_L = m_a + X^K m_b`
//! except its `X^{k−1}` coefficient, which equals `V + ρ_L μ` with `μ`
//! uniform; the masking rows' opened values are then determined by `p_P`,
//! `q` and the data columns (`m_b`'s by its `k − 1 ≥ t` coefficients).
//! Unopened leaves are hemera outputs on inputs with 256 bits of salt.
//! A simulator given `V` reproduces the distribution exactly up to the
//! random-oracle term.

pub(crate) mod proof;
mod prove;
mod verify;

pub(crate) use proof::HidingProof;
pub(crate) use prove::{commit, open};
pub(crate) use verify::verify;

use nebu::Fp3;

/// Masking rows after the data rows: `m_a`, `m_b`, `m_P`.
pub(crate) const MASK_ROWS: usize = 3;
/// Salt limbs per column leaf.
pub(crate) const SALT: usize = 4;
const VERSION: u8 = 1;

/// Security parameters: printed into the proof, admitted by policy.
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct HidingParams {
    /// `N = K·2^log_inv_rate`.
    pub log_inv_rate: u8,
    /// Grinding bits before the query round.
    pub pow_bits: u8,
    /// Target soundness in bits; sets the query count.
    pub security_target: u16,
}

impl Default for HidingParams {
    fn default() -> Self {
        Self {
            log_inv_rate: 5,
            pow_bits: 16,
            security_target: 128,
        }
    }
}

impl HidingParams {
    pub const HEADER: usize = 5;
    pub fn header(&self) -> [u8; Self::HEADER] {
        let t = self.security_target.to_le_bytes();
        [VERSION, self.log_inv_rate, self.pow_bits, t[0], t[1]]
    }
    pub fn from_header(h: &[u8]) -> Option<Self> {
        let h: [u8; Self::HEADER] = h.try_into().ok()?;
        (h[0] == VERSION).then(|| Self {
            log_inv_rate: h[1],
            pow_bits: h[2],
            security_target: u16::from_le_bytes([h[3], h[4]]),
        })
    }
    /// Inside the ranges a verifier will run.
    pub fn in_range(&self) -> bool {
        (3..=8).contains(&self.log_inv_rate)
            && self.pow_bits <= 30
            && (128..=256).contains(&self.security_target)
    }
}

/// The shape a commitment of `entries` values takes under `params`.
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub(crate) struct Config {
    /// Message width `k` (a power of two); `K = 2k`.
    pub k: usize,
    /// Data rows.
    pub rows: usize,
    /// `log2 N`.
    pub log_n: u32,
    /// Sampled column indices (before deduplication).
    pub queries: usize,
    pub pow_bits: u32,
}

/// `log2 |Fp3|`.
fn ext_bits() -> f64 {
    3.0 * (nebu::field::P as f64).log2()
}

impl Config {
    pub fn big_k(&self) -> usize {
        2 * self.k
    }
    pub fn n(&self) -> usize {
        1 << self.log_n
    }
    /// Codeword rows: data and masking.
    pub fn total_rows(&self) -> usize {
        self.rows + MASK_ROWS
    }
    /// Bits of one query: `−log2((1 + (2K − 1)/N)/2)`.
    fn query_bits(log_inv_rate: u32) -> f64 {
        let d_over_n = (-(f64::from(log_inv_rate) - 1.0)).exp2();
        -((1.0 + d_over_n) / 2.0).log2()
    }

    fn with_width(params: &HidingParams, entries: usize, k: usize) -> Option<Self> {
        let r = u32::from(params.log_inv_rate);
        let need = (f64::from(params.security_target) - f64::from(params.pow_bits)).max(0.0);
        let queries = ((need / Self::query_bits(r)).ceil() as usize).max(1);
        let log_n = (2 * k).trailing_zeros() + r;
        // zero knowledge needs t = k ≥ every opened column, and m_b's
        // k − 1 coefficients too
        if k < queries + 1 || log_n > 30 {
            return None;
        }
        Some(Self {
            k,
            rows: entries.div_ceil(k).max(1),
            log_n,
            queries,
            pow_bits: u32::from(params.pow_bits),
        })
    }

    /// Estimated proof bytes (selection heuristic).
    fn estimate(&self) -> f64 {
        let t = self.queries as f64;
        let leaf = (self.total_rows() + SALT) as f64 * 8.0;
        let path = (self.log_n as f64 - t.log2()).max(0.0) * 32.0;
        t * (leaf + path) + 24.0 * (2.0 * self.big_k() as f64 + self.k as f64)
    }

    /// The size-minimal width for `entries` values.
    pub fn derive(params: &HidingParams, entries: usize) -> Result<Self, String> {
        if !params.in_range() || entries == 0 || entries > 1 << 26 {
            return Err("veil: commitment parameters or size out of range".into());
        }
        (6..=16)
            .filter_map(|lk| Self::with_width(params, entries, 1 << lk))
            .min_by(|a, b| a.estimate().total_cmp(&b.estimate()))
            .ok_or_else(|| "veil: no commitment shape".into())
    }

    /// Proven soundness bits of the opening (no conjecture).
    pub fn security_bits(&self) -> f64 {
        let r = self.log_n - self.big_k().trailing_zeros();
        let alpha = ext_bits() - ((self.total_rows() - 1) as f64).log2() - self.log_n as f64;
        let queries = self.queries as f64 * Self::query_bits(r) + self.pow_bits as f64;
        let rho = ext_bits();
        // log2 of the summed error, then back to bits
        let err: f64 = [alpha, queries, rho].iter().map(|b| (-b).exp2()).sum();
        -err.log2()
    }
}

/// A linear functional on the committed entries: `scale·eq(point, e)` on
/// the first `2^point.len()` entries (MSB-first point; high bits pick the
/// row, low bits the column) plus explicit weights on later entries.
#[derive(Clone, Debug)]
pub(crate) struct Functional {
    pub scale: Fp3,
    pub point: Vec<Fp3>,
    /// `(entry index, weight)`, indices strictly increasing, beyond the
    /// tensor block.
    pub explicit: Vec<(usize, Fp3)>,
}

#[cfg(test)]
mod tests;

Homonyms

neural/trident/src/typecheck/mod.rs
neural/trident/src/package/mod.rs
soft3/glia/run/core/mod.rs
soft3/glia/run/arch/mod.rs
neural/trident/src/cost/mod.rs
cyb/prysm/atoms/rs/mod.rs
soft3/mir/src/bevy/mod.rs
cyb/optica/src/query/mod.rs
soft3/mudra/src/proof/mod.rs
cyb/optica/src/output/mod.rs
neural/trident/src/neural/mod.rs
soft3/glia/import/loader/mod.rs
neural/trident/src/field/mod.rs
neural/trident/src/config/mod.rs
cyb/shell/src/shell/mod.rs
soft3/tru/rs/pass/mod.rs
soft3/nox/rs/jets/mod.rs
cyb/optica/src/scanner/mod.rs
soft3/tru/rs/focusing/mod.rs
neural/trident/tests/support/mod.rs
soft3/tru/rs/graph/mod.rs
neural/trident/src/verify/mod.rs
neural/trident/src/runtime/mod.rs
cyb/prysm/system/rs/mod.rs
neural/trident/src/cli/mod.rs
soft3/nox/rs/data/mod.rs
soft3/nox/rs/patterns/mod.rs
neural/trident/src/deploy/mod.rs
soft3/glia/run/tokenizer/mod.rs
soft3/mir/src/frame/mod.rs
neural/trident/src/ir/mod.rs
neural/trident/src/lsp/mod.rs
soft3/tru/rs/model/mod.rs
neural/trident/src/api/mod.rs
cyb/optica/src/server/mod.rs
cyb/shell/src/worlds/mod.rs
warriors/trisha/rs/cost/mod.rs
soft3/cybergraph/tests/common/mod.rs
soft3/glia/run/bench/mod.rs
soft3/glia/run/backend/mod.rs
warriors/trisha/rs/lower/mod.rs
neural/trident/src/ast/mod.rs
soft3/crate/src/chain/mod.rs
warriors/trisha/rs/recursive/mod.rs
neural/trident/src/import/mod.rs
cyb/optica/src/parser/mod.rs
cyb/shell/src/agent/mod.rs
neural/trident/src/diagnostic/mod.rs
soft3/glia/run/ir/mod.rs
cyb/prysm/molecules/rs/mod.rs
warriors/trisha/rs/neural/mod.rs
soft3/mir/src/graph/mod.rs
cyb/optica/src/graph/mod.rs
soft3/mir/src/epoch/mod.rs
soft3/crate/src/genesis/mod.rs
soft3/crate/src/wallet/mod.rs
cyb/optica/src/render/mod.rs
neural/trident/src/syntax/mod.rs
neural/rs/darwin-sys/src/ffi/mod.rs
neural/trident/src/api/tests/mod.rs
neural/eidos/rs/src/surface/mod.rs
soft3/crate/src/chain/net/mod.rs
warriors/trisha/rs/neural/inference/mod.rs
neural/eidos/rs/src/elab/mod.rs
soft3/glia/run/backend/wgpu/mod.rs
soft3/glia/run/backend/honeycrisp/mod.rs
soft3/zheng/rs/src/phi/mod.rs
soft3/cybernode/rs/src/genesis/mod.rs
soft3/zheng/rs/src/ccs/mod.rs
cyb/shell/src/worlds/models/mod.rs
cyb/honeycrisp/acpu/src/matrix/mod.rs
neural/trident/src/neural/data/mod.rs
soft3/cybernode/rs/src/chain/mod.rs
soft3/glia/run/cli/cmd/mod.rs
neural/rs/rsc/src/lints/mod.rs
cyb/honeycrisp/acpu/src/vector/mod.rs
warriors/trisha/rs/neural/model/mod.rs
cyb/shell/src/worlds/vault/mod.rs
soft3/zheng/rs/src/accumulate/mod.rs
warriors/trisha/rs/neural/training/mod.rs
cyb/shell/src/worlds/body/mod.rs
soft3/zheng/rs/src/air/mod.rs
neural/trident/src/syntax/lexer/mod.rs
neural/trident/src/config/scaffold/mod.rs
neural/trident/src/typecheck/tests/mod.rs
cyb/honeycrisp/unimem/tests/image_support/mod.rs
cyb/honeycrisp/acpu/src/crypto/mod.rs
warriors/trisha/rs/cost/stack_verifier/mod.rs
soft3/zheng/rs/src/recursion/mod.rs
neural/trident/src/ir/tir/mod.rs
cyb/shell/src/worlds/sigma/mod.rs
neural/trident/src/verify/solve/mod.rs
cyb/wysm/crates/wast/tests/mod.rs
soft3/zheng/rs/src/machine/mod.rs
neural/trident/src/package/hash/mod.rs
soft3/radio/iroh-blobs/examples/common/mod.rs
neural/rs/macros/src/registers/mod.rs
cyb/honeycrisp/acpu/src/numeric/mod.rs
soft3/crate/src/chain/tests/mod.rs
neural/trident/src/neural/model/mod.rs
soft3/bbg/rs/src/transition/mod.rs
soft3/radio/iroh-blobs/src/store/mod.rs
neural/trident/src/lsp/semantic/mod.rs
cyb/honeycrisp/acpu/src/gemm/mod.rs
neural/rs/macros/src/module/mod.rs
soft3/glia/run/arch/decoder/mod.rs
soft3/cybernode/rs/src/wallet/mod.rs
cyb/honeycrisp/acpu/src/probe/mod.rs
soft3/zheng/rs/src/sumcheck/mod.rs
soft3/neuron/node/tests/support/mod.rs
soft3/bbg/rs/src/storage/mod.rs
soft3/zheng/rs/src/folding/mod.rs
neural/trident/src/syntax/grammar/mod.rs
neural/trident/src/package/registry/mod.rs
cyb/shell/src/worlds/robot/mod.rs
cyb/honeycrisp/acpu/src/sparse/mod.rs
soft3/radio/cyber-bao/src/io/mod.rs
cyb/wysm/crates/wasmi/tests/mod.rs
soft3/crate/src/chain/pool/mod.rs
neural/trident/src/neural/training/mod.rs
neural/rs/macros/src/addressed/mod.rs
neural/trident/src/syntax/format/mod.rs
neural/eidos/rs/src/tactic_ext/mod.rs
cyb/honeycrisp/acpu/src/pulse/mod.rs
cyb/honeycrisp/aruminium/src/render/mod.rs
neural/trident/src/verify/smt/mod.rs
warriors/trisha/rs/cost/model/mod.rs
soft3/zheng/rs/tests/common/mod.rs
neural/trident/src/verify/synthesize/mod.rs
neural/trident/src/syntax/parser/mod.rs
soft3/zheng/rs/src/legacy/mod.rs
cyb/honeycrisp/acpu/src/field/mod.rs
neural/trident/src/verify/report/mod.rs
neural/trident/src/config/resolve/mod.rs
cyb/shell/src/worlds/oracle/mod.rs
neural/trident/src/package/store/mod.rs
neural/eidos/rs/src/stdlib/mod.rs
soft3/zheng/rs/src/spartan/mod.rs
cyb/honeycrisp/aruminium/src/ffi/mod.rs
soft3/conformance/rs/src/surfaces/mod.rs
soft3/glia/run/backend/cpu/mod.rs
warriors/trisha/rs/neural/data/mod.rs
neural/trident/src/package/manifest/mod.rs
soft3/zheng/rs/src/execution/mod.rs
neural/trident/src/lsp/util/mod.rs
neural/trident/src/neural/inference/mod.rs
cyb/honeycrisp/rane/src/mil/mod.rs
soft3/zheng/rs/src/envelope/mod.rs
neural/trident/src/ir/tree/mod.rs
cyb/shell/src/worlds/memory/mod.rs
cyb/shell/src/worlds/com/mod.rs
soft3/strata/nebu/rs/extension/mod.rs
cyb/wysm/crates/wasi/tests/mod.rs
neural/rs/core/src/fixed_point/mod.rs
soft3/tru/rs/focusing/epoch/mod.rs
neural/trident/src/verify/equiv/mod.rs
cyb/honeycrisp/acpu/src/sync/mod.rs
neural/rs/core/src/bounded/mod.rs
neural/trident/src/verify/sym/mod.rs
soft3/nox/rs/jets/backends/mod.rs
soft3/crate/src/chain/economy/mod.rs
soft3/crate/src/chain/mine/mod.rs
cyb/evy/forks/naga/src/proc/mod.rs
cyb/evy/forks/naga/src/front/mod.rs
soft3/radio/quinn/quinn-udp/src/cmsg/mod.rs
cyb/evy/forks/bevy_ecs/src/query/mod.rs
cyb/evy/forks/bevy_tasks/src/iter/mod.rs
soft3/strata/jali/wgsl/src/shaders/mod.rs
cyb/evy/forks/bevy_ecs/src/event/mod.rs
cyb/wysm/crates/wasmi/src/module/mod.rs
cyb/wysm/crates/core/src/memory/mod.rs
cyb/evy/forks/bevy_sprite_render/src/tilemap_chunk/mod.rs
cyb/evy/forks/bevy_post_process/src/auto_exposure/mod.rs
cyb/evy/forks/bevy_ecs/src/reflect/mod.rs
cyb/evy/forks/bevy_anti_alias/src/fxaa/mod.rs
cyb/evy/forks/bevy_pbr/src/light_probe/mod.rs
cyb/evy/forks/bevy_render/src/view/mod.rs
soft3/radio/quinn/quinn-proto/src/config/mod.rs
cyb/wysm/crates/wasmi/src/instance/mod.rs
cyb/wysm/crates/fuzz/src/oracle/mod.rs
soft3/zheng/rs/src/recursion/wrap/mod.rs
cyb/evy/forks/bevy_pbr/src/meshlet/mod.rs
cyb/evy/forks/naga/src/arena/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/blit/mod.rs
soft3/zheng/rs/src/execution/succinct/mod.rs
cyb/evy/forks/bevy_anti_alias/src/dlss/mod.rs
cyb/evy/forks/bevy_render/src/experimental/mod.rs
cyb/evy/forks/bevy_render/src/render_resource/mod.rs
soft3/cybernode/rs/src/chain/net/mod.rs
cyb/wysm/crates/wasmi/src/engine/mod.rs
cyb/evy/forks/bevy_post_process/src/motion_blur/mod.rs
cyb/evy/forks/bevy_ecs/src/bundle/mod.rs
soft3/bbg/rs/src/storage/database/mod.rs
cyb/evy/crates/evy_prysm_core/src/layout/mod.rs
cyb/wysm/crates/cli/src/commands/mod.rs
cyb/evy/forks/bevy_pbr/src/render/mod.rs
soft3/glia/run/backend/honeycrisp/kernels/mod.rs
soft3/zheng/rs/src/execution/zk/mod.rs
cyb/evy/forks/bevy_ecs/src/entity/mod.rs
cyb/evy/forks/bevy_post_process/src/bloom/mod.rs
cyb/evy/forks/bevy_pbr/src/decal/mod.rs
cyb/evy/forks/bevy_anti_alias/src/taa/mod.rs
cyb/evy/forks/bevy_pbr/src/atmosphere/mod.rs
cyb/evy/forks/bevy_pbr/src/lightmap/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/oit/mod.rs
soft3/zheng/rs/src/recursion/whir/mod.rs
soft3/strata/kuro/wgsl/src/shaders/mod.rs
soft3/strata/genies/wgsl/src/shaders/mod.rs
cyb/evy/forks/bevy_render/src/mesh/mod.rs
warriors/trisha/rs/neural/data/tir_graph/mod.rs
cyb/evy/forks/bevy_render/src/texture/mod.rs
soft3/zheng/rs/src/execution/veil/mod.rs
warriors/erga/rs/mine-bench/tests/support/mod.rs
soft3/cybernode/rs/src/chain/economy/mod.rs
cyb/evy/forks/bevy_transform/src/components/mod.rs
cyb/evy/forks/bevy_render/src/diagnostic/mod.rs
cyb/wysm/crates/wasmi/tests/integration/mod.rs
soft3/strata/trop/wgsl/src/shaders/mod.rs
cyb/wysm/crates/core/src/table/mod.rs
cyb/wysm/crates/collections/src/arena/mod.rs
cyb/evy/forks/naga/src/valid/mod.rs
cyb/evy/forks/bevy_post_process/src/effect_stack/mod.rs
soft3/zheng/rs/src/legacy/tests/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/upscaling/mod.rs
soft3/radio/quinn/quinn-proto/src/connection/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/fullscreen_vertex_shader/mod.rs
cyb/evy/forks/bevy_sprite/src/texture_slice/mod.rs
cyb/evy/forks/bevy_sprite_render/src/texture_slice/mod.rs
soft3/cybernode/rs/src/chain/tests/mod.rs
cyb/evy/forks/bevy_ecs/src/component/mod.rs
cyb/evy/forks/bevy_render/src/renderer/mod.rs
neural/trident/src/ir/tir/stack/mod.rs
soft3/radio/quinn/quinn/src/runtime/mod.rs
cyb/evy/forks/bevy_sprite_render/src/text2d/mod.rs
cyb/evy/forks/bevy_ecs/src/world/mod.rs
neural/trident/src/ir/tir/builder/mod.rs
cyb/evy/forks/bevy_sprite_render/src/mesh2d/mod.rs
soft3/cybernode/rs/src/chain/pool/mod.rs
cyb/evy/forks/bevy_ecs/src/message/mod.rs
cyb/wysm/crates/wasi/src/sync/mod.rs
cyb/evy/forks/bevy_ecs/src/observer/mod.rs
cyb/evy/forks/bevy_sprite_render/src/render/mod.rs
cyb/wysm/crates/wasmi/src/table/mod.rs
cyb/evy/forks/naga/src/back/mod.rs
soft3/glia/run/backend/cpu/quant/mod.rs
cyb/evy/forks/bevy_anti_alias/src/contrast_adaptive_sharpening/mod.rs
cyb/wysm/crates/wasmi/src/memory/mod.rs
neural/trident/src/syntax/parser/tests/mod.rs
cyb/evy/forks/bevy_anti_alias/src/smaa/mod.rs
soft3/zheng/rs/src/execution/tagged/mod.rs
cyb/evy/forks/bevy_pbr/src/ssao/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/tonemapping/mod.rs
soft3/radio/quinn/quinn-proto/src/tests/mod.rs
cyb/wysm/crates/c_api/src/types/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/skybox/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/experimental/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/core_2d/mod.rs
cyb/evy/forks/bevy_gizmos/src/primitives/mod.rs
cyb/wysm/crates/wasmi/src/store/mod.rs
neural/trident/src/ir/tree/lower/mod.rs
cyb/wysm/crates/wasmi/benches/bench/mod.rs
neural/trident/src/ir/tir/optimize/mod.rs
cyb/evy/forks/bevy_render/src/batching/mod.rs
cyb/evy/forks/bevy_render/src/render_graph/mod.rs
cyb/evy/forks/bevy_ecs/src/storage/mod.rs
cyb/evy/forks/bevy_ecs/src/system/mod.rs
soft3/glia/run/backend/wgpu/kernels/mod.rs
cyb/evy/forks/bevy_post_process/src/dof/mod.rs
soft3/cybernode/rs/src/chain/mine/mod.rs
cyb/evy/forks/bevy_pbr/src/prepass/mod.rs
cyb/wysm/crates/wasmi/src/func/mod.rs
cyb/evy/forks/naga/src/keywords/mod.rs
cyb/wysm/crates/ir/src/decode/mod.rs
cyb/evy/forks/bevy_pbr/src/ssr/mod.rs
cyb/evy/forks/bevy_ecs/src/relationship/mod.rs
cyb/evy/forks/bevy_render/src/render_phase/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/deferred/mod.rs
cyb/evy/forks/bevy_ecs/src/change_detection/mod.rs
cyb/evy/forks/bevy_pbr/src/deferred/mod.rs
soft3/radio/quinn/quinn/examples/common/mod.rs
cyb/evy/forks/naga/src/compact/mod.rs
soft3/radio/quinn/quinn-proto/src/range_set/mod.rs
soft3/zheng/rs/src/recursion/circuit/mod.rs
soft3/zheng/rs/src/execution/disclosed/mod.rs
cyb/evy/forks/naga/src/common/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/core_3d/mod.rs
cyb/evy/forks/bevy_mesh/src/primitives/mod.rs
cyb/evy/forks/bevy_ecs/src/error/mod.rs
neural/trident/src/neural/data/tir_graph/mod.rs
soft3/glia/run/arch/decoder/families/mod.rs
cyb/evy/forks/bevy_ecs/src/schedule/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/prepass/mod.rs
cyb/evy/forks/bevy_pbr/src/volumetric_fog/mod.rs
cyb/evy/forks/bevy_render/src/experimental/occlusion_culling/mod.rs
cyb/evy/forks/bevy_render/src/view/window/mod.rs
cyb/evy/forks/bevy_ecs/src/schedule/graph/mod.rs
cyb/wysm/crates/wasmi/src/engine/executor/mod.rs
cyb/evy/forks/naga/src/back/wgsl/mod.rs
cyb/evy/forks/naga/src/back/hlsl/mod.rs
struct Baz { m: mat3x2, } struct Baz { float2 m_0; float2 m_1; float2 m_2; }; float3x2 GetMatmOnBaz(Baz obj) { return float3x2(obj.m_0, obj.m_1, obj.m_2); }
cyb/wysm/crates/wasmi/src/engine/translator/mod.rs
soft3/radio/quinn/quinn-proto/src/congestion/bbr/mod.rs
cyb/wysm/crates/wasmi/src/module/instantiate/mod.rs
cyb/evy/forks/bevy_ecs/src/storage/table/mod.rs
cyb/evy/forks/naga/src/front/spv/mod.rs
cyb/evy/forks/naga/src/back/glsl/mod.rs
cyb/wysm/crates/wasi/src/sync/snapshots/mod.rs
cyb/evy/forks/bevy_render/src/view/visibility/mod.rs
cyb/evy/forks/naga/src/back/spv/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/experimental/mip_generation/mod.rs
cyb/wysm/crates/wasmi/src/module/parser/mod.rs
cyb/evy/forks/naga/src/back/msl/mod.rs
cyb/evy/forks/bevy_mesh/src/primitives/dim3/mod.rs
cyb/evy/forks/naga/src/front/glsl/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/oit/resolve/mod.rs
cyb/evy/forks/bevy_ecs/src/world/entity_access/mod.rs
cyb/evy/forks/bevy_ecs/src/schedule/executor/mod.rs
soft3/radio/quinn/quinn-proto/src/connection/streams/mod.rs
cyb/evy/forks/naga/src/front/wgsl/mod.rs
cyb/wysm/crates/wasmi/src/engine/limits/mod.rs
cyb/evy/forks/naga/src/back/dot/mod.rs
cyb/evy/forks/bevy_ecs/src/system/commands/mod.rs
cyb/evy/forks/naga/src/back/wgsl/polyfill/mod.rs
cyb/wysm/crates/wasmi/src/engine/translator/func/mod.rs
cyb/evy/forks/naga/src/front/wgsl/lower/mod.rs
cyb/evy/forks/naga/src/front/wgsl/parse/mod.rs
cyb/wysm/crates/wasmi/src/engine/executor/handler/mod.rs
cyb/wysm/crates/wasmi/src/engine/translator/func/stack/mod.rs
cyb/wysm/crates/wasmi/src/engine/executor/handler/dispatch/mod.rs
cyb/wysm/crates/wasmi/src/engine/translator/func/simd/mod.rs

Graph