ffai-cli 0.6.3

The ffai binary — a thin shell over the FFai library crates
[package]

name = "ffai-cli"

description = "The ffai binary — a thin shell over the FFai library crates"

# follows its dependencies.

version = "0.6.3"

edition.workspace = true

rust-version.workspace = true

license.workspace = true

repository.workspace = true

authors.workspace = true

readme = "README.md"

keywords = ["cli", "speech-to-text", "tts", "ocr", "ai"]

categories = ["command-line-utilities", "multimedia", "science"]



[[bin]]

name = "ffai"

path = "src/main.rs"



[dependencies]

ffai-core = { workspace = true }

ffai-media = { workspace = true }

ffai-models = { workspace = true }

ffai-mercury = { workspace = true }

ffai-carmenta = { workspace = true }

ffai-diana = { workspace = true }

ffai-argus = { workspace = true }

ffai-bench = { workspace = true }

anyhow = { workspace = true }

# The allocator is a MEASURED component of this binary, not a preference.

#

# The system allocator re-faults nearly every byte it hands back: 58,634 page

# faults per image, ~234 MiB of freshly-faulted pages against 293.7 MiB/image

# of allocation. Swapping to an allocator that keeps pages mapped measured

# 74.6 -> 45.5 ms per image, 6/6 with non-overlapping ranges.

#

# A library cannot set a global allocator, so it is set here in the binary.

# Downstream users of `ffai-diana` as a crate do NOT inherit it and should

# make the same choice for themselves; the README says so.

#

# SUPERSEDED as the default by `rusty_alloc`, the pure-Rust remake of the same

# design — measured at parity-or-better (z = +2.43 over 49 paired rounds) with

# a better memory profile above the n tier. See the `#[global_allocator]` doc

# comment in `src/main.rs` for the table.

#

# Kept, optional, as the oracle: `--features mimalloc` switches back, which is

# what makes "our pure-Rust allocator matches the C one" a claim anyone can

# re-measure rather than one they have to take on trust.

mimalloc = { version = "0.1", default-features = false, optional = true }

# PINNED EXACTLY, and the `=` is load-bearing. 0.3.1 introduces a

# PROBABILISTIC SEGFAULT: 6 of 8 runs of `detect --track` over 50 frames die,

# where 0.3.0, 0.1.0-alpha.1 and 0.1.0-alpha.2 are 0 of 8. A caret requirement

# ("0.3.0") silently resolved to 0.3.1 mid-session and shipped a crashing

# binary, which is exactly the failure an exact pin exists to prevent.

rusty_alloc-api = "=0.3.2"

# The core, for `alloc::collect` — see `spawn_page_trimmer` in main.rs.

# Without it rusty_alloc's RSS does not bound on a rayon pool.

rusty_alloc = "=0.3.2"

clap = { workspace = true }



[features]

# Swap the pure-Rust allocator back out for the C library it replaced.

# Enabling this is a measurement tool, not a supported configuration.

mimalloc = ["dep:mimalloc"]



[lints]

workspace = true