https://github.com/kripken/emscripten

sort by:
Revision Author Date Message Commit Date
28a144c OffscreenCanvas + proxied Canvas support (#6254) This PR improves supports for OffscreenCanvas, allowing pthreads to resize canvases from threads, and also creating proxied canvases on the main thread when OffscreenCanvas is not present. Proxying GL has the benefit of enabling support for eglMakeCurrent(), for true multithreaded WebGL access, i.e. threads can acquire and release access to a single GL context. Additionally this PR optimizes the proxied GL calls to run asynchronously whenever possible, to avoid synchronous blocking. For example UE4 runs in general without having to block to wait for sync GL calls at all. Proxying naturally has a performance impact compared to native OffscreenCanvas. That is why proxying is optional, and codebases explicitly need to enable it via OFFSCREEN_FRAMEBUFFER flag when desired. Codebases will want to choose whether to do true OffscreenCanvas, whether to proxy, or whether to do both, with proxying as a fallback to OffscreenCanvas, so this PR follows an "all options open" type of approach so that codebases can experiment, to find bugs and gauge performance. This is the last PR of the Multithreading series, and also the largest, given that the WebGL proxying part touches all GL functions. This should be looked at very last after all of the other Multithreading PRs have landed. 14 November 2018, 22:02:55 UTC
f24cd74 Remove final references to EMCC_FAST_COMPILER (#7500) This backend was removed in 2015 (#3347). It should save to remove final references to this environment variable. 14 November 2018, 19:33:34 UTC
2f8a34b use cm instead of Module in the Embind unit-tests. (#7504) This is needed when running this test in other environments where Module isn't defined, like when using this from the IMVU module loader. 14 November 2018, 18:10:34 UTC
d4f4cfe Reduce error to warning when building with fetch+wasm+pthreads (#7501) The fetch-worker does work with wasm, but that doesn't mean we can't use the non-blocking parts of fetch API. Partial fix for #7024 14 November 2018, 13:39:38 UTC
c2b63db Do not generate redundant invoke_() functions for asm.js or wasm (#7497) 14 November 2018, 13:06:29 UTC
a4595d2 Allow user to override default for EMULATED_FUNCTION_POINTERS (#7498) 13 November 2018, 22:16:21 UTC
f4cda87 Use unittest methods to signal test failures (#7482) Also, use bare `raise` when re-raising so the original call stack is preserved. 13 November 2018, 18:36:31 UTC
fd38f3b Make strftime/strptime round trip with %c. (#7491) Currently strftime formats %c using '%a %b %d %H:%M:%S %Y' but strptime parses %c using '%x\s+%X'. This means that %c won't round-trip. This patch changes strptime to use '%a %b %d %H:%M:%S %Y'. This seems to be the default behavior on WASM libc (given the default environment variables and locale). 13 November 2018, 16:40:30 UTC
b10fcd4 if many browser tests hang, skip running the browser portion (#7486) In the browser test suite we wait for tests to finish or a timeout to occur. If the test just hangs (say, waiting on some event that never happens) then we hit the timeout. This doesn't happen normally, but if there's a problem on CI, like we have temporary breakage of some form, then we can hit the timeout on every single test, and we have hundreds of them which is very painful. To avoid that, this PR tracks hanging/unresponsive tests, and after we reach 10 we stop invoking the browser and show a message instead (we still test compilation though, which is safe). * This should not hide errors as it will only skip after 10 of them - enough that we should be paying a lot of attention to the results anyhow! * In practice, I've never seen 10 random timeouts occur - maybe 1 or 2, not sure if even 3 or 4. So we should not hit this randomly, and only when things are just broken for that test run anyhow. 13 November 2018, 15:57:41 UTC
7d99766 add some docs on focus and keyboard events [ci skip] 12 November 2018, 19:23:09 UTC
1fc1c90 set a tabindex on the default html canvas (#7484) Without it, it cannot be focused, so the user cannot click on it and have the canvas receive events. For example, emscripten_set_keypress_callback("#canvas", 0, 1, key_callback); (note #canvas) will just not receive any events. Set a value of -1, which just means 'focusable' and does not include it in the tab ordering, which is the same as before. 12 November 2018, 19:16:58 UTC
f9405d9 remove redundant changelog entry [ci skip] 12 November 2018, 18:53:09 UTC
ad5762a Waterfall CI, test upstream LLVM wasm backend (#7474) This gets CI for the upstream LLVM wasm backend on Circle. It uses the emsdk to get the lkgr build from the waterfall (using the code @jgravelle-google added), then uses that for the LLVM, clang, and Binaryen binaries. This uses Python3 and found a bunch of bugs there, fixes already in separate PRs that have landed. This PR includes the same tests currently run on the waterfall (binaryen2, wasmobj2, other) and they all pass. 12 November 2018, 17:42:27 UTC
20cc1f1 Minify asm.js module import names on -O1 and higher, but not when -g2 or higher is in effect. (#7452) 12 November 2018, 15:31:58 UTC
4bba062 Document the different combinations of build outputs that Emscripten can produce. (#7471) 12 November 2018, 08:18:52 UTC
d9d4239 fix closure minification of Math.*, and remove previous workaround code for it. fixes #7472 (#7476) See https://github.com/google/closure-compiler/issues/3141 10 November 2018, 14:43:06 UTC
e25e42c update binaryen port (#7483) 10 November 2018, 01:15:55 UTC
b915581 Remove instructions for LLVM being an experimental target (#7485) [ci skip] 10 November 2018, 00:01:19 UTC
37fffb9 fix wasm-sourcemap.py on python3. fixes binaryen2.test_source_map in that mode (#7468) [ci skip] 09 November 2018, 23:34:52 UTC
fd42222 update changelog 09 November 2018, 14:58:43 UTC
ccbe0b7 Remove the SPLIT_MEMORY option (#7465) * remove the SPLIT_MEMORY option, which was an interesting experiment, but has not found a useful niche, and does not make sense for wasm anyhow 09 November 2018, 14:47:46 UTC
8af8fc9 fix Building.is_wasm on python3 ; fixes wasmobj2.test_linker_response_file on python3 (#7479) 09 November 2018, 04:13:16 UTC
e4f512d show a clear error when tests/test_*.py is run, which is wrong, instead of through the runner (#7455) 09 November 2018, 02:00:35 UTC
515cdd0 remove .mappedGlobals from wasm backend path, it's not used [ci skip] (#7473) 09 November 2018, 01:49:09 UTC
64a9919 Rename tableBase/memoryBase to __table_base/__memory_base (#7467) 08 November 2018, 23:24:10 UTC
bbec323 Fix recent changelog entries (#7475) 08 November 2018, 23:02:19 UTC
4c06e2c Process docs for landing prs [ci skip] (#7404) 08 November 2018, 22:26:55 UTC
f251db1 Add validation for 10_10_10 packed vertices. (#7460) Accept those new WebGL2 values in GL_ASSERTIONS mode 08 November 2018, 20:52:09 UTC
d618c09 Honor EMCC_DEBUG_SAVE for tempfiles.get_temp() (#7462) 08 November 2018, 20:47:35 UTC
55ddf52 determinism fixes for wasm backend on python3 (#7469) Interestingly, this code appears deterministic in practice in python2, but on python3 it is different every single run... After this, binaryen2.test_iostream_and_determinism passes on python3. 08 November 2018, 16:59:22 UTC
002fe96 Fix flake8 issues in ctor_evaller.py (#7456) 08 November 2018, 02:24:17 UTC
b6b2c0f Adds not operator to val. (#7461) Also, some small aesthetic changes to cleanup some other code. 07 November 2018, 19:56:41 UTC
6435eff Add -s WORKAROUND_OLD_WEBGL_UNIFORM_UPLOAD_IGNORED_OFFSET_BUG=1 option. (#7459) 07 November 2018, 18:46:38 UTC
76f6fac * webidl_binder.py: Fix argument not being pointer for jsimplementation (#7426) * * webidl_binder.py: Fix argument type not being pointer for jsimplementation For issue 7425. Looks up by type name rather than the fully qualified type name * Added self to AUTHORS 07 November 2018, 17:25:39 UTC
c346176 HTML5 Event Backproxying. Bump version to 1.38.17 to rebuild cache after adding new field to struct info. (#6202) 07 November 2018, 14:56:38 UTC
527cb9b emcc: IndexError: string index out of range (#4765) Handle too-short files in is_bitcode detection code. 07 November 2018, 00:41:07 UTC
2c2e6f8 Add prototypes for MAIN_THREAD_EM_ASM functions to wasm backend (#7454) This works for the single-threaded case because wasm-emscripten-finalize checks for functions with 'emscripten_asm_const' as a prefix, and rewrites these to normal EM_ASM calls. This passes the core tests, but does not pass in the browser test that actually checks threadedness. 06 November 2018, 22:55:04 UTC
2a198cb Fix EVAL_CTORS with wasm backend (#7458) Strip the extra '_' from the names of the wasm ctors when building with the wasm backend. Split ctor eval tests so that can be enabled/disabled with finer granularity. 06 November 2018, 16:25:44 UTC
5621e23 prevent exception in val::new_() after memory growth (#7409) val::new_() calls an allocator that closes over the value of HEAP32 when the allocator was created. This reference becomes stale after memory growth 06 November 2018, 03:13:54 UTC
8de06eb html autodetection ENVIRONMENT='web' is not possible, workers are also allowed (#7453) [ci skip] I doubt it's 2KB under most circumstances (different combinations of closure/minification/platform will give different results), but 2KB happened on my machine and is likely correct up to an order of magnitude. 05 November 2018, 22:01:54 UTC
2908b54 Consistent use of emcc_args in testing framework. (#7435) emcc_args and Building.COMPILER_TEST_OPTS are now consistently used. We probably want to remove this distinction at some point. 05 November 2018, 20:16:09 UTC
ab8a626 Merge pull request #7451 from juj/memoryprofiler_robustness Robustness fixes to memoryprofiler 05 November 2018, 19:14:11 UTC
d45cac8 Merge pull request #7450 from kripken/mod-pthr Show an error on MODULARIZE+PTHREADS, which doesn't work yet 05 November 2018, 08:27:18 UTC
4e1b66f Robustness fixes to memoryprofiler: add Module.prerun if it does not exist, and do not assume stackAlloc to exist 05 November 2018, 08:23:26 UTC
adb5777 show an error on MODULARIZE+PTHREADS, which doesn't work yet 04 November 2018, 19:55:16 UTC
3efad6b Merge pull request #7257 from juj/manual_html5_event_unloading manual_html5_event_unloading 04 November 2018, 13:57:38 UTC
7a7ac4f Add emscripten_html5_remove_all_event_listeners() to allow unregistering all registered event handlers. 04 November 2018, 09:10:17 UTC
af2fc13 Merge pull request #7447 from juj/add_needed_proxy_sigs_for_webgl Add the missing needed signatures to proxy WebGL 1 and 2 functions 04 November 2018, 09:04:32 UTC
2862f87 Add the missing needed signatures to proxy WebGL 1 and 2 functions 04 November 2018, 09:04:05 UTC
0e35a5c Add a testcase for #7361 [ci skip] (#7381) * add a testcase for #7361 * test update - test_lower_intrinsics only makes sense in asm.js, and after sanitizing function names we have less unnecessary stuff like llvm_ helpers 04 November 2018, 02:43:10 UTC
457c8c7 Tidy up handling of `asmConsts` and improve error handling (#7410) 03 November 2018, 02:15:43 UTC
ca79bf1 Fix TestRunner.is_wasm() (#7442) As a result of this two sourcemap tests in test_other.py started working but needed some fixups for python3 compat. 03 November 2018, 00:05:33 UTC
b0a2f55 Fix for missing tools like `eliminator` - limit the scope of `node_modules .gitignore` filter to top level (#7444) Fixes: https://github.com/kripken/emscripten/issues/7427 Supersedes: https://github.com/kripken/emscripten/pull/7443 Signed-off-by: Layla <layla@insightfulvr.com> 02 November 2018, 23:41:14 UTC
b905503 update changelog [ci skip] 02 November 2018, 22:48:04 UTC
841e796 Minify imports and exports (#7431) For background see #7414 This uses a new binaryen pass WebAssembly/binaryen#1719 to minify the import and export names in wasm, and then updates them in JS too. These are things that closure and other minfiers cannot minify themselves since they are on the js/wasm boundary, so it's up to us. This is kind of related to metadce, which also optimizes stuff on that js/wasm boundary. metadce finds things that can be removed entirely, while this new operation minifies the names of what remains. Turns out this is pretty useful, if you have lots of imports or exports. On BananaBread there are lots of GL calls, and we save 10% of JS size and 1% of wasm size. On Bullet we wrap classes for JS, which means calls to lots of functions, and we save 16% of JS size and 8% of wasm size. Much more than I expected! Some other minor fixes in this PR: * The emterpreter had some hacky way to add the extra globals it needs. Moved those to the proper place. This did require disabling a tiny part of the current test for the emterpreter (asm.js validation of raw emterpreter output, before integration back into the emscripten output), but that's not that important now - it was more useful when bringing it up initially. * Fix embind usage of dynamic dyncalls - they are on the Module object, we should not access Module.asm directly. * For CI testing this uses a temp tag in the binaryen port. Before landing we should tag binaryen and update that. 02 November 2018, 22:45:10 UTC
9b5fce2 1.38.16 02 November 2018, 21:59:56 UTC
af84d8d Firefox nightly fix (#7441) * update firefox nightly download link * fixes #7438 02 November 2018, 20:24:31 UTC
9927a76 Don't allow memory growth with pthreads (#7439) It currently doesn't work, see #7382 02 November 2018, 18:46:53 UTC
6df3825 Cleanup dynamic linking test helper. NFC. (#7432) - Use RUNTIME_LINKED_LIBS setting rather than injecting a pre-js. - Remove needless try/catch - Fix warnings about .js extension being used when building wasm side modules. 02 November 2018, 15:31:32 UTC
513ebc5 Remove BUILD_AS_SHARED_LIBRARY settings (#7433) This settings is apparently deprecated and has been replaced by SIDE_MODULE. 02 November 2018, 15:31:00 UTC
1ac8071 Fix python indentation in tests/test_core.py. NFC. (#7434) 02 November 2018, 15:29:11 UTC
35a7dd4 Merge pull request #6243 from juj/webgl_proxy_fixes Multithreading 33/N: WebGL proxying preliminaries 02 November 2018, 12:43:15 UTC
fb58b95 Merge pull request #6203 from juj/fix_multithread_exit_and_tests Multithreading 31/N: Fix multithreaded exit, and testing 02 November 2018, 12:24:32 UTC
a1675e9 Fix multithreaded exit, and testing 02 November 2018, 09:14:22 UTC
55ee5c3 Merge pull request #6195 from juj/emscripten_thread_sleep Multithreading 26/N: emscripten_thread_sleep 02 November 2018, 09:07:09 UTC
86ee826 Sockets fixes + testing (#7420) * Add some missing stuff in deps_info.json which fixes #7417. * Move the non-browser-dependent parts of the sockets tests into other, so that they run on CI. 02 November 2018, 02:07:51 UTC
2e99456 use @required_pthreads in all necessary places (#7407) 01 November 2018, 22:48:49 UTC
264c006 fix browser.test_pthread_sbrk - the test assumed each thread must see some allocation failures, but it is possible one or two will be lucky to run early enough so that their allocations all succeed (#7415) 01 November 2018, 22:48:29 UTC
284e934 Fix test_emcc_s_typo (#7430) 01 November 2018, 21:38:12 UTC
77daddf Error on invalid -s setting (#7422) 01 November 2018, 21:33:41 UTC
fc2b82b Document recent -s flag parsing changes (#7423) Document recent -s flag parsing changes 01 November 2018, 21:27:22 UTC
432bc0f Remove js_transform from test runner (#7424) In all cases it was being used for pre-js or post-js injection which is better don't via --pre-js/--post-js. 01 November 2018, 21:25:50 UTC
fc1c44a Merge pull request #6198 from juj/store_module_with_sync_wasm_compile Multithreading 27/N: Store Wasm Module also in sync Wasm compilation 01 November 2018, 18:09:12 UTC
d79256d Expose internal do_sleep() as a public emscripten_thread_sleep() function 01 November 2018, 15:28:05 UTC
df84567 Merge pull request #6193 from juj/proxy_glut Multithreading 24/N: Proxy GLUT functions to main thread 01 November 2018, 15:18:43 UTC
78253f7 Proxy GLUT functions to main thread 01 November 2018, 15:17:53 UTC
dca285d WebGL fixes and cleanup Add some missing signatures, aliases, handle copying of `__proxy` attributes, and don't trip up on makeContextCurrent/deleteContext(null). 01 November 2018, 15:09:01 UTC
0001d42 Pass Wasm Module to receiveInstance() also when doing sync Wasm compilation 01 November 2018, 14:49:55 UTC
a6b6c5d Merge pull request #6199 from juj/drop_debug_prints Multithreading 28/N: Drop debug prints in ASMFS and Fetch API 01 November 2018, 08:13:25 UTC
98119a5 Merge pull request #6194 from juj/fix_fetch_deadlock Multithreading 25/N: fix_fetch_deadlock 01 November 2018, 08:05:56 UTC
309f7e0 Allow `-s FOO` as shorthand for `-s FOO=1` on the command line (#7419) 31 October 2018, 21:58:41 UTC
2a73c5e fix an FS trackingDelegate usage of err (#7418) Which was also a local var, and so invalidly used. Instead, use console.log, consistently with the rest of the trackingDelegate code. 31 October 2018, 20:38:00 UTC
4098e5b Restrict the environment in which emscripten config file is parsed (#7412) This change means that only certain keys are pulled out of the config file and limits its ability to do arbitrary things to the running python environment. It also allows us to validate the types of the various settings. 31 October 2018, 18:29:51 UTC
b9db760 Parial revet of #7254: Remove EMSCRIPTEN_ROOT from config file (#7411) Turns out there are more third party project using the 'exec' of ~/.emscripten_config to locate EMSCRIPTEN_ROOT (e.g. https://github.com/godotengine/godot) so for now reinstate it. 31 October 2018, 17:29:54 UTC
8d94867 Drop debug prints of Fetch and Asmfs behind special flags 31 October 2018, 08:15:15 UTC
bdb655c Fix emscripten_fetch_wait() not to block (and deadlock) on the main browser thread, but return with an error 31 October 2018, 08:12:36 UTC
6ee9013 Disable lsr in the wasm backend [ci skip] (#7386) I did another round of tests now to follow up on WebAssembly/binaryen#1054 , comparing v8 and sm, on the wasm backend with and without lsr. Disabling lsr reduces code size in all the benchmark suite, up to 1% (but usually less). It's also somewhat faster (5-10%) in a few microbenchmarks, on both VMs (so this is not a VM-specific issue). So seems worthwhile. LLVM bug: https://bugs.llvm.org/show_bug.cgi?id=39488 31 October 2018, 00:48:59 UTC
9a19fdb fix warning in test_minimal_dynamic (#7398) 31 October 2018, 00:35:26 UTC
6ffdf1e Adds 'throw' method to val. (#7405) As mentioned in #6330. Something like this will now work: val::global("TypeError").new_("wrong type").throw_(); In the tests found in test_val.cpp it can be seen that an error can be thrown in CPP and successfully caught in JS. 30 October 2018, 23:27:26 UTC
65a38c1 Autogenerate gl.c, so that GetProcAddress supports all possibilities (#7403) Also manually remove one entry that appeared twice. 30 October 2018, 21:17:09 UTC
0e946b3 Don't EXPORT_ALL for linkable code (#7371) This is a breaking change, in which we no longer set EXPORT_ALL in MAIN_MODULEs and SIDE_MODULEs. This makes our linking behavior more "standard", and is more future-proof for wasm backend linking. Fixes #5586, fixes #7189. See more context there. 30 October 2018, 21:16:32 UTC
b5170dd Get most chrome browser tests running (#7375) * use new KeyboardEvent(), as event.initKeyEvent was deprecated and removed from chrome * remove dump() calls * mark a test as no-chrome * add a mechanism to manually run a reftest, for tests that are async * xvfb fixes: show the log, and automatically find a port, so that another invocation during the emrun test succeeds * add some debugging code for browser tests * update sdl2 port to version_15, which brings in a fix for egl error reporting on context creation failure (which happens on chrome on ci sometimes) * browser test improvements: mark pthread_sbrk as flaky, mark two more tests that need a manual reftest trigger, and avoid creating an sdl2 renderer if we don't need one in some tests * more reference slack for browser.test_sdl2_gfx * mark browser.test_sdl2_mouse as flaky - the errors there appear to just be random weirdness on headless chrome's side 30 October 2018, 18:05:43 UTC
e5c0cfb Changes for UTF-8 EM_ASM and EM_JS JS CODE. (#7379) Allows entering UTF-8 in EM_ASM and EM_JS, before this we crashed on such content. 30 October 2018, 00:36:30 UTC
57bd27c Add support for caching large preloads (#7322) At the moment, the --use-preload-cache option stores everything under one entry in IndexedDB which causes issues for preloads >133169152 bytes(?) in chrome; this PR adds support for chunking the cache into separate entries. 29 October 2018, 22:32:58 UTC
82ea680 handle musl fflush properly ; fixes #7360 (#7376) This interprets the writev syscall of a NULL buffer as a flush, which is what musl does in practice 29 October 2018, 21:31:30 UTC
07c2a4a Merge pull request #7401 from rookie1024/incoming Fixed a hang in eglGetConfigs. 29 October 2018, 13:45:36 UTC
4edac67 Merge pull request #7397 from kripken/fix_read_proxied_function_signatures [wasm-backend] Fix crash in read_proxied_function_signatures 29 October 2018, 13:42:46 UTC
2df0d23 Fixed a hang in eglGetConfigs. 27 October 2018, 23:27:57 UTC
1a99a91 fix an ase regression in webidl binder (#7392) Without the ; it can hit a corner case depending on the code after it, this happened in ammo.js. 26 October 2018, 22:34:54 UTC
a62f64f support empty engines in ~/.emscripten, e.g., SPIDERMONKEY_ENGINE = None (or []), if the user just doesn't have them installed (#7395) 26 October 2018, 22:34:23 UTC
back to top