The new Emscripten has a number of changes. It modernizes its usage of JS, which requires some config updates.
Unfortunately it also ends up requiring a lot more boilerplate, largely because our template hacks for vectors and optional no longer work. The idiomatic solution is to use register_optional and register_vector, but the former is annoying because it doesn't allow null and the latter is annoying because it corresponds to some specific vector type in JS instead of native arrays.
Depends on D15367