Fixes bugs and adds features.
- Added weak map feature. The new
zweak_mapis like JS weak maps and shares their GC semantics (see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap). - Improve error handling for too-large alignments (make them cause a safety panic rather than internal error).
- Add finer-grained GC control APIs. It's now possible to easily detect when the GC completes cycles, wait on any cycle, and to asynchronously start cycles.
- Add support for closures. A closure is a function pointer that carries extra data. Useful for safely supporting libffi's closure API without any JITing or static trampolines.
- Fix handling of by-value struct arguments (issue #7).
- Improve error messages for memmove safety checks. The message now tells you if the failing check is for the source pointer or the destination pointer.