- update mozjs (spidermonkey 88)
- use EventLoop from utils
- use js_utils::Script
- renamed lib from spidermonkey_runtime to spidermonkey_runtime
- internals
- refactored EsValueFacade.to_es_value to accept rval instead of returning JSVal
- changed console impl to Proxy
- moved reusable code to utils project
- jsapi_utils
- added freeze_object and deep_freeze_object utils to jsapi_utils::objects
- added utils for working with typed_arrays in jsapi_utils::typed_arrays
- added utils for converting between Vec and Arrays in jsapi_utils::arrays
- added utils for working with BigInt
- Script support
- Dynamic module imports
let {my, module_stuf} = await import('my_module.mes'); // or import('my_module.mes').then((my_module) => { my_module.my(); let b = my_module.module_stuff; });
- internals
- renamed MicroTaskManager to EsEventQueue
- relative path support for module loading (#32) (the module now has a String argument which contains the path of the module which is loading the sub module)
- deprecated and removed invoke_rust_op (replaced with add_global_(a)sync_function)
- jsapi_utils
- added utils for converting Handle to RawHandle an vice-versa
- added util for reporting exceptions (jsapi_utils::report_exception)
- added utils for compiling script to a JSScript object and executing it
- added utils for compiling script to a JSFunction object
- renamed function util methods from *method* to *function*
- changed the way you add and invoke rust methods
- EsRuntime::add_global_(a)sync_function
- SmRuntime::add_global_function
- added EsProxy(Builder) for reflecting rust objects while using EsValueFacade as arguments and return types
- changed the methods/getters for Proxy (rval: MutableHandleValue instead of returning a JSVal)
- lots of inline documentation added
- renamed es_utils to jsapi_utils
- renamed EsRuntimeWrapper(Builder/Inner) to EsRuntime(Builder/Inner)
- minor updates
- Support JSNative methods for proxy classes
- Proxy class (JSAPI)
- removed necessity to box closures when calling EsRuntimeWrapper::run_in_spidermonkey_runtime_thread*()
- added possibility to invoke EsValueFacade when it wraps a JS function. E.g. when calling a rust-op with a function arguments to be used as consumer
- added utils for constructing objects based on a constructor
- broke compatibility because of changed interface for rust-ops, hence version jumped to 0.3
- rust-ops now run async and return a promise from rust
- lots of threading related issues, mostly about preventing deadlocks when using EsValueFacade::new_promise()
- EsValueFacade::new_promise, create a facade with a closure which will be run async, results in a Promise being passed to the script runtime
- promise instantiation, resolution and rejection in es_utils::promises
- init code revamp, now supports creating, dropping and recreating multiple runtimes
- use latest mozjs from github
- Builder for EsRuntimeWrapper
- console.assert
- major refactor of how to use the JSAPI, this is now always done by
sm_rt.do_with_jsapi()
so we can more predictably root the global and enter the compartment. - caching of modules, so they really only run once
- added support and utils for modules (see RUST#modules)
- added a constructor for runtime for use with modules
- currently modules are not cached and thus loaded several times, will be fixed later
- added utils for arrays and objects (arrays.rs and objects.rs)
- refactoring of getting obj props (root first)
- created eval_void methods to eval without copying result to EsValueFacade
- EsValueFacade can now be used to convert Vecs to Arrays and vice versa
- added utils for Promises (check if an object is a Promise and create a new Promise)
- moved function invocation util to functions.rs
- eval no longer needs a return statement
- reworking a lot of methods to use Handle instead of Value (force the invoker to root the values before doing anything)
- added ability to call function in a nested object
- initial release