Feature Flags

Each crate supports std and alloc feature gates for no_std compatibility.

Default Features

By default, all crates enable std:

karpal-core = "0.7"  # enables std by default

no_std with alloc

karpal-core = { version = "0.7", default-features = false, features = ["alloc"] }

no_std without alloc

Core traits work without any allocator:

karpal-core = { version = "0.7", default-features = false }

Special Features

CrateFeatureEffect
karpal-verifyamariStatistical verification via amari-flynn
karpal-proofderive#[derive(VerifySemigroup)] etc.
karpal-verifyderive#[export_obligations] macro

Exceptions

  • karpal-schubert-types is std-only (depends on amari-enumerative)
  • karpal-index is a binary crate (not published to crates.io)

Per-Crate no_std Status

Crateno_std (core only)allocstdNotes
karpal-coreHKT encoding, functor hierarchy, Semigroup/Monoid work without alloc
karpal-profunctorProfunctor, Strong, Choice, FnP
karpal-opticsLens, Prism, composition
karpal-arrowArrow hierarchy
karpal-freeFree constructions (alloc required for most)
karpal-recursionRecursion schemes
karpal-algebraAbstract algebra
karpal-effectMonad transformers
karpal-proofLaw witnesses, refinement types
karpal-verifyVerification bridge (process spawning, filesystem)
karpal-verify-deriveProc-macro crate (requires std)
karpal-proof-deriveProc-macro crate (requires std)
karpal-diagramString diagrams
karpal-schubert-typesDepends on amari-enumerative
karpal-higher2-categories, enriched categories
karpal-stdPrelude re-exports (pulls in all crates)

CI verifies this via cargo build --no-default-features -p karpal-core -p karpal-profunctor on every push.