Topologically ordered backlog (priority: bug > infra > perf > rest within the dependency DAG; perf ties break on a stated expected_win, then on the coarse win_bucket breadth estimate, L > M > S). Maintained by the backlog groom; do not edit by hand.
Fold constant chains within a sweep instead of one fixpoint round per layer #328 — Fold constant chains within a sweep instead of one fixpoint round per layer (perf L)
Distribute an effect-run application into IfThenElse branches #266 — Distribute an effect-run application into IfThenElse branches (perf M)
Codegen: foreign-body helper functions survive export tree-shaking as dead code #274 — Codegen: foreign-body helper functions survive export tree-shaking as dead code (perf M)
Codegen: zero-method dictionaries are threaded through as empty-table arguments #275 — Codegen: zero-method dictionaries are threaded through as empty-table arguments (perf M)
[fork-ffi] prelude: represent unit as an interned scalar instead of a table #283 — [fork-ffi] prelude: represent unit as an interned scalar instead of a table (perf M)
Case column choice ignores MatchHistory: decided matches are free but can lose the tie-break #312 — Case column choice ignores MatchHistory: decided matches are free but can lose the tie-break (perf M)
Ordering-predicate algebra: collapse boolean combinations of comparisons over one operand pair #314 — Ordering-predicate algebra: collapse boolean combinations of comparisons over one operand pair (perf M)
Unbox Ref/STRef operations in value positions (while-conditions, stored actions) #317 — Unbox Ref/STRef operations in value positions (while-conditions, stored actions) (perf M)
Unbox Ref/STRef cells across function boundaries (interprocedural escape summary) #319 — Unbox Ref/STRef cells across function boundaries (interprocedural escape summary) (perf M)
Fold ctor/array through-let unpacking across trailing sibling groupings, as the record rules do #323 — Fold ctor/array through-let unpacking across trailing sibling groupings, as the record rules do (perf M)
Float computed dictionary applications so transformer chains collapse under the directive pack #329 — Float computed dictionary applications so transformer chains collapse under the directive pack (perf M)
Extend the default directive pack to foldable-traversable and enums #331 — Extend the default directive pack to foldable-traversable and enums (perf M)
Fold a let-bound conditional of known constructors into its eliminating reads #336 — Fold a let-bound conditional of known constructors into its eliminating reads (perf M)
Shed the magic-do effect thunk for any expression body, not only a call #342 — Shed the magic-do effect thunk for any expression body, not only a call (perf M)
Splice a discarded applied function literal, not only a tail-position one #359 — Splice a discarded applied function literal, not only a tail-position one (perf M)
[fork-ffi] strings: drop the dead CodePoints fallbacks from linked output #270 — [fork-ffi] strings: drop the dead CodePoints fallbacks from linked output (perf S)
[fork-ffi] foldable-traversable: declare the fork-shaped traverseArrayImpl as Fn6 #271 — [fork-ffi] foldable-traversable: declare the fork-shaped traverseArrayImpl as Fn6 (perf S)
Measure call-site inlining growth at fixpoint convergence to catch diluted paste growth #287 — Measure call-site inlining growth at fixpoint convergence to catch diluted paste growth (perf S)
Beta-reduce applied sites of a bare-Ref alias to an inline-always binding #307 — Beta-reduce applied sites of a bare-Ref alias to an inline-always binding (perf S)
Canonicalize the Effect functor's map so modify_/void shapes unbox #318 — Canonicalize the Effect functor's map so modify_/void shapes unbox (perf S)
Derived-always specialization of an over-budget instance method duplicates the dictionary read per site #326 — Derived-always specialization of an over-budget instance method duplicates the dictionary read per site (perf S)
Make default-pack directives monotone: gate saturated pastes without vetoing the heuristics #330 — Make default-pack directives monotone: gate saturated pastes without vetoing the heuristics (perf S)
Lua optimizer: fold a field projection through a branching scope-call tail #335 — Lua optimizer: fold a field projection through a branching scope-call tail (perf S)
Fold PrimLen over a manifest string literal #343 — Fold PrimLen over a manifest string literal (perf S)
Absorb the magic-do thunk despite an unforced saturated worker call #360 — Absorb the magic-do thunk despite an unforced saturated worker call (perf S)
Introduce a new non-bundling compilation mode #27 — Introduce a new non-bundling compilation mode (rest)
coroutine: bring purescript-lua-coroutine to production readiness #72 — coroutine: bring purescript-lua-coroutine to production readiness (rest)
Lua.fromIR: topLevelNames parameter is always empty, guarded branches are dead code #146 — Lua.fromIR: topLevelNames parameter is always empty, guarded branches are dead code (rest)
Closing audit: prove the cumulative win of the optimisation series #187 — Closing audit: prove the cumulative win of the optimisation series (rest)
Make the runtime-lazy factory a first-class IR reference #212 — Make the runtime-lazy factory a first-class IR reference (rest)
Marker-driven magic-do: build do-chunks from EffectRunArg semantics, not bindE/pureE names #228 — Marker-driven magic-do: build do-chunks from EffectRunArg semantics, not bindE/pureE names (rest)
Codegen: dropped unused parameters make call sites trip lua-language-server redundant-parameter #273 — Codegen: dropped unused parameters make call sites trip lua-language-server redundant-parameter (rest)
Codegen: emitted lines have no width bound #276 — Codegen: emitted lines have no width bound (rest)
Optimizer: never duplicate a reference-constructing expression (allocation/identity guard) #284 — Optimizer: never duplicate a reference-constructing expression (allocation/identity guard) (rest)
Golden harness optimizes runnable modules AsModule but codegens AsApplication, leaking dead bindings #303 — Golden harness optimizes runnable modules AsModule but codegens AsApplication, leaking dead bindings (rest)
Wired-in Record.Unsafe: compiler-owned IR record primops #305 — Wired-in Record.Unsafe: compiler-owned IR record primops (rest)
Remove dead name-minting helpers: Lua.Name.specialNameType and Lua.Fixture.uniqueName #309 — Remove dead name-minting helpers: Lua.Name.specialNameType and Lua.Fixture.uniqueName (rest)
Renumber capture guard: extend the free-spelling skip to composite images #310 — Renumber capture guard: extend the free-spelling skip to composite images (rest)
Sweep dead module-scope bindings stranded by codegen-level rewrites #316 — Sweep dead module-scope bindings stranded by codegen-level rewrites (rest)
Remove or re-wire fromIR's apparently dead topLevelNames parameter #320 — Remove or re-wire fromIR's apparently dead topLevelNames parameter (rest)
Strengthen fired-proof oracle in the #214/#225 unpacking properties (countFreeRef on a bound name is vacuous) #322 — Strengthen fired-proof oracle in the Case-of-known-constructor through a let-bound scrutinee #214 /Fold array-length and indexing on manifest array literals #225 unpacking properties (countFreeRef on a bound name is vacuous) (rest)
Directive default cannot opt a binding out of derived inline directives #325 — Directive default cannot opt a binding out of derived inline directives (rest)
Warn when a directive entry names a present module but matches no binding #332 — Warn when a directive entry names a present module but matches no binding (rest)
Bound the top-down IR rewrite driver's re-application loop #351 — Bound the top-down IR rewrite driver's re-application loop (rest)
Let a rewrite-budget exhaustion stop the enclosing pass fixpoint #352 — Let a rewrite-budget exhaustion stop the enclosing pass fixpoint (rest)
Note [Sequential scoping of Let bindings] omits freshenBinders and alphaKey from its list of implementors #354 — Note [Sequential scoping of Let bindings] omits freshenBinders and alphaKey from its list of implementors (rest)
Bench oracle: an absorbed marginal trace spot is only visible in a green CI step log #356 — Bench oracle: an absorbed marginal trace spot is only visible in a green CI step log (rest)
Wire fourmolu into treefmt so nix fmt covers Haskell #357 — Wire fourmolu into treefmt so nix fmt covers Haskell (rest)
Topologically ordered backlog (priority: bug > infra > perf > rest within the dependency DAG; perf ties break on a stated expected_win, then on the coarse win_bucket breadth estimate, L > M > S). Maintained by the backlog groom; do not edit by hand.
EffectRunArgsemantics, notbindE/pureEnames #228 — Marker-driven magic-do: build do-chunks fromEffectRunArgsemantics, notbindE/pureEnames (rest)redundant-parameter#273 — Codegen: dropped unused parameters make call sites trip lua-language-serverredundant-parameter(rest)defaultcannot opt a binding out of derived inline directives #325 — Directivedefaultcannot opt a binding out of derived inline directives (rest)