Cargo Features

divANS has no features set by default.

[dependencies]
divans = { version = "0.0.1", features = ["simd", "avx2", "no-inline", "safe", "avoid-divide", "findspeed", "billing", "blend", "debug_entropy", "portable-simd", "no-stdlib", "no-stdlib-rust-binding", "benchmark", "external-literal-probability", "uncached_frequentist", "threadlog"] }
simd

allow use of SIMD to update probability and compute crc32c

Affects crc32::crc32c_update, interface::DefaultInternalCDF16, probability::simd_frequentist_cdf, numeric::fast_divide_30bit_i64x2_by_16bit

avx2

use avx2-specific instructions

no-inline

avoid inlining some key functions (for profiling). Significant perf hit

safe

do not compile any unsafe code (this disables C-FFI)

avoid-divide

use 65536-sized table to do 16 bit integer divides: similar speed, but strains memory subsystem

Affects simd_frequentist_cdf::lookup_divisor

findspeed

use dynamic CDF blending depending on samples

Affects interface::DefaultCDF16

billing

print breakdown of which parts of the file cost

Affects billing::BillingArithmeticCoder, priors::summarize_prior_billing

blend

use divisionless CDF: averages with other CDFs rather than counting samples like FrequentistCDF

Affects interface::DefaultInternalCDF16

debug_entropy

print trace of probability

Affects interface::DefaultCDF16, priors::summarize_prior_billing

portable-simd

only use portable SIMD instructions for probability updates

no-stdlib

Enables no-stdlib of alloc-no-stdlib ~1.3 and brotli ~2.5

Affects integration_test::MULTI, alloc_util::MemoryBlock, alloc_util::free_stdlib, alloc_util::alloc_stdlib

no-stdlib-rust-binding

bind to rust with nostdlib

benchmark

turn on benchmark tests and --bench commands (requires nigtly)

Enables benchmark of brotli ~2.5

external-literal-probability

allow specification of a external probability array, to test new prediction schemes

Enables external-literal-probability of brotli ~2.5

uncached_frequentist

Affects interface::DefaultInternalCDF16

threadlog