Skip to content

Capability request: host one fused wasm async component per thread + multiple fused systems across cores (jess / Pixhawk 6X-RT) #63

Description

@avrabe

Capability request (from jess): host one fused wasm async component per thread, multiple fused systems across cores

jess (the hardware-integration project taking falcon onto a Pixhawk 6X-RT, NXP i.MX RT1176 = Cortex-M7 + M4 + an STM32F100 I/O MCU) wants this runtime shape on gale:

  • one fused wasm component per thread running an async control/estimation stack (meld-fused gale-host + app cascade, synth-compiled to the core), and
  • multiple fused systems across cores (e.g. IEKF estimator on the M4, controller cascade on the M7), communicating by WIT-typed contracts.

Surveying gale today, the verified models are exactly right (sched/thread/timer/timeout/msgq/pipe/mbox + smp_state/cpu_mask/ipi), but the executable substrate is intentionally in C / not yet built. To host components, jess would need gale (or the Kiln path) to provide:

  1. Land the Kiln host-module path (docs/research/kiln-direct-rust-linking.md, currently Research/Proposal): the wit/gale.wit package (pulseengine:gale, world kernel-primitives — already drafted) + a gale-kiln crate implementing it against the verified src/* cores. This is the prerequisite for any "gale hosts a component" story. (SWREQ-KILN-001/002/006 are still draft.)
  2. Thread spawn + dispatch that runs a component's exported entry as a thread body (today ThreadTracker::create only counts) — with the trusted-base boundary made explicit (verified spawn bookkeeping vs. external_body context switch).
  3. A verified no_std async executor (Embassy-class) to drive one async component per thread — gale has no executor/futures/waker today; the "async stack" needs it. Verus properties: no lost wakeups, bounded poll, fair ready-queue.
  4. A host-call / bus / hardware-capability WIT interface (generalize draft SWREQ-KILN-005) so drivers-as-wasm reach bus/PWM/time/GPIO through a thin trusted host shim — matching the maximal-wasm, thin-native-trusted-base direction. Current WIT covers kernel primitives only.
  5. AMP / heterogeneous-core support beyond symmetric SMP: pin a fused system to a specific core (M7 vs M4) + an inter-core mailbox/IPI transport (the RT1176 MU). smp_state/cpu_mask/ipi model symmetric SMP only; the M7/M4 split is AMP.

This is a multi-release epic, not a single ask — filing it so the direction is visible and we can sequence it together. jess is happy to be the downstream proving ground (it already runs the verified falcon SIL gate + the hermetic wasm→meld→synth→ELF chain) and to co-design the WIT worlds in spar/AADL. What's the most useful first slice from your side — the Kiln host path (#1), or the executor (#3)?

Filed from the jess Phase-2 (Pixhawk 6X-RT) architecture planning; tracked jess-side as REQ-PIX-002 + DD-009.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions