Skip to content

No effects version#7

Merged
davesnx merged 2 commits intomainfrom
explore/no-effects-v2
Mar 25, 2026
Merged

No effects version#7
davesnx merged 2 commits intomainfrom
explore/no-effects-v2

Conversation

@davesnx
Copy link
Copy Markdown
Owner

@davesnx davesnx commented Mar 25, 2026

No description provided.

davesnx added 2 commits March 25, 2026 07:11
…on calls

Eliminates all 28 Effect.t constructors and the two large effect handlers
(run_deep, run_deep_source). Combinators now call handler helpers directly
via DLS-based state, removing continuation capture/resume overhead.

Architecture:
- Domain.DLS.new_key for per-domain parser state
- Direct function calls instead of Effect.perform + handler dispatch
- Exceptions for backtracking (or_, look_ahead, many)
- Same handler helpers reused verbatim

Results vs effects version (main branch):
- json_fused:    6.05M -> 6.09M  (~same, handler helpers dominate)
- json_generic:  1.30M -> 1.90M  (+46%, effect overhead removed)
- csv_generic:   1.63M -> 2.39M  (+47%)
- arith_fused:   8.53M -> 10.0M  (+17%, fold_left uses many/or_)
- arith_generic:  1.04M -> 1.83M (+75%)
- Minor alloc:   ~30-40% reduction across all benchmarks

Generic Parseff now beats standard Angstrom on all benchmarks.
All 328 tests pass. Public API (.mli) unchanged.
@davesnx davesnx merged commit 5b85644 into main Mar 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant