1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-21 23:04:45 -05:00
denoland-deno/cli
Nathan Whitaker cd59fc53a5
fix(node): Rework node:child_process IPC (#24763)
Fixes https://github.com/denoland/deno/issues/24756. Fixes
https://github.com/denoland/deno/issues/24796.

This also gets vitest working when using
[`--pool=forks`](https://vitest.dev/guide/improving-performance#pool)
(which is the default as of vitest 2.0). Ref
https://github.com/denoland/deno/issues/23882.

---

This PR resolves a handful of issues with child_process IPC. In
particular:

- We didn't support sending typed array views over IPC
- Opening an IPC channel resulted in the event loop never exiting
- Sending a `null` over IPC would terminate the channel
- There was some UB in the read implementation (transmuting an `&[u8]`
to `&mut [u8]`)
- The `send` method wasn't returning anything, so there was no way to
signal backpressure (this also resulted in the benchmark
`child_process_ipc.mjs` being misleading, as it tried to respect
backpressure. That gave node much worse results at larger message sizes,
and gave us much worse results at smaller message sizes).
- We weren't setting up the `channel` property on the `process` global
(or on the `ChildProcess` object), and also didn't have a way to
ref/unref the channel
- Calling `kill` multiple times (or disconnecting the channel, then
calling kill) would throw an error
- Node couldn't spawn a deno subprocess and communicate with it over IPC
2024-07-30 16:13:24 -07:00
..
args fix(node): Rework node:child_process IPC (#24763) 2024-07-30 16:13:24 -07:00
bench chore: fix bench task (#24718) 2024-07-25 23:53:52 +00:00
cache fix(windows): check USERPROFILE env var for finding home directory (#24384) 2024-07-01 18:17:17 -04:00
js feat(jupyter): support confirm and prompt in notebooks (#23592) 2024-07-04 22:12:14 +00:00
lsp feat(lsp): registry completions for import-mapped specifiers (#24792) 2024-07-30 23:26:09 +01:00
napi chore: forward v1.45.3 release commit to main (#24681) 2024-07-23 03:41:40 +02:00
npm chore: upgrade to rust 1.80 (#24778) 2024-07-29 12:58:04 -04:00
ops fix: adapt to new jupyter runtime API and include session IDs (#24762) 2024-07-27 10:39:08 +02:00
schemas feat(workspace): support object config (#24483) 2024-07-09 17:06:50 -04:00
standalone refactor: decouple node resolution from deno_core (#24724) 2024-07-25 19:08:14 -04:00
tools chore: upgrade to rust 1.80 (#24778) 2024-07-29 12:58:04 -04:00
tsc fix(types): fix streams types (#24770) 2024-07-28 23:21:00 -04:00
util chore: upgrade to rust 1.80 (#24778) 2024-07-29 12:58:04 -04:00
auth_tokens.rs fix(cli): Add IP address support to DENO_AUTH_TOKEN (#22297) 2024-02-06 19:45:40 +01:00
build.rs Revert "fix(cli): add NAPI support in standalone mode (#24642)" (#24682) 2024-07-23 02:42:26 +02:00
Cargo.toml fix: adapt to new jupyter runtime API and include session IDs (#24762) 2024-07-27 10:39:08 +02:00
cdp.rs chore: upgrade to rust 1.79 (#24207) 2024-06-14 17:10:57 +05:30
clippy.toml refactor: don't share reqwest::HttpClient across tokio runtimes (#24092) 2024-06-03 21:17:08 +00:00
deno.ico fix(cli): add icon and metadata to deno.exe on Windows (#6693) 2020-07-15 21:54:38 +02:00
emit.rs fix: better handling of npm resolution occurring on workers (#24094) 2024-06-05 17:04:16 +02:00
entitlements.plist chore: start codesigning mac release builds (#21303) 2023-11-23 15:30:26 -07:00
errors.rs chore: upgrade to rust 1.80 (#24778) 2024-07-29 12:58:04 -04:00
factory.rs refactor: decouple node resolution from deno_core (#24724) 2024-07-25 19:08:14 -04:00
file_fetcher.rs refactor: remove PermissionsContainer in deno_runtime (#24119) 2024-06-06 23:37:53 -04:00
graph_container.rs refactor: update to deno_config 0.25 (#24645) 2024-07-19 15:56:07 -04:00
graph_util.rs fix(unstable): move sloppy-import warnings to lint rule (#24710) 2024-07-25 09:07:59 -04:00
http_util.rs Reland "refactor(fetch): reimplement fetch with hyper instead of reqwest" (#24593) 2024-07-18 01:37:31 +02:00
integration_tests_runner.rs chore: continue tests/ re-org (#22396) 2024-02-12 17:13:14 -07:00
js.rs chore: rename __runtime_js_source to hmr (#24442) 2024-07-05 17:47:53 +05:30
jsr.rs feat(lsp): workspace jsr resolution (#24121) 2024-06-10 17:03:17 +01:00
main.rs fix(upgrade): do not error if config in cwd invalid (#24689) 2024-07-23 19:00:48 -04:00
mainrt.rs Revert "fix(cli): add NAPI support in standalone mode (#24642)" (#24682) 2024-07-23 02:42:26 +02:00
module_loader.rs fix: actually add missing node:readline/promises module (#24772) 2024-07-28 15:41:10 -04:00
node.rs refactor: decouple node resolution from deno_core (#24724) 2024-07-25 19:08:14 -04:00
README.md docs(cli): do not need gen doc for cli (#17260) 2023-01-04 13:19:58 +01:00
resolver.rs refactor: decouple node resolution from deno_core (#24724) 2024-07-25 19:08:14 -04:00
task_runner.rs fix(cli): Respect implied BYONM from DENO_FUTURE in deno task (#24652) 2024-07-19 18:59:04 +00:00
version.rs chore: update copyright to 2024 (#21753) 2024-01-01 19:58:21 +00:00
worker.rs refactor: decouple node resolution from deno_core (#24724) 2024-07-25 19:08:14 -04:00

Deno CLI Crate

crates

This provides the actual deno executable and the user-facing APIs.

The deno crate uses the deno_core to provide the executable.