From:  Jeff Walden <>
Date:  29 Aug 2018 10:52:06 Hong Kong Time

JS compilation/evaluation APIs are now in #include "js/CompilationAndEvaluation.h"


It's a long-term SpiderMonkey goal to break up jsapi.h into separate, small headers.  jsapi.h is *maybe* convenient in that it's one #include, but that also means compiling SpiderMonkey is super-slow when that file is touched (which is often).

I just took a notable step in that direction, that probably breaks every JSAPI user.  :-)  Specifically, all main-thread compilation/evaluation APIs are now in "js/CompilationAndEvaluation.h", and the definition of JS::SourceBufferHolder (needed for many compilation APIs) is now in "js/SourceBufferHolder.h" -- and *neither header is #include'd in jsapi.h*.

I didn't change API signatures: existing code should work again after you fix your #includes.

We have no time line for when jsapi.h will be fully broken up, or into what smaller headers it'll be broken.  But it's going to keep happening, and when I see *removals* of API from jsapi.h into headers not #include'd within it, such that existing users depending on the one-stop shop will break, I'll try to make a note in mdt.js-engine and mdt.js-engine.internals.