Skip to main content

Module capabilities

Module capabilities 

Source
Expand description

Capability computation — CAP-AIR pass.

Computes capability requirements for each function in a module by:

  1. Annotation extraction@requires(Capability.Network, ...) annotations are parsed from each function’s annotation list.
  2. Effect correlation — IO effects imply platform capabilities (e.g. LogIo.Stdout, HttpIo.Network).
  3. Call-graph propagation — required capabilities from callees are unioned into the caller’s capability set.
  4. Verification — declared (@requires) capabilities are checked against inferred requirements per strictness level.

§Strictness

  • Sketch: no diagnostics; capabilities are inferred silently.
  • Development: missing @requires on public functions produces warnings.
  • Production: missing @requires on all functions produces errors.

§@requires additivity

Per spec, @requires is additive: a declaration’s capability set is the union of the module-level @requires and its own @requires. This pass operates purely at the function level; module-level annotations are collected first and unioned into every declaration’s declared set.

Re-exports§

pub use crate::Strictness;

Structs§

Capability
A platform/language capability required or provided by a node.
EffectRef
A reference to an algebraic effect, identified by its fully-qualified name.

Functions§

compute_capabilities
Compute capability requirements for every function in module.
verify_capabilities
Verify capability declarations in module against actual usage.

Type Aliases§

CapabilitySet
The set of capabilities required by a node.