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:
- 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.)
- 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).
- 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.
- 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.
- 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.
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:
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:
docs/research/kiln-direct-rust-linking.md, currently Research/Proposal): thewit/gale.witpackage (pulseengine:gale, worldkernel-primitives— already drafted) + agale-kilncrate implementing it against the verifiedsrc/*cores. This is the prerequisite for any "gale hosts a component" story. (SWREQ-KILN-001/002/006 are stilldraft.)ThreadTracker::createonly counts) — with the trusted-base boundary made explicit (verified spawn bookkeeping vs.external_bodycontext switch).smp_state/cpu_mask/ipimodel 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.