Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
None
Purpose of change
The emscripten build has been crashing whenever an exception is
throw
n, whichturns out to be actually surprisingly rarely! But #71760 started making
something throw during JSON loading. In normal builds it's caught and handled
transparently, but without -fexceptions, emscripten will translate C++
exceptions into a full halt of the program, just as if the exception wasn't
caught.
Describe the solution
Enabling -fexceptions does have a performance impact, but being unable to play
the game seems worse than being able to play it but a bit more slowly, so here
we go :D
Describe alternatives you've considered
The particular exception that was being caught was during JSON deserialization,
which seems possible to rewrite not to use exceptions. But exceptions seem
fairly widely used in the project, so let's just enable them for now and see
how far that gets us. Eventually emscripten will support asyncify +
-fwasm-exceptions for wasm-native exception handling and the perf impact will
go away.
Testing
Game loads under wasm now!
Additional context