polydat 0.2.0

Polydat — a variates construction engine
Documentation
[package]

name = "polydat"

# Polydat is published independently of the nbrs workspace —

# its release cadence isn't tied to the workspace's version bump.

# Override `version.workspace = true` with a local pin so polydat

# can rev (e.g., 0.1.1, 0.2.0) without dragging the workspace.

version = "0.2.0"

edition.workspace = true

license.workspace = true

description = "Polydat — a variates construction engine"

keywords = ["nosqlbench", "workload", "benchmark", "data-generation"]

categories = ["command-line-utilities", "simulation"]

repository = "https://github.com/nosqlbench/polydat"

homepage = "https://github.com/nosqlbench/polydat"

documentation = "https://docs.rs/polydat"

# Local override — `readme.workspace = true` resolves to the

# workspace-root README, not polydat's own. The README that ships

# in the crates.io package needs to be the polydat-specific one.

readme = "README.md"



# Exclude bench-output artifacts and large perf-test fixtures from

# the published package. The benches themselves (`benches/`) stay —

# they're part of the public surface — but their generated graphs

# under `tests/bench_graphs/` and the per-test perf fixtures under

# `tests/perf_tests/` are noise for downstream consumers.

exclude = [

    "tests/bench_graphs/**",

    "tests/perf_tests/**",

]



[dependencies]

# SRD-80 — proc-macro derive crate ( `#[polydat_node]` ).

# `inventory` (used for link-time FuncSig registration) is

# already a polydat dep further down — used by the existing

# kernel-tracking infrastructure too.

polydat-derive = { path = "../polydat-derive", version = "0.2.0" }

# Token-pasting for the macro-generated matrix-completion adapter

# family (`library/polyfill_complete.rs`) — builds `#[polydat_node]`

# fn names like `__u64_to_u8` from type-pair lists so the ~130

# trivial conversion nodes aren't hand-written.

paste = "1"

xxhash-rust = { version = "0.8", features = ["xxh3"] }

sha2 = "0.10"

md-5 = "0.10"

base64 = "0.22"

data-encoding = "2"

regex = "1"

serde = { version = "1", features = ["derive"] }

serde_json = { version = "1", features = ["preserve_order"] }

serde_yaml = "0.9"

petgraph = "0.8"

layout-rs = "0.1"

vectordata = { version = "1.2", optional = true }

cranelift-jit = { version = "0.116", optional = true }

cranelift-module = { version = "0.116", optional = true }

cranelift-codegen = { version = "0.116", optional = true }

cranelift-frontend = { version = "0.116", optional = true }

target-lexicon = { version = "0.13", optional = true }

inventory = "0.3.24"

# Needed for runtime-context nodes' task-local FiberContext

# (`task_local!` lives in `rt`) and for `block_in_place` at the

# vectordata catalog bridge (`rt-multi-thread`).

tokio = { version = "1", features = ["rt", "rt-multi-thread", "macros"] }

# Insertion-ordered map. Used by `kernel::ScopeCoord` so the

# coordinate names within a scope appear in clause-declaration

# order — matching the comprehension's source-level intent.

# See `kernel::scope_coords` doc.

indexmap = "2"

# IEEE 754 half-precision float (`f16`). Used by the

# `Value::VecF16` / `PortType::VecF16` carrier so embeddings

# stored as half-precision flow through the kernel without

# widening to f32 at the boundary.

half = "2"



[features]

default = ["jit"]

vectordata = ["dep:vectordata"]

jit = ["dep:cranelift-jit", "dep:cranelift-module", "dep:cranelift-codegen", "dep:cranelift-frontend", "dep:target-lexicon"]



[dev-dependencies]

criterion = { version = "0.5", features = ["html_reports"] }

tokio = { version = "1", features = ["rt-multi-thread", "macros"] }

# Work-stealing parallelism for tests with uneven per-case cost

# (the §9.2 equivalence harness sweeps random ASTs whose dispense

# time varies widely; rayon's stealing scheduler keeps every core

# fed where fixed chunking leaves stragglers).

rayon = "1"



[[bench]]

name = "polydat_throughput"

harness = false



[[bench]]

name = "cell_throughput"

harness = false