Release Notes¶
Stopify 0.3.0¶
Cleanup and documented Stopify’s Node API.
Stopify can now execute blocking operations at the top-level. For example, the following program now works:
function sleep(duration) { asyncRun.pauseImmediate(() => { window.setTimeout(() => asyncRun.continueImmediate(undefined), duration); }); } const asyncRun = stopify.stopifyLocally(`sleep(1000)`, { externals: [ 'sleep' ] })); asyncRun.run(() => { });
In previous versions of Stopify, this program would have raised an error.
You could effective run this program by wrapping the blocking operation in a thunk, i.e.,
function() { sleep(1000); }()
. However, this wrapping is now unnecessary.Potentially breaking change: Top-level variables declared within Stopify no longer leak into the global scope of the page. In previous versions of Stopify, top-level variables would leak as follows:
const asyncRun = stopify.stopifyLocally(`var x = 100;`); asyncRun.run(() => { console.log(x); // prints 100 });
This is no longer the case. However, this may break programs that relied on this behavior.
Stopify 0.2.1¶
- Fixed a bug introduced in release 0.2.0, where
stopifyLocally
would fail if run more than once.
Stopify 0.2.0¶
- Exposed the
velocity
estimator and set it as the default instead ofreservoir
. In our experiments,velocity
performs better and has negligible overhead. - Added the
.stackSize
and.restoreFrames
runtime options, which allow Stopify to simulate an arbitrarily deep stack. - Fixed a bug where programs that used
return
orthrow
in thedefault:
case of aswitch
statement would not resume correctly. - Added the
processEvent
function to the Stopify API.
Stopify 0.1.0¶
- Initial release