JS: emsdk version compatibility
emsdk 3.1.42 changed some struct offsets relative to 3.1.41, causing test failures (in particular the stat
struct has removed some padding)
We can fix CI by holding back the emsdk version on the test runner, but this won't help people who have 3.1.42 installed on their own system.
Ideally we have:
- checks for the compatible emsdk version range in the
configure
script - bindists that accept the same emsdk version range as source dists
- compatibility across emsdk versions even in the presence of minor struct changes (?)
I wonder how frequent struct changes are. If they're highly exceptional, we can just bump the minimum required emsdk to 3.1.42, update the struct offsets in the jsbits/base.js
file (and perhaps a few other places), and be done with it.
Alternatively, we might want some tool similar to hsc2hs
, or some processing option in the //OPTIONS:
line in .js
files to allow the JS code to query the C compiler for offsets and constants.