* Fix dangling webdriver
* Embed humor sans font
* Refactor matplotlib testing codes
* Trigger CI
* Trigger CI
* Catch error when import from js fails
* Update changelog
* Apply suggestions from the review
Having to add `emsdk/upstream/emscripten` to all the emscripten patches is a
nuisance. If at some point we want to patch a file in a different folder, we can
separate the patches into multiple folders. In particular this should make it
easy to migrate patches using `git am`, `git rebase`, and `git format-patch`.
Our package build process currently has a significant flaw: we first run setup.py, recording all compilation commands, then we rewrite these compilation commands to invoke emcc and replay them, and then we pray that the cross compiled executables ended up in the right place to go into the wheel. This is not a good strategy because the build script is allowed to implement arbitrary logic, and if it moves, renames, etc any of the output files then we lose track of them. This has repeatedly caused difficulty for us.
However, we also make no particularly significant use of the two pass approach. We can just do the simpler thing: capture the compiler commands as they occur, modify them as needed, and then run the fixed command.
I also added a patch to fix the numpy feature detection for wasm so that we don't have to include _npyconfig.h and config.h, numpy can generate them in the way it would for a native build. I opened a numpy PR that would fix the detection for us upstream:
numpy/numpy#21154
This clears the way for us to switch to using pypa/build (as @henryiii has suggested) by removing our dependence on specific setuptools behavior.
This is on top of #2238.
* fix: lock around logging and archiving portions
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* refactor: fewer locks
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
This reduces the text output when an error is hit, removing the tracebacks for known errors. Tracebacks are for unknown/unexpected errors - if you expect an error, it's better to print out an actual error message. I've also made the patch applying a bit more verbose in case it helps, as it sometimes does.
Also improvements to `BashRunner`: it no longer hangs when an error is raised and it is now a context manager
One can select which benchmark (pystone, numpy, matplotlib, or all) to be run through command-line arguments.
We can divide each benchmark to separate CI jobs in the future if needed.
Moved pystone benchmark to benchmark directory, preventing it from being included in Pyodide release.
Unfortunately it is legal Javascript to throw weird stuff. Also unfortunately,
emscripten likes to throw weird stuff. Our `fatal_error` handling routine used
to incorrectly assume that things thrown were errors. This fixes it.
* benchmark html5 canvas renderer
* adhere to lint
* rectify condition
* increase timeout
* do suggested changes
* adhere to lint
* use correct backend for benchmarks
* reintroduce tests + fix futures callback
* adhere to lint
* increase timeout for tests
* use selenium_standalone for tests
* increase timeout for check_comparison
* add result() to Future
* add debugging print statement
* adhere to lint
* use draw() instead of draw_idle()
* add new reference image for math text
* return NaN for non-native
* replace math text image for chrome as well
* increase timeout
* selenium standalone for benchmarks
* only matplotlib benchmarks
* re-enable benchmarks for numpy
* adhere to lint
* increase timeout