Known Issues

Zaplib is still in its early days, and there are quite a few things to stabilize. Here are some of the known issues.


  • Few automated tests yet (except for JS<=>Wasm bridge and some font stuff).

Wasm runtime

  • test_multithread deadlocks in Chrome after a while (not sure about other browsers).
  • Safari 15.2 test_multithread doesn't work well at all (even after this bugfix).
  • Touch is not super well tested/supported yet.
  • Memory initialization in Mobile Safari is not working well (often doesn't allocate enough memory); see also this thread.
  • Threads leak memory since we never deallocate the TLS/shadow stack (see also this issue).
  • Error handling is confusing; a panic can cause the console to get flooded with unrelated errors afterwards.

JS<=>Wasm bridge

  • Issues with capturing/preventing mouse events (e.g. right click).
  • No enforcement of buffer constraints (e.g. read-only; no use after moving ownership back to Rust).


  • Some memory leakage / wastage of CPU/GPU buffers.
  • Resizing the window can be janky/laggy.
  • Layouts can be confusing/buggy.
  • 2d rendering API doesn't fully match HTML 2d canvas behavior (though we have to decide what level of discrepancy we're okay with).

OSX native

  • Redrawing seems to leak a lot of memory.

OSX Zapium

  • Stuck on old version (because we only got single process working on an old version).
  • Missing APIs compared to JS<=>Wasm bridge.
  • Too many memory copies.
  • Missing support for layering Rust rendering behind web rendering (only on top is supported).


  • Bunch of missing APIs.
  • Not well-tested.
  • Windows is currently broken altogether.