Skip to content

Handle multiply-instantiated modules #24

Description

@avrabe

Context

BA RFC #46 (bytecodealliance/rfcs#46) identifies multiply-instantiated modules as an open question for component lowering. A component may instantiate the same core module more than once, each needing its own memory and globals.

Meld does not currently handle this case.

Options (from RFC analysis)

Option Trade-off
Reject (fail-fast) Safest. Clear error message. Limits component coverage.
Duplicate functions Full coverage but potential bloat. Leaf functions (no memory/globals) can be shared.
Multi-module output Full coverage, no bloat, but requires external linker metadata and new packaging format.

STPA assessment

  • Reject: no new hazards (safe default, aligns with SC-8/SC-9)
  • Duplicate: H-3 (index remapping) applies per-instance; RH-5 (shared state semantics change); RL-5 (bloat)
  • Multi-module: new trust surface (linker metadata format)

Recommendation

Start with reject (detect and report error). Add duplicate mode when real-world components require it — the existing merger infrastructure (index remapping, proven correct for N components) extends naturally to N instances of the same module.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    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