- Timeout support for
eval/3via:timeoutoption (milliseconds). Long-running JavaScript code can be interrupted, returning{:error, :timeout}. Uses QuickJS's built-in interrupt handler mechanism with monotonic clock for accurate timing. Context remains usable after timeout.
- Change license from MIT to Apache 2.0
- Add NOTICE file per Apache 2.0 requirements
- Add attribution for derived code from tv-labs/lua
- Initial release of MquickjsEx
- Embed MQuickJS JavaScript engine directly in Elixir processes via NIFs
- Bidirectional function calls between Elixir and JavaScript using trampoline pattern
- Automatic type conversion between Elixir and JavaScript types (nil, booleans, numbers, strings, lists, maps, functions)
MquickjsEx.APIbehaviour for defining reusable function modules withdefjsmacro- Support for nested scopes in API modules (e.g.,
utils.math.add) - Variadic function support via
@variadic trueattribute - Private storage for associating Elixir data with contexts without JavaScript exposure
- Configurable memory limits (default 64KB, minimum 10KB)
- Sandboxed execution with no file system or network access