symbios

Crates.iosymbios
lib.rssymbios
version1.0.1
created_at2026-01-10 15:56:33.106921+00
updated_at2026-01-24 14:40:38.549449+00
descriptionA derivation engine for L-Systems (ABOP compliant).
homepage
repositoryhttps://github.com/TheJanusStream/symbios
max_upload_size
id2034373
size178,013
(TheJanusStream)

documentation

README

Symbios

A Sovereign Derivation Engine for Parametric L-Systems.

Symbios is a pure-Rust, zero-dependency (core), high-performance engine for generating Lindenmayer Systems. It is designed for "Sovereign" applications where the logic must run locally, deterministically, and safely (e.g., WASM environments, embedded simulation).

It fully implements the syntax and semantics described in The Algorithmic Beauty of Plants (Prusinkiewicz & Lindenmayer, 1990).

Key Features

  • Sovereign Architecture: Zero external dependencies for the core logic. No game engines, no heavy runtimes.
  • Structure-of-Arrays (SoA): Data layout optimized for cache locality and WASM memory limits.
  • Parametric & Context-Sensitive: Full support for (k,l)-systems, arithmetic guards A(x) : x > 5 -> ..., and variable binding.
  • Adversarial Hardening: Protected against recursion bombs, memory exhaustion, and floating-point fragility.
  • Deterministic: Seedable RNG (rand_pcg) ensures reproducible procedural generation.

Usage

[dependencies]
symbios = "1.0.1"
use symbios::System;

fn main() {
    let mut sys = System::new();
    
    // 1. Define Rules (ABOP Syntax)
    // A module 'A' with parameter 'x' grows if 'x' is small
    sys.add_rule("A(x) : x < 10 -> A(x + 1) B(x)").unwrap();
    
    // 2. Set Axiom
    sys.set_axiom("A(0)").unwrap();
    
    // 3. Derive
    sys.derive(5).unwrap();
    
    // 4. Inspect
    println!("{}", sys.state.display(&sys.interner));
}

Performance

Symbios uses a flat memory arena for parameters and u16 symbol interning.

  • Rule Matching: $O(N)$ (HashMap bucketed)
  • Context Matching: $O(1)$ (Topology Skip-Links)

See PERFORMANCE.md for detailed benchmarks and optimization tips.

Documentation

Examples

See examples/ for complete working examples:

License

MIT

Commit count: 27

cargo fmt