summaryrefslogtreecommitdiff
path: root/core/runtime.rs
AgeCommit message (Collapse)Author
2021-03-08fix(core): shared queue assertion failure in case of js error (#9721)Inteon
In case JavaScript throws an unhandled error, part of the "shared_queue" could be still unprocessed. If this is the case; throw the js runtime error instead of asserting on the queue size not being 0.
2021-03-04fix(runtime/web_worker): Don't block self.onmessage with TLA (#9619)Nayeem Rahman
This commit rewrites implementation of "JsRuntime::mod_evaluate". Event loop is no longer polled automatically and users must manually drive event loop forward after calling "mod_evaluate". Co-authored-by: Nayeem Rahman <nayeemrmn99@gmail.com> Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2021-02-23refactor(core): cleanup module implementation (#9580)Bartek Iwańczuk
* remove "ModuleNameMap", instead define that map inline inside "Modules" struct * remove "dyn_import_id" argument from "mod_instantiate" * rename "Modules" struct to "ModuleMap" * rename "JsRuntime::modules" to "JsRuntime::module_map"
2021-02-23refactor(core): Allow multiple overflown responses in single poll (#9433)Inteon
This commit rewrites "JsRuntime::poll" function to fix a corner case that might caused "overflown_response" to be overwritten by other overflown response. The logic has been changed to allow returning multiple overflown response alongside responses from shared queue.
2021-02-20fix(core/runtime): Fix dynamic imports for already rejected modules (#9559)Nayeem Rahman
2021-02-19fix(core): Make dynamic import async errors catchable (#9505)Nayeem Rahman
Fixes #6259
2021-02-17Make ModuleSpecifier a type alias, not wrapper struct (#9531)Ryan Dahl
2021-02-16feat: add structured cloning to Deno.core (#9458)Inteon
This commit adds two new "Deno.core" APIs: - "Deno.core.serialize" - "Deno.core.deserialize" These APIs are used to provide structured cloning of values and will be used for further web worker implementation. Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2021-02-15upgrade: rusty_v8 0.19.0 (#9466)Bartek Iwańczuk
Co-authored-by: Ryan Dahl <ry@tinyclouds.org>
2021-02-09chore: add flag to v8 (#9456)Bartek Iwańczuk
2021-01-11chore: Move comment to correct place (#9086)Ryan Dahl
2021-01-10update copyright to 2021 (#9081)Ryan Dahl
2021-01-07 ignore "use asm" (#9019)Anonymous
Preventing V8 from logging erroneous line numbers. Use wasm.
2021-01-05refactor(core): simplify Deno.core initialisation, remove stale TODO (#8847)Bartek Iwańczuk
This commit rewrites initialisation of the "shared queue" and in effect prevents from double execution of "core/core.js" and "core/error.js". Previously both of these files were executed every time a "JsRuntime" was created. That lead to a situation where one copy of each script was included in the snapshot and then another copy would be executed after loading the snapshot. Effectively "JsRuntime::shared_init" was removed; instead execution of those scripts and actual initialisation of shared queue was split into two helper functions: "JsRuntime::js_init" and "JsRuntime::share_queue_init". Additionally stale TODO comments were removed.
2020-12-28upgrade: rusty_v8 0.15.0, v8 8.8.294 (#8898)Bartek Iwańczuk
2020-12-20Revert "fix: TLA in web worker (#8809)" (#8839)Bartek Iwańczuk
This reverts commit e924bbdf3606e83ff9eef3a8ed640c4ecc34444f.
2020-12-20fix: TLA in web worker (#8809)Bartek Iwańczuk
Implementors of `deno_core::JsRuntime` might want to do additional actions during each turn of event loop, eg. `deno_runtime::Worker` polls inspector, `deno_runtime::WebWorker` receives/dispatches messages from/to worker host. Previously `JsRuntime::mod_evaluate` was implemented in such fashion that it only polled `JsRuntime`'s event loop. This behavior turned out to be wrong in the example of `WebWorker` which couldn't receive/dispatch messages because its implementation of event loop was never called. This commit rewrites "mod_evaluate" to return a handle to receiver that resolves when module's promise resolves. It is now implementors responsibility to poll event loop after calling `mod_evaluate`.
2020-12-11refactor(cli): decouple ops from ProgramState and Flags (#8659)Bartek Iwańczuk
This commit does major refactor of "Worker" and "WebWorker", in order to decouple them from "ProgramState" and "Flags". The main points of interest are "create_main_worker()" and "create_web_worker_callback()" functions which are responsible for creating "Worker" and "WebWorker" in CLI context. As a result it is now possible to factor out common "runtime" functionality into a separate crate.
2020-12-10refactor(core): stack trace mapping (#8660)Bartek Iwańczuk
This commit adds "Deno.core.createPrepareStackTrace". This function was moved from "cli/rt/40_error_stack.js" to unify handling of stack frames in core (before this PR there was implicit dependency on logic in "core/error.rs::JsError"). Unfortunately formatting logic must still be duplicated in "cli/error.js::PrettyJsError" to provide coloring, but currently there's no solution to this problem. "createPrepareStackTrace" can accept a single argument; a function that takes a location and provides source mapped location back.
2020-12-08refactor(core): change script name for core.js (#8650)Bartek Iwańczuk
Co-authored-by: Nayeem Rahman <nayeemrmn99@gmail.com>
2020-12-05docs(core): Fix typo in load_module's docstring (#8564)Paco
2020-12-01fix(compile): disable source mapping of errors (#8581)Bartek Iwańczuk
This commit disables source mapping of errors for standalone binaries. Since applying source maps relies on using file fetcher infrastructure it's not feasible to use it for standalone binaries that are not supposed to use that infrastructure.
2020-11-28chore: clippy future cleanups (#8514)Kitson Kelly
2020-11-27fix: panic in worker when closing at top level (#8510)Bartek Iwańczuk
Fixes panic occurring in worker when "self.close()" is called at the top level, ie. worker shuts down while module evaluation promise hasn't yet resolved.
2020-11-21refactor(core): don't depend on get_identity_hash for modules (#8354)Bartek Iwańczuk
This commit refactors "deno_core::Modules" structure to not depend on "get_identity_hash" function to identify modules, but instead use default hash implementation.
2020-11-21refactor(corr): accept get_error_class_fn in RuntimeOptions (#8444)Bartek Iwańczuk
This commit adds "get_error_class_fn" field to "RuntimeOptions" struct in order to unify configuration of "JsRuntime".
2020-11-13refactor(cli+core): various cleanups in Rust (#8336)KNnut
2020-11-11refactor(core): don't depend on get_identity_hash for promises (#8352)Bartek Iwańczuk
This commit changes how pending promise exceptions are stored in JsRuntime by using global handle to promise instead of its identity hash.
2020-11-06docs(core): document several concepts around JsRuntime and ops (#7897)Jan Haller
2020-10-31fix(core/error): Remove extra newline from JsError::fmt() (#8145)Nayeem Rahman
2020-10-26fix(core/runtime): Indicate exceptions in promises (#8124)Nayeem Rahman
Fixes #4879
2020-10-17refactor(core): more control over isolate creation (#8000)Ben Noordhuis
Make JSRuntime::new() accept a custom v8::CreateParams object to tune the v8::Isolate it creates. Subsumes the functionality of HeapLimits, which I therefore removed.
2020-10-14fix: top-level-await module execution (#7946)Bartek Iwańczuk
This commit changes implementation of top-level-await in "deno_core". Previously promise returned from module evaluation was not awaited, leading to out-of-order execution of modules that have TLA. It's been fixed by changing "JsRuntime::mod_evaluate" to be an async function that resolves when the promise returned from module evaluation also resolves. When waiting for promise resolution event loop is polled repeatedly, until there are no more dynamic imports or pending ops.
2020-10-11reland JsRuntime/Worker is not a Future (#7924)Bartek Iwańczuk
2020-10-10Fix 100% CPU idling problem by reverting #7672 (#7911)Ryan Dahl
* Revert "refactor: Worker is not a Future (#7895)" This reverts commit f4357f0ff9d39411f22504fcc20db6bd5dec6ddb. * Revert "refactor(core): JsRuntime is not a Future (#7855)" This reverts commit d8879feb8c832dbb38649551b1cb0730874f7be6. * Revert "fix(core): module execution with top level await (#7672)" This reverts commit c7c767782538243ded64742dca9b34d6af74d62d.
2020-10-07refactor(core): JsRuntime is not a Future (#7855)Bartek Iwańczuk
This commit rewrites deno_core::JsRuntime to not implement Future trait. Instead there are two separate methods: - JsRuntime::poll_event_loop() - does single tick of event loop - JsRuntime::run_event_loop() - runs event loop to completion
2020-10-07refactor(core): JsRuntime doesn't defer to OwnedIsolate (#7853)Bartek Iwańczuk
Remove Deref and DeferMut implementations for JsRuntime.
2020-10-06fix(core): module execution with top level await (#7672)Bartek Iwańczuk
This commit fixes implementation of top level await in "deno_core". Previously promise returned from module execution was ignored causing to execute modules out-of-order. With this commit promise returned from module execution is stored on "JsRuntime" and event loop is polled until the promise resolves.
2020-10-05refactor(core): JsRuntime::poll (#7825)Bartek Iwańczuk
This commit does reorganization of "JsRuntime::poll" to allow fixing of top-level-await bug.
2020-10-02fix(cli/repl): use a default referrer when empty (#7794)Casper Beyer
This makes use of a default referrer when its empty in repl mode so that dynamic imports work in the global evaluation context. Co-authored-by: Bartek Iwanczuk <biwanczuk@gmail.com>
2020-10-02chore(core): remove experimental wasm bigint flag (#7790)Casper Beyer
This removes the experimental bigint flag as it is enabled by default now and is no longer necessary.
2020-09-22Actually remove js_check (#7636)Ryan Dahl
2020-09-22refactor(core): support error stack, remove js_check (#7629)Bartek Iwańczuk
This commit adds support for stack traces in "deno_core". Implementation of "Display" trait for "JsError" has been updated and in consequence "deno_core::js_check" became obsolete and removed.
2020-09-20refactor: remove CliState, use OpState, add CliModuleLoader (#7588)Bartek Iwańczuk
- remove "CliState.workers" and "CliState.next_worker_id", instead store them on "OpState" using type aliases. - remove "CliState.global_timer" and "CliState.start_time", instead store them on "OpState" using type aliases. - remove "CliState.is_internal", instead pass it to Worker::new - move "CliState::permissions" to "OpState" - move "CliState::main_module" to "OpState" - move "CliState::global_state" to "OpState" - move "CliState::check_unstable()" to "GlobalState" - change "cli_state()" to "global_state()" - change "deno_core::ModuleLoader" trait to pass "OpState" to callbacks - rename "CliState" to "CliModuleLoader"
2020-09-14Make JsRuntimeState private (#7484)Ryan Dahl
2020-09-14refactor(core): remove JsRuntime::set_js_error_create_fn (#7478)Bartek Iwańczuk
Instead use RuntimeOptions.js_error_create_fn
2020-09-15refactor: use the 'anyhow' crate instead of 'ErrBox' (#7476)Bert Belder
2020-09-11refactor(core): JsRuntime initialization (#7415)Bartek Iwańczuk
Removes: - "deno_core::StartupData" - "deno_core::Script" - "deno_core::OwnedScript" Changes to "JsRuntime": - remove "new_with_loader()" - remove "with_heap_limits()" - rename "IsolateOptions" to "RuntimeOptions" and make public - "JsRuntime::new()" takes "RuntimeOptions" as a single param
2020-09-10Use gotham-like state for ops (#7385)Ryan Dahl
Provides a concrete state type that can be dynamically added. This is necessary for op crates. * renames BasicState to OpState * async ops take `Rc<RefCell<OpState>>` * sync ops take `&mut OpState` * removes `OpRegistry`, `OpRouter` traits * `get_error_class_fn` moved to OpState * ResourceTable moved to OpState
2020-09-06refactor(core): rename CoreIsolate to JsRuntime (#7373)Bartek Iwańczuk
deno_core/ - rename core_isolate.rs to runtime.rs - rename CoreIsolate to JsRuntime - rename JSError to JsError - rename JSStackFrame to JsStackFrame cli/ - update references from deno_core::CoreIsolate to deno_core::JsRuntime - rename deno_core::JSError to deno_core::JsError - rename fmt_errors::JSError to fmt_errors::JsError