1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-11 10:07:54 -05:00
Commit graph

12602 commits

Author SHA1 Message Date
David Sherret
f84c007392
chore: remove print debugging from test server (#26529)
Accidentally added in https://github.com/denoland/deno/pull/26473/files
2024-10-25 02:09:39 +02:00
Nicola Bovolato
6c415bf819
fix(ext/node): refactor http.ServerResponse into function class (#26210)
While testing, I found out that light-my-request relies on
`ServerResponse.connection`, which is deprecated, so I added that and
`socket`, the non deprecated property.

It also relies on an undocumented `_header` property, apparently for
[raw header
processing](https://github.com/fastify/light-my-request/blob/v6.1.0/lib/response.js#L180-L186).
I added it as an empty string, feel free to provide other approaches.

Fixes #19901

Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2024-10-25 02:09:39 +02:00
Bartek Iwańczuk
6f44eb6833
bench: remove http benchmarks (#26484)
These benchmarks run on GitHub Actions and are extremely noisy, thus
not providing much value.
2024-10-25 02:09:39 +02:00
Bartek Iwańczuk
c5c08f461d
fix: add 'fmt-component' to unstable features in schema file (#26526)
Closes https://github.com/denoland/deno/issues/26510
2024-10-25 02:09:39 +02:00
David Sherret
4d731f5ef8
perf(compile): pass module source data from binary directly to v8 (#26494)
This changes denort to pass a static reference of the moude source bytes found in the binary to v8 instead of copying it.
2024-10-25 02:09:39 +02:00
Bartek Iwańczuk
3d23be13e0
fix(fmt): --ext flag requires to pass files (#26525)
To avoid situations like described in
https://github.com/denoland/deno/issues/26402
using `deno fmt` with `--ext` flag now requires to explicitly specify
list of files (or globs) to format.

Closes https://github.com/denoland/deno/issues/26402
2024-10-25 02:09:39 +02:00
Marvin Hagemeister
f4ef7b0eb7
fix: .npmrc settings not being passed to install/add command (#26473)
We weren't passing the resolved npmrc settings to the install commands.
This lead us to always fall back to the default registry url instead of
using the one from npmrc.

Fixes https://github.com/denoland/deno/issues/26139
Fixes https://github.com/denoland/deno/issues/26033
Fixes https://github.com/denoland/deno/issues/25924
Fixes https://github.com/denoland/deno/issues/25822
Fixes https://github.com/denoland/deno/issues/26152

---------

Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2024-10-25 02:09:38 +02:00
Leo Kettmeir
f62283f0c4
refactor(ext/node): use concrete error types (#26419) 2024-10-25 02:09:38 +02:00
Bartek Iwańczuk
d68c5b9a46
Revert "fix(runtime): send ws ping frames from inspector server (#263… (#26513) 2024-10-25 02:09:38 +02:00
Nayeem Rahman
2bd8b856d6
fix(config): schemas for lint rule and tag autocompletion (#26515) 2024-10-25 02:09:38 +02:00
Marvin Hagemeister
01c2bb9c9d
fix(node/util): support array formats in styleText (#26507)
We missed adding support for an array of formats being passed to
`util.styleText`.

Fixes https://github.com/denoland/deno/issues/26496
2024-10-25 02:09:38 +02:00
snek
e1c893fab8
feat: support node-api in denort (#26389)
exposes node-api symbols in denort so that `deno compile` can run native
addons.
2024-10-25 02:09:38 +02:00
Nathan Whitaker
c9c972dfb4
fix(ext/node): cancel pending ipc writes on channel close (#26504)
Fixes the issue described in
https://github.com/denoland/deno/issues/23882#issuecomment-2423316362.

The parent was starting to send a message right before the process would
exit, and the channel closed in the middle of the write. Unlike with
reads, we weren't cancelling the pending writes, which resulted in a
`Broken pipe` error surfacing to the user.
2024-10-25 02:09:37 +02:00
Nathan Whitaker
2ea51d923a
fix(ext/node): only set our end of child process pipe to nonblocking mode (#26495)
Fixes playwright on linux, as reported in
https://github.com/denoland/deno/issues/16899#issuecomment-2378268454.

The issue was that we were opening the socket in nonblocking mode, which
meant that subprocesses trying to use it would get a `EWOULDBLOCK` error
(unexpectedly). The fix here is to only set nonblocking mode on our end
(which we need to use asynchronously)
2024-10-25 02:09:37 +02:00
Divy Srivastava
bb3c8e2925
fix(ext/ffi): return u64/i64 as bigints from nonblocking ffi calls (#26486)
Fixes https://github.com/denoland/deno/issues/25194
2024-10-25 02:09:37 +02:00
Nathan Whitaker
84195af5ac
fix(install): cache all exports of JSR packages listed in deno.json (#26501)
Fixes #26498.

This was a sort of intentional decision originally, as I wanted to avoid
caching extra files that may not be needed. It seems like that behavior
is unintuitive, so I propose we cache all of the exports of listed jsr
packages when you run a bare `deno install`.
2024-10-25 02:09:37 +02:00
Nathan Whitaker
f0e63ad27c
fix(install): cache type only module deps in deno install (#26497)
Fixes https://github.com/denoland/deno/issues/26180.
2024-10-25 02:09:37 +02:00
Satya Rohith
c5536669b6
fix(node:tls): set TLSSocket.alpnProtocol for client connections (#26476)
Towards https://github.com/denoland/deno/issues/26127
2024-10-25 02:09:37 +02:00
Divy Srivastava
c9400a0969
fix: share inotify fd across watchers (#26200)
Fixes https://github.com/denoland/deno/issues/26104
Fixes https://github.com/denoland/deno/issues/26071
Fixes https://github.com/denoland/deno/issues/17757
2024-10-25 02:09:37 +02:00
Yoshiya Hinosawa
dc46d546ac
fix(ext/node): map ERROR_INVALID_NAME to ENOENT on windows (#26475)
In libuv on windows, `ERROR_INVALID_NAME` is mapped to `ENOENT`, but it
is mapped to `EINVAL` in our compat implementation, which causes the
issue #24899.

ref:
d4ab6fbba4/src/win/error.c (L138)

closes #24899 
closes #26411
closes #23635
closes #21165
closes #19067
2024-10-25 02:09:36 +02:00
Nathan Whitaker
4a4b83a90b
fix(check): support --frozen on deno check (#26479)
Fixes https://github.com/denoland/deno/issues/26391
2024-10-25 02:09:36 +02:00
Bartek Iwańczuk
22b061489d
refactor: add 'docs' suggestion (#26463)
Adds another kind to `FixSuggestionKind` specifically for links
documentation pages.
2024-10-25 02:09:36 +02:00
Nathan Whitaker
91614bffa9
fix(cli): increase size of blocking task threadpool on windows (#26465)
Fixes #26179.

The original error reported in that issue is fixed on canary, but in
local testing on my windows machine, `next build` would just hang
forever.

After some digging, what happens is that at some point in next build,
readFile promises (from `fs/promises` ) just never resolve, and so next
hangs.

It turns out the issue is saturating tokio's blocking task thread pool.
We previously limited the number of blocking threads to 32, and at some
point those threads are all in use and there's no thread available for
the file reads.

What's taking up all of those threads? The answer turns out to be
`tokio::process`. On windows, child process stdio uses the blocking
threadpool: https://github.com/tokio-rs/tokio/pull/4824. When you poll
the child's stdio on windows, it spawns a blocking task per poll, and
calls `std::io::Read::read` in the blocking context. That call can block
until data is available.
Putting it all together, what happens is that Next.js spawns `2 * the
number of CPU cores` deno child subprocesses to do work. We implement
`child_process` with `tokio::process`. When the child processes' stdio
get polled, blocking tasks get spawned, and those blocking tasks might
block until data is available. So if you have 16 cores (as I do), there
are going to be potentially >32 blocking task threadpool threads taken
just by the child processes. That leaves no room for other tasks to make
progress

---

To fix this, for now, increase the size of the blocking threadpool on
windows. 4 * the number of CPU cores should be enough to leave room for
other tasks to make progress.

Longer term, this can be fixed more properly when we handroll our own
subprocess code (needed for detached processes and additional pipes on
windows).
2024-10-25 02:09:36 +02:00
Ronny Chan
7c084f357f
fix: unpin tokio version (#26457)
Fixes https://github.com/denoland/deno/issues/26455

Signed-off-by: Ronny Chan <ronny.chan@okta.com>
2024-10-25 02:09:36 +02:00
tsukasa-ino
a44b25601b
chore(ci): use setup-deno@v2 (#26474) 2024-10-25 02:09:36 +02:00
Pig Fang
df34dbe377
fix(fmt): upgrade formatters (#26469)
Fixes #25926 
Fixes #26004
2024-10-25 02:09:35 +02:00
Leo Kettmeir
ad563c3098
fix(ext/console): ignore casing for named colors in css parsing (#26466) 2024-10-25 02:09:35 +02:00
Leo Kettmeir
19110519f7
refactor(runtime/ops): use concrete error types (#26409) 2024-10-25 02:09:35 +02:00
Bartek Iwańczuk
dca94aba82
fix(install): update lockfile when using package.json (#26458)
This commit makes sure that `deno add`, `deno install` and `deno remove`
update the lockfile if only `package.json` file is present.

Fixes https://github.com/denoland/deno/issues/26270
2024-10-25 02:09:35 +02:00
Nayeem Rahman
7b912da996
fix(lsp): import-map-remap quickfix for type imports (#26454) 2024-10-25 02:09:35 +02:00
David Sherret
92c1e99c69
fix(npm): support version ranges with && or comma (#26453) 2024-10-25 02:09:35 +02:00
David Sherret
21a5d1559a
fix(install): better json editing (#26450)
1. Respects the formatting of the file (ex. keeps four space indents or
tabs).
2. Handles editing of comments.
3. Handles trailing commas.
4. Code is easier to maintain.
2024-10-25 02:09:34 +02:00
Nayeem Rahman
7703f4bf5a
feat(lsp): interactive inlay hints (#26382) 2024-10-25 02:09:34 +02:00
jiang1997
9623219604
fix(ext/node): use primordials in ext/node/polyfills/https.ts (#26323)
Towards https://github.com/denoland/deno/issues/24236
2024-10-25 02:09:34 +02:00
Leo Kettmeir
b21fe64093
chore: update nix crate (#26422)
Dedupes nix dependency, since `rustyline` depends on a newer version
that what we currently use
2024-10-25 02:09:34 +02:00
Bartek Iwańczuk
fc098332fa
chore: update release doc template (#26406) 2024-10-25 02:09:34 +02:00
Divy Srivastava
11b3bccf30
perf: avoid multiple calls to runMicrotask (#26378)
Improves HTTP throughput by 8-9k rps on Linux:

this patch
```
Requests/sec: 145001.69
Transfer/sec:     20.74MB
```

main
```
Requests/sec: 137866.61
Transfer/sec:     19.72MB
```

The improvements comes from the reduced number of calls to
`op_run_microtask` per request. Returning `true` from a macrotask
callback already calls `op_run_microtask` so the extra call was
redundant.

Here's `--strace-ops` output for a single request:

main
```
[     4.667] op_http_wait                                       : CompletedAsync Async
[     4.667] op_run_microtasks                                  : Dispatched Slow
[     4.668] op_http_try_wait                                   : Dispatched Slow
[     4.668] op_http_try_wait                                   : Completed Slow
[     4.668] op_http_wait                                       : Dispatched Async
[     4.668] op_http_set_response_header                        : Dispatched Slow
[     4.668] op_http_set_response_header                        : Completed Slow
[     4.669] op_http_set_response_body_text                     : Dispatched Slow
[     4.669] op_http_set_response_body_text                     : Completed Slow
[     4.669] op_run_microtasks                                  : Completed Slow
[     4.669] op_has_tick_scheduled                              : Dispatched Slow
[     4.669] op_has_tick_scheduled                              : Completed Slow
[     4.669] op_run_microtasks                                  : Dispatched Slow
[     4.669] op_run_microtasks                                  : Completed Slow
[     4.669] op_run_microtasks                                  : Dispatched Slow
[     4.669] op_run_microtasks                                  : Completed Slow
```

this pr
```
[     3.726] op_http_wait                                       : CompletedAsync Async
[     3.727] op_run_microtasks                                  : Dispatched Slow
[     3.727] op_http_try_wait                                   : Dispatched Slow
[     3.727] op_http_try_wait                                   : Completed Slow
[     3.727] op_http_wait                                       : Dispatched Async
[     3.727] op_http_set_response_header                        : Dispatched Slow
[     3.728] op_http_set_response_header                        : Completed Slow
[     3.728] op_http_set_response_body_text                     : Dispatched Slow
[     3.728] op_http_set_response_body_text                     : Completed Slow
[     3.728] op_run_microtasks                                  : Completed Slow
[     3.728] op_run_microtasks                                  : Dispatched Slow
[     3.728] op_run_microtasks                                  : Completed Slow
```
2024-10-25 02:09:34 +02:00
Leo Kettmeir
2319d8a79f
refactor(ext/webgpu): use concrete error type (#26198) 2024-10-25 02:09:33 +02:00
Leo Kettmeir
6fdfd02f8f
refactor(ext/fetch): use concrete error types (#26220) 2024-10-25 02:09:33 +02:00
Bartek Iwańczuk
8c16208fc3
Revert "ci: use self-hosted mac arm runner (#26366)" (#26408)
This reverts commit e22d0e91ef.

Reverting because the CI pipeline is actually incorrect.

I intended to only use this self-hosted runner for "release" builds on
`main` branch, but now all PRs are queued waiting for a runner for a "debug"
build.
2024-10-25 02:09:33 +02:00
Leo Kettmeir
9f4aadacb2
refactor(ext/http): use concrete error types (#26377) 2024-10-25 02:09:33 +02:00
Leo Kettmeir
1bc3694e79
refactor(ext/crypto): use concrete error types (#26167) 2024-10-25 02:09:33 +02:00
Bartek Iwańczuk
ecf4cb35e6
ci: use self-hosted mac arm runner (#26366)
Supersedes #26337
2024-10-25 02:09:33 +02:00
Nathan Whitaker
8f51b0e82f
fix(ext/node): stub HTTPParser internal binding (#26401)
Fixes https://github.com/denoland/deno/issues/26394.
2024-10-25 02:09:32 +02:00
Marvin Hagemeister
25c857c822
fix(info): resolve workspace member mappings (#26350)
This PR fixes the issue where mapped specifiers in a workspace member
would never be found. Only mapped paths from the workspace root would
resolve.

This was caused by always passing the workspace root url to the import
map resolver instead of the workspace member one.

Fixes https://github.com/denoland/deno/issues/26138
Fixes https://github.com/denoland/fresh/issues/2615

---------

Signed-off-by: Marvin Hagemeister <marvinhagemeister50@gmail.com>
Co-authored-by: David Sherret <dsherret@users.noreply.github.com>
2024-10-25 02:09:32 +02:00
Leo Kettmeir
998a371f5d
refactor(ext/websocket): use concrete error type (#26226) 2024-10-25 02:09:32 +02:00
Marvin Hagemeister
374049b1eb
fix(npm): ensure scoped package name is encoded in URLs (#26390)
Fixes https://github.com/denoland/deno/issues/26385
2024-10-25 02:09:32 +02:00
Nathan Whitaker
2df27b99c3
fix(ext/node): properly map reparse point error in readlink (#26375) 2024-10-25 02:09:32 +02:00
Leo Kettmeir
ed1b2db88b
refactor(ext/fs): use concrete error types (#26317) 2024-10-25 02:09:32 +02:00
Marvin Hagemeister
33aedc9de3
fix(help): missing package specifier (#26380)
Was notified of one more occurance where we were missing an explicit
specifier for a `deno add` call.

See
https://github.com/denoland/deno/issues/26295#issuecomment-2421637401
2024-10-25 02:09:31 +02:00