binaryen icon indicating copy to clipboard operation
binaryen copied to clipboard

Add validations for imports during instantiation

Open stevenfontanella opened this issue 2 months ago • 0 comments

  • At instantiation time, check the types of exports against their corresponding imports, and trap if they don't match.
    • Exported memories and tables must be a subtype of the corresponding import.
    • Function types aren't checked yet because we don't have a way to check the exact type of function re-exports; i.e. exact-func-imports.wast would fail to instantiate on line 85.
  • Copy exact-func-import.wast from the testsuite repo, which now passes.
  • Fix ref_func.wast and tags.wast which also otherwise fail with the new validations.
  • Fix getMemoryInstanceInfo to follow import chains rather than just one import.
  • Also fix getMemorySize to read the runtime page size from imports when applicable. This is necessary to keep track of page sizes correctly when we import a memory that's later grown e.g. in test/spec/imports.wast.
  • Fixes imports0, imports2, linking0, linking3 and partially fixes imports, imports3 and memory64.

As followups, we should improve the handling of the "spectest" module by implementing the implicit definition described by the spec, and we should add tracking for exact types of function re-exports so that we can enable import-time type checking for function types.

stevenfontanella avatar Dec 03 '25 18:12 stevenfontanella