Skip to content

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 27 Jun 05:45
· 932 commits to main since this release

Added

  • The set functor now runs and builds end to end. Instantiating
    wavelet:coll/set with Import {pkg: … elem: t as: …} binds the qualified ops
    alias/new, alias/add, alias/contains, and alias/size (with the
    signatures the synthesized resource promises — new() -> set,
    add(set, elem), contains(set, elem) -> bool, size(set) -> u32), so a
    functor program executes under wavelet run; membership uses the element
    type's Eq, so it agrees with eq/compare. The wasm backend now also
    builds set functor components: the synthesized per-element interface is
    emitted as a real exported WIT resource at parity with the interpreter — any
    element type (primitive, string, record, and compound list/tuple) and multiple
    instantiations per world, with the same structural-equality membership the
    interpreter uses. The one limitation is shaping, not semantics: an export that
    returns the set handle over a local-record element forms a WIT interface
    cycle (the element's api interface and the resource's interface would each
    use the other), which WIT cannot express, so it is rejected with a clear
    error. Exports that derive an ordinary result (e.g. -> u32), or that return a
    handle over a primitive/string element, build fine. The type-system guide's
    "A program you can build" section walks both buildable shapes with the WIT each
    emits.

Fixed

  • wavelet run now expands Derive (and any tree→tree stdlib macro). The
    run path skipped the expand_file pass that wavelet build/wavelet wit use,
    so a program that Derived a type died with unbound name derive-MACRO — even
    before any functor was involved. wavelet run now runs the expander first,
    matching the other paths, so derived programs (and functor programs, which lean
    on derived ops over their element type) execute.

What's Changed

  • feat(functor): build set functor components in the wasm backend by @logaan in #24
  • feat(functor): run the Set functor in the interpreter; fail build cleanly by @logaan in #22
  • docs(dev-notes): exhaustive language feature inventory by @logaan in #23

Full Changelog: v0.8.0...v0.9.0