summaryrefslogtreecommitdiff
path: root/core
AgeCommit message (Collapse)Author
2022-12-17chore(core): Small realm-related fixes (#17044)Andreu Botella
- `JsRuntime::built_from_snapshot` was removed because it was redundant with `JsRuntime::snapshot_options`. - Updates to stale documentation of `JsRuntime::create_realm`. - `JsRuntime::create_realm` now calls `JsRuntime::init_extension_js` unconditionally, since if the runtime was built from a snapshot, `init_extension_js` will be a no-op. - Typo fix in the documentation for `JsRealm`.
2022-12-16refactor(core): allow to listen for notifications in LocalInspectorSession ↵Bartek Iwańczuk
(#17040)
2022-12-15chore: forward v1.29.1 release commit to main (#17067)denobot
Co-authored-by: dsherret <dsherret@users.noreply.github.com>
2022-12-15Revert "feat(ops): Fast zero copy string arguments (#16777)" (#17063)Bartek Iwańczuk
This reverts commit 9b2b8df927ac23cfa99016a684179f2a3198ba2e. Closes https://github.com/dsherret/ts-morph/issues/1372 Closes https://github.com/denoland/deno/issues/16979
2022-12-151.29.0 (#17052)denobot
Co-authored-by: bartlomieju <bartlomieju@users.noreply.github.com> Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2022-12-13chore(core): Deduplicate `event_loop_pending_state` (#17039)Andreu Botella
2022-12-13refactor(core): add more information when unable to build error (#17027)Bartek Iwańczuk
This should help debug problem in https://github.com/denoland/deno/issues/16963
2022-12-12feat: add `--inspect-wait` flag (#17001)Bartek Iwańczuk
This commit adds new "--inspect-wait" flag which works similarly to "--inspect-brk" in that it waits for inspector session to be established before running code. However it doesn't break on the first statement of user code, but instead runs it as soon as a session is established.
2022-12-06fix(test): handle scenario where --trace-ops would cause an unhandled ↵David Sherret
promise rejection (#16970) Closes #16969
2022-12-06npm: ensure runtime exceptions are surfaced when debugger is attached (#16943)Bartek Iwańczuk
Currently runtime exception are only displayed at the program end in terminal, which makes it only a partial fix, as a full fix requires https://github.com/denoland/rusty_v8/pull/1149 which adds new bindings to the inspector that allows to notify it about thrown exceptions. This will be handled in a follow up commit.
2022-12-04revert: Inspector changes (#16939)Bartek Iwańczuk
Reverts 66dc54a7f and e2a0c3f0 Closes https://github.com/denoland/deno/issues/16926
2022-12-03fix(inspector): even if already woken, always schedule an interrupt (#16910)Bert Belder
2022-12-02fix(inspector): allow to poll session with reentry (#16863)Bartek Iwańczuk
This commit completely rewrites inspector session polling. Until now, there was a single function responsible for polling inspector sessions which could have been called when polling the "JsRuntime" as well as from internal inspector functions. There are some cases where it's required to have reentrant polling of sessions (eg. when "debugger" statement is run) which should be blocking until inspector sends appropriate message to continue execution. This was not possible before, because polling of sessions didn't have reentry ability. As a consequence, session polling was split into two separate functions: a) one to be used when polling from async context (on each tick of event loop in "JsRuntime") b) one to be used when polling synchronously and potentially blocking (used by various inspector methods). There are further cleanups and simplifications to be made in inspector code, but this rewrite solves the problem at hand (being able to evaluate "debugger" JS statement and continue inspector functionality). Co-authored-by: Bert Belder <bertbelder@gmail.com>
2022-12-02feat(ops): Fast zero copy string arguments (#16777)Divy Srivastava
Uses SeqOneByteString optimization to do zero-copy `&str` arguments in fast calls. - [x] Depends on https://github.com/denoland/rusty_v8/pull/1129 - [x] Depends on https://chromium-review.googlesource.com/c/v8/v8/+/4036884 - [x] Disable in async ops - [x] Make it work with owned `String` with an extra alloc in fast path. - [x] Support `Cow<'_, str>`. Owned for slow case, Borrowed for fast case ```rust #[op] fn op_string_len(s: &str) -> u32 { str.len() as u32 } ```
2022-12-01chore: forward v1.28.3 release commit to main (#16884)denobot
Co-authored-by: kt3k <kt3k@users.noreply.github.com>
2022-11-30chore: upgrade rusty_v8 to 0.58.0 (#16879)Bartek Iwańczuk
2022-11-30chore: remove unnecessary lifetimes (#16878)David Sherret
It seems we don't really need to allow these clippy rules.
2022-11-28feat(core): show unresolved promise origin (#16650)Bartek Iwańczuk
This commit updates unhelpful messages that are raised when event loop stalls on unresolved top-level promises. Instead of "Module evaluation is still pending but there are no pending ops or dynamic imports. This situation is often caused by unresolved promises." and "Dynamically imported module evaluation is still pending but there are no pending ops. This situation is often caused by unresolved promises." we are now printing a message like: error: Top-level await promise never resolved [SOURCE LINE] ^ at [FUNCTION NAME] ([FILENAME]) eg: error: Top-level await promise never resolved await new Promise((_resolve, _reject) => {}); ^ at <anonymous> (file:///Users/ib/dev/deno/cli/tests/testdata/test/unresolved_promise.ts:1:1) Co-authored-by: David Sherret <dsherret@users.noreply.github.com>
2022-11-27feat(ops): fast calls for Wasm (#16776)Divy Srivastava
This PR introduces Wasm ops. These calls are optimized for entry from Wasm land. The `#[op(wasm)]` attribute is opt-in. Last parameter `Option<&mut [u8]>` is the memory slice of the Wasm module *when entered from a Fast API call*. Otherwise, the user is expected to implement logic to obtain the memory if `None` ```rust #[op(wasm)] pub fn op_args_get( offset: i32, buffer_offset: i32, memory: Option<&mut [u8]>, ) { // ... } ```
2022-11-27feat(core): support initializing extensions with and without JS (#16789)Bartek Iwańczuk
This commit allows to execute more JS code from extensions when creating a snapshot from an existing snapshot. "deno_core::RuntimeOptions::extensions_with_js" field was added that is used to pass a list of extensions whose both "ops" and associated JS source should be executed upon start. Co-authored-by: crowlkats <crowlkats@toaxl.com>
2022-11-27feat(core): send "executionContextDestroyed" notification on program end ↵Bartek Iwańczuk
(#16831) This commit changes "JsRuntime" to send "executionContextDestroyed" notification when the program finishes and shows a prompt informing that runtime is waiting for inspector to disconnect.
2022-11-26fix(inspector): send "isDefault" in aux data (#16836)Bartek Iwańczuk
With trial and error I found that most debuggers expect "isDefault" to be sent in "auxData" field of "executionContextCreated" notification. This stems from the fact that Node.js sends this data and eg. VSCode requires it to close connection to the debugger when the program finishes execution.
2022-11-26chore: update rusty_v8 to 0.56.1 (#16835)Bartek Iwańczuk
2022-11-24chore: forward v1.28.2 release commit to main (#16796)denobot
Co-authored-by: bartlomieju <bartlomieju@users.noreply.github.com> Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2022-11-24refactor(core): fix typo in ops_builtin.rs (#16613)Ikko Ashimine
2022-11-22chore: workspace inheritance (#16343)Leo Kettmeir
2022-11-21feat(core): Ability to create snapshots from existing snapshots (#16597)Bartek Iwańczuk
Co-authored-by: crowlkats <crowlkats@toaxl.com>
2022-11-18chore: use Rust 1.65.0 (#16688)Aaron O'Mullan
2022-11-17chore: forward v1.28.1 release commit to main (#16678)denobot
Co-authored-by: bartlomieju <bartlomieju@users.noreply.github.com>
2022-11-131.28.0 (#16620)denobot
Co-authored-by: David Sherret <dsherret@gmail.com>
2022-11-12chore: upgrade rusty_v8 to 0.55.0 (#16604)Bartek Iwańczuk
<!-- Before submitting a PR, please read http://deno.land/manual/contributing 1. Give the PR a descriptive title. Examples of good title: - fix(std/http): Fix race condition in server - docs(console): Update docstrings - feat(doc): Handle nested reexports Examples of bad title: - fix #7123 - update docs - fix bugs 2. Ensure there is a related issue and it is referenced in the PR text. 3. Ensure there are tests that cover the changes. 4. Ensure `cargo test` passes. 5. Ensure `./tools/format.js` passes without changing files. 6. Ensure `./tools/lint.js` passes. -->
2022-11-11fix(npm): disable npm specifiers in import.meta.resolve() (#16599)Bartek Iwańczuk
2022-11-11feat(ops): implement fast lazy async ops (#16579)Divy Srivastava
Implements fast scheduling of deferred op futures. ```rs #[op(fast)] async fn op_read( state: Rc<RefCell<OpState>>, rid: ResourceId, buf: &mut [u8], ) -> Result<u32, Error> { // ... } ``` The future is scheduled via a fast API call and polled by the event loop after being woken up by its waker.
2022-11-10perf(core): minimize trivial heap allocations in `resolve_async_ops` (#16584)Divy Srivastava
* Use stack allocated array for 16 promises and spill rest to heap. the exact number can change, maybe 128? (tokio's coop budget limit) * Avoid v8::Global::clone for global context. * Do not open global opresolve when its not needed.
2022-11-09chore: forward v1.27.2 release commit to main (#16572)denobot
Co-authored-by: bartlomieju <bartlomieju@users.noreply.github.com>
2022-11-08refactor: simplify deno_core's grab_global and ensure_objs (#16564)Ryan Dahl
- refactor: remove JsRuntime::ensure_objs - refactor: Replace JsRuntime::grab_global with JsRuntime::eval
2022-11-04chore: forward v1.27.1 release commit to main (#16533)denobot
Co-authored-by: bartlomieju <bartlomieju@users.noreply.github.com> Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2022-10-29fix(core): fix APIs not to be affected by `Promise.prototype.then` ↵Kenta Moriuchi
modification (#16326)
2022-10-28feat(core): support creating snapshots from existing snapshots (#14744)Bartek Iwańczuk
2022-10-28Reland "perf(core): generate inlined wrappers for async ops" (#16455)Divy Srivastava
Reland https://github.com/denoland/deno/pull/16428
2022-10-28chore(core): remove TODO in bindings.rs (#16456)Divy Srivastava
2022-10-271.27.0 (#16442)denobot
Co-authored-by: bartlomieju <bartlomieju@users.noreply.github.com> Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2022-10-27Revert "perf(core): generate inlined wrappers for async ops (#16428)" (#16443)Divy Srivastava
2022-10-27perf(core): generate inlined wrappers for async ops (#16428)Divy Srivastava
V8's JIT can do a better job knowing the argument count and also enable fast call path (in future). This also lets us call async ops without `opAsync`: ```js const { ops } = Deno.core; await ops.op_void_async(); ``` this patch: 4405286 ops/sec main: 3508771 ops/sec
2022-10-26fix(core) Include causes when converting anyhow errors to JS exceptions (#16397)Jan Špaček
When an op returns an `anyhow` error with a cause (usually added using the `.context()` method), the `Error` thrown into JavaScript contains only the message of the outernmost error in the chain. This PR simply changes the formatting of `anyhow::Error` from `"{}"` to `"{:#}"`: This significantly improves errors for code that embeds Deno and defines custom ops. For example, in [chiselstrike/chiselstrike](https://github.com/chiselstrike/chiselstrike), this PR improves an error message like ``` Error: could not plan migration ``` to ``` Error: could not plan migration: could not migrate table for entity "E": could not add column for field "title": the field does not have a default value ```
2022-10-26core: enable --harmony-change-array-by-copy V8 flag (#16429)Bartek Iwańczuk
Enables [Change Array by copy proposal](https://github.com/tc39/proposal-change-array-by-copy) via a V8 flag.
2022-10-26feat(cli): show error cause recursion information (#16384)Cre3per
2022-10-26perf(core): do not drive JsInspector by default (#16410)Divy Srivastava
Part of https://github.com/denoland/deno/pull/16377
2022-10-25fix: upgrade swc_ecma_parser to 0.122.19 - deno_ast 0.20 (#16406)David Sherret
2022-10-25perf(core): avoid isolate slots for ModuleMap (#16409)Divy Srivastava