Skip to content
Brian Warner edited this page May 15, 2020 · 8 revisions

Compatibility notes

We'll use this page to keep reports and information about compatibility (or problems) between SES and various libraries.

  • tape 4.11.0 vs SES-0.7.7: must import tape before lockdown() (override mistake: https://github.com/Agoric/SES-shim/issues/293).
  • tape 5.0.0: must import before lockdown(), but even then t.throws fails to recognize exceptions (test always errors), maybe due to identity discontinuity
  • console (Node.js builtin): must harden(console.__proto__) before you can harden(console) or harden the global object of a new Compartment which was given console as an endowment (console inherits from an intermediate object rather than directly inheriting from Object) (https://github.com/Agoric/SES-shim/issues/292)
  • assert (Node.js builtin): no problems
  • better-assert (npm): loads after lockdown, but explodes if a test fails: callsite modifies Error.prepareStackTrace
  • insist (npm): same as better-assert
  • chai (npm assertions library): imports after lockdown() fine. No stack traces unless noTameError.
    • Unrelated to SES: running under -r esm dumps a 300KB line of esm.js source to stderr before anything else
  • node-lmdb: cannot import after lockdown(), bindings modifies Error.prepareStackTrace and Error.stackTraceLimit
Clone this wiki locally