Skip to content

Use js_of_ocaml's --enable=effects flag to fix stackoverflows

Motivation and Context

We're facing stackoverflows around LexerLib


This MR uses js_of_ocaml's new --enable=effects flag which turns non tail recursive code to tail recursive CPS (therefore fixing stackoverflows in browser)


  • compiler
  • website
  • webide
  • vscode-plugin
  • debugger

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Performance improvement (non-breaking change that improves performance)
  • None (change with no changelog)


Fixes stackoverflows during Lexing in the browser


  • Changes follow the existing coding style (use dune @fmt to check).

Merge request reports