Repository navigation
v0.9.0
Added
- The
setfunctor now runs and builds end to end. Instantiating
wavelet:coll/setwithImport {pkg: … elem: t as: …}binds the qualified ops
alias/new,alias/add,alias/contains, andalias/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 underwavelet run; membership uses the element
type'sEq, so it agrees witheq/compare. The wasm backend now also
buildssetfunctor 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 thesethandle over a local-record element forms a WIT interface
cycle (the element'sapiinterface and the resource's interface would each
usethe 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 runnow expandsDerive(and any tree→tree stdlib macro). The
run path skipped theexpand_filepass thatwavelet build/wavelet wituse,
so a program thatDerived a type died withunbound name derive-MACRO— even
before any functor was involved.wavelet runnow 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