Changes for version 0.01 - 2026-06-19
- First version.
- compile-time `let` keyword (lexical pragma), lowered to a plain optree
- array patterns [ ... ] over an arrayref; hash patterns { ... } over a hashref
- nested patterns, holes (undef), per-slot // defaults (lazy)
- list patterns ( ... ) destructure a list (list-context RHS)
- trailing slurpy: @rest / %rest on array & list patterns, %rest (remaining keys) on hash patterns (custom ops)
- right-hand side evaluated exactly once
- fast path: a flat array/list pattern (plain scalars, holes, optional trailing slurpy; no defaults or nesting) lowers to a single native list-assignment, matching hand-written `my (...) = ...` speed; the `( )` list form skips the arrayref copy entirely. xt/bench.pl covers it.
- publishes its compile-time engine (include/destructure.h) via ExtUtils::Depends, so dependent dists (e.g. Switch::Declare) can #include it rather than carrying a copy
Modules
lexically scoped structural destructuring let