David Sherret
47f7bed677
chore: enable clippy::print_stdout and clippy::print_stderr ( #23732 )
...
1. Generally we should prefer to use the `log` crate.
2. I very often accidentally commit `eprintln`s.
When we should use `println` or `eprintln`, it's not too bad to be a bit
more verbose and ignore the lint rule.
2024-05-08 22:45:06 -04:00
denobot
e6dc4dfbff
chore: forward v1.43.2 release commit to main ( #23749 )
...
**THIS PR HAS GIT CONFLICTS THAT MUST BE RESOLVED**
This is the release commit being forwarded back to main for 1.43.2
Please ensure:
- [x] Everything looks ok in the PR
- [x] The release has been published
To make edits to this PR:
```shell
git fetch upstream forward_v1.43.2 && git checkout -b forward_v1.43.2 upstream/forward_v1.43.2
```
Don't need this PR? Close it.
cc @nathanwhit
Co-authored-by: nathanwhit <nathanwhit@users.noreply.github.com>
Co-authored-by: Nathan Whitaker <nathan@deno.com>
2024-05-09 00:45:01 +00:00
Matt Mastracci
9f7f681e26
fix(runtime): allow nul device on windows ( #23741 )
...
Fixes [23721](https://github.com/denoland/deno/issues/23721 )
2024-05-08 14:39:06 -06:00
David Sherret
0e9b7f64f7
chore: speed up test_multi_task test on Windows ( #23737 )
...
Previously it was around 30s to run: 1024*2*15 = 30720ms
2024-05-08 15:46:12 +00:00
Bartek Iwańczuk
25fcfe5d79
fix: DOMException doesn't throw on __callSitesEvals ( #23729 )
2024-05-07 21:02:29 +00:00
Hajime-san
e7a2317f5a
fix(ext/web): properly handle Blob
case for createImageBitmap
( #23518 )
...
fixes https://github.com/denoland/deno/issues/22649
2024-05-07 04:47:42 -07:00
Hajime-san
a635abbf21
fix(ext/webgpu): correctly validate GPUExtent3D, GPUOrigin3D, GPUOrigin2D & GPUColor ( #23413 )
2024-05-06 06:26:25 -07:00
Jo Franchetti
a69b4646a0
docs: update categories to match new planned sitemap ( #23677 )
...
Updating categories for new sitemap as documented here:
https://lucid.app/lucidspark/744b0498-a133-494d-981c-76059dd18885/edit?view_items=jpvBwFdYlNdB&invitationId=inv_50c83415-2aa5-423f-b438-ea156695c08b
2024-05-05 18:56:55 -07:00
Leo Kettmeir
cd12d41627
chore: update wgpu ( #23684 )
2024-05-05 07:22:18 -07:00
Satya Rohith
b2628e4a06
fix(ext/node): don't rely on Deno.env to read NODE_DEBUG ( #23694 )
...
This patch allows implementors to use ext/node without
the need to implement Deno.env API.
Closes https://github.com/denoland/deno/issues/23687
2024-05-05 16:16:02 +02:00
David Sherret
d527b63575
fix(workers): importScripts
concurrently and use a new reqwest::Client
per importScripts ( #23699 )
...
1. We were polling each future in sequence, so this meant it was
fetching scripts in sequence.
2. It's not safe to share `reqwest::Client` across tokio runtimes
(https://github.com/seanmonstar/reqwest/issues/1148#issuecomment-910868788 )
2024-05-05 10:07:21 -04:00
Satya Rohith
811280af77
fix(ext/node): check resource exists before close ( #23655 )
2024-05-02 18:34:42 +05:30
Satya Rohith
56ba7f3c23
fix(ext/node): support delete process.env.var ( #23647 )
...
Closes https://github.com/denoland/deno/issues/23641
2024-05-02 06:40:22 +00:00
denobot
5ff881a073
1.43.0 ( #23629 )
...
Bumped versions for 1.43.0
Co-authored-by: Divy Srivastava <dj.srivastava23@gmail.com>
2024-05-01 12:16:39 +05:30
David Sherret
56bf634fa9
fix(node): require.resolve - fallback to global cache when bare specifier from paths not found ( #23618 )
...
Part of #22607 (probably closes it, but I haven't done thorough testing)
Makes it so that `require.resolve` with `paths` specified will fallback
to using the global cache when the paths can't be found when using a
global cache (not when using a node_modules folder)
2024-04-30 23:41:29 -04:00
Satya Rohith
0156f82e73
fix(ext/node): support multiple message listeners on MessagePort ( #23600 )
...
Closes https://github.com/denoland/deno/issues/23561
2024-04-30 16:59:39 +05:30
findmyhappy
ce4a7773cc
docs: fix some typos in comments ( #23520 )
2024-04-30 17:59:56 +10:00
Satya Rohith
8503311641
fix(ext/node): read(0) before destroying http2stream ( #23505 )
...
This patch enables gRPC hello world client example to work.
Towards #23246 #3326
2024-04-30 07:49:29 +05:30
Matt Mastracci
56fec538e1
fix(ext/http): ensure signal is created iff requested ( #23601 )
...
This correctly creates the `AbortSignal` regardless of when we request
it. If the signal is requested after the request has completed, the
signal is created in the aborted state.
Using GC counts, we can see a reduction in object creation:
This PR: 440
deno 1.42.4: 1650
deno 1.43.0+b02ffec: 874
2024-04-29 09:40:02 -06:00
Divy Srivastava
b02ffec37c
fix(ext/node): exporting rsa public keys ( #23596 )
...
Initial support for exporting rsa public KeyObject.
Current assumption is that RSA keys are stored in pkcs1 der format in
key storage.
Ref https://github.com/denoland/deno/issues/23471
Ref https://github.com/denoland/deno/issues/18928
Ref https://github.com/denoland/deno/issues/21124
2024-04-29 19:16:38 +05:30
Yoshiya Hinosawa
0b454056a8
refactor: remove dead code in node stream polyfill ( #23597 )
2024-04-29 19:55:51 +09:00
Satya Rohith
b8444066ea
fix(ext/node): support NODE_DEBUG env ( #23583 )
2024-04-29 09:36:53 +00:00
Satya Rohith
455cf1743f
fix(ext/node): add support for MessagePort.removeListener/off ( #23598 )
...
Closes https://github.com/denoland/deno/issues/23564
2024-04-29 08:53:54 +00:00
Yoshiya Hinosawa
8178f758bc
fix(ext/node): support process.stdin.unref() ( #22865 )
...
This PR adds private `[REF]()` and `[UNREF]()` methods to Stdin class,
and call them from Node.js polyfill layer (`TTY` class). This enables
`process.stdin.unref()` and `process.stdin.ref()` for the case when
stdin is terminal.
closes #21796
2024-04-27 20:25:18 +09:00
Leo Kettmeir
c519355624
feat(ci): category & unstable tags checker ( #23568 )
2024-04-26 09:04:29 -07:00
Matt Mastracci
8c9caeb418
chore: rework TLS code in test server ( #23566 )
...
In order to make the reqwest/rustls upgrade more straightforward, we
refactor the test server to depend on deno_tls.
2024-04-25 17:00:04 -04:00
Matt Mastracci
084eafe508
perf(ext/http): recover memory for serve and optimize AbortController ( #23559 )
...
Max rps without a signal is unchanged, however we can drastically reduce
memory usage by not creating the signal until needed, and we can
optimize the rps in the case where the signal is created.
With a quick memory benchmark, it looks like this helps pretty
drastically with # of GCs when benchmarking w/wrk:
- 1.42.4: 1763
- canary: 1093
- this patch: 874
This branch:
```
Running 10s test @ http://localhost:8080/
2 threads and 10 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 87.33us 439.95us 20.68ms 99.67%
Req/Sec 66.70k 6.39k 74.11k 83.66%
1340255 requests in 10.10s, 191.73MB read
Requests/sec: 132696.90
Transfer/sec: 18.98MB
cpu: Apple M2 Pro
runtime: deno 1.43.0 (aarch64-apple-darwin)
file:///Users/matt/Documents/scripts/bench_request.js
benchmark time (avg) iter/s (min … max) p75 p99 p995
----------------------------------------------------------------------------------------------- -----------------------------
newRequest 986.5 ns/iter 1,013,682.6 (878.2 ns … 1.18 µs) 1.01 µs 1.18 µs 1.18 µs
newAbortController 18 ns/iter 55,541,104.1 (15.6 ns … 42.62 ns) 17.71 ns 25.05 ns 26.27 ns
newAbortControllerSignal 18.66 ns/iter 53,578,966.7 (16.49 ns … 32.16 ns) 18.71 ns 25.67 ns 26.39 ns
newAbortControllerSignalOnAbort 106.49 ns/iter 9,390,164.9 (97.87 ns … 120.61 ns) 108.6 ns 114.24 ns 115.89 ns
newAbortControllerSignalAddEventListener 86.92 ns/iter 11,504,880.2 (81.88 ns … 103.15 ns) 90 ns 98.28 ns 99.55 ns
newAbortControllerSignalOnAbortNoListener 3.01 µs/iter 331,964.4 (2.97 µs … 3.1 µs) 3.06 µs 3.1 µs 3.1 µs
newAbortControllerSignalOnAbortAbort 3.26 µs/iter 306,662.6 (3.22 µs … 3.36 µs) 3.27 µs 3.36 µs 3.36 µs
```
Latest canary:
```
Running 10s test @ http://localhost:8080/
2 threads and 10 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 72.86us 71.23us 4.47ms 99.05%
Req/Sec 64.66k 5.54k 72.48k 82.18%
1299015 requests in 10.10s, 185.83MB read
Requests/sec: 128616.02
Transfer/sec: 18.40MB
cpu: Apple M2 Pro
runtime: deno 1.43.0+bc4aa5f (aarch64-apple-darwin)
file:///Users/matt/Documents/scripts/bench_request.js
benchmark time (avg) iter/s (min … max) p75 p99 p995
----------------------------------------------------------------------------------------------- -----------------------------
newRequest 1.25 µs/iter 800,005.2 (1.01 µs … 4.18 µs) 1.16 µs 4.18 µs 4.18 µs
newAbortController 18.56 ns/iter 53,868,204.3 (16.04 ns … 38.73 ns) 18.38 ns 26.1 ns 26.63 ns
newAbortControllerSignal 18.72 ns/iter 53,430,746.1 (16.13 ns … 36.71 ns) 18.71 ns 26.19 ns 26.98 ns
newAbortControllerSignalOnAbort 193.91 ns/iter 5,156,992.4 (184.25 ns … 211.41 ns) 194.96 ns 207.87 ns 209.4 ns
newAbortControllerSignalAddEventListener 171.45 ns/iter 5,832,569.2 (153 ns … 182.03 ns) 176.17 ns 180.75 ns 181.05 ns
newAbortControllerSignalOnAbortNoListener 3.07 µs/iter 326,263.3 (2.98 µs … 3.17 µs) 3.08 µs 3.17 µs 3.17 µs
newAbortControllerSignalOnAbortAbort 3.32 µs/iter 301,344.6 (3.29 µs … 3.4 µs) 3.33 µs 3.4 µs 3.4 µs
```
2024-04-25 14:52:24 -04:00
denobot
8321106b78
1.43.0 ( #23549 )
...
Bumped versions for 1.43.0
Co-authored-by: littledivy <littledivy@users.noreply.github.com>
2024-04-25 15:14:26 +05:30
Divy Srivastava
e98862deb2
perf(ext/http): cache abort signal error ( #23548 )
...
Fixes a perf regression introduced in
eed2598e6c
([flamegraph](https://profiler.firefox.com/public/83whz7mrfkshk5q6hd6hjmrmw8tgmw67s96m4p0/flame-graph/?globalTrackOrder=0&hiddenLocalTracksByPid=12691-0we&symbolServer=http%3A%2F%2F127.0.0.1%3A3000%2F316cvciry38ippl9i74fmcxrd5q9asfrr28xp02&thread=0&v=10 ))
this patch:
```
Summary:
Success rate: 100.00%
Total: 10.0007 secs
Slowest: 0.0145 secs
Fastest: 0.0001 secs
Average: 0.0006 secs
Requests/sec: 80341.4816
Total data: 9.19 MiB
Size/request: 12
Size/sec: 941.44 KiB
```
main:
```
Summary:
Success rate: 100.00%
Total: 10.0007 secs
Slowest: 0.0068 secs
Fastest: 0.0002 secs
Average: 0.0009 secs
Requests/sec: 56560.0551
Total data: 6.47 MiB
Size/request: 12
Size/sec: 662.75 KiB
```
2024-04-25 09:20:01 +02:00
chirsz
1de162f1c1
feat(ext/webgpu): support UnsafeWindowSurface
on wayland ( #23423 )
2024-04-25 09:58:16 +05:30
Matt Mastracci
2f8825a935
feat: Add deno serve
subcommand ( #23511 )
...
By default, `deno serve` will assign port 8000 (like `Deno.serve`).
Users may choose a different port using `--port`.
`deno serve /tmp/file.ts`
`server.ts`:
```ts
export default {
fetch(req) {
return new Response("hello world!\n");
},
};
```
2024-04-24 19:45:49 +00:00
Matt Mastracci
da70608700
fix(ext/net): check for TLS using undefined rather than using ReflectHas ( #23538 )
...
Fixes #23537
2024-04-24 14:27:15 -04:00
Matt Mastracci
eed2598e6c
feat(ext/http): Implement request.signal for Deno.serve ( #23425 )
...
When the response has been successfully send, we abort the
`Request.signal` property to indicate that all resources associated with
this transaction may be torn down.
2024-04-24 14:03:37 -04:00
Matt Mastracci
b60822f6e0
chore: use deno_unsync through deno_core ( #23532 )
2024-04-24 16:57:34 +00:00
Bartek Iwańczuk
b424959d3e
fix(ext/node): worker_threads copies env object ( #23536 )
...
Most common argument to `env` option for `worker_threads.Worker` will be
`process.env`.
In Deno `process.env` is a `Proxy` which can't be cloned using
structured clone algorithm.
So to be safe, I'm creating a copy of actual object before it's sent to
the worker thread.
Ref #23522
2024-04-24 16:17:28 +00:00
Kenta Moriuchi
aff7a64544
fix: Float16Array support ( #23512 )
...
Ref #23490 , #23277
* remove `--js-float16array` flag (This flag has already added to
deno_core)
* add some `Float16Array` support
2024-04-23 22:54:19 +02:00
Bartek Iwańczuk
b0d3b20f23
feat: enable Float16Array support ( #23490 )
...
Closes https://github.com/denoland/deno/issues/23450
2024-04-23 15:18:27 +00:00
Bartek Iwańczuk
14ae4f897f
fix(ext/node): define http.maxHeaderSize ( #23479 )
...
Closes https://github.com/denoland/deno/issues/23432
2024-04-21 07:31:23 +05:30
Asher Gomez
98e2f6d50b
FUTURE(ext/net): remove Deno.ListenTlsOptions.(keyFile|certFile)
( #23271 )
...
Towards #23089
---------
Signed-off-by: Asher Gomez <ashersaupingomez@gmail.com>
2024-04-21 01:58:59 +00:00
welfuture
e55087f57a
fix: Fix some typos in comments ( #23470 )
...
Signed-off-by: welfuture <wellfuture@qq.com>
2024-04-21 01:54:07 +02:00
Divy Srivastava
c0f40ed81a
fix(ext/node): implement process.kill in Rust ( #23130 )
...
Closes https://github.com/denoland/deno/issues/23056
2024-04-20 18:55:07 +05:30
Divy Srivastava
04c6785fae
fix(ext/node): cp
into non-existent parent directory ( #23469 )
...
Fixes https://github.com/denoland/deno/issues/20604
2024-04-20 11:41:27 +00:00
Divy Srivastava
e0554ac4a2
fix(ext/node): Support env
option in worker_thread ( #23462 )
...
Fixes https://github.com/denoland/deno/issues/23455
2024-04-20 09:18:10 +05:30
Matt Mastracci
9425dce6db
refactor(ext/http): extract 02_websocket.ts from 01_http.js ( #23460 )
...
Landing part of https://github.com/denoland/deno/pull/21903
This will allow us to more easily refactor `serveHttp` to live on top of
`serve` by splitting the websocket code out. There's probably a lot more
we could do here but this helps.
2024-04-19 20:02:39 -06:00
Matt Mastracci
472a370640
feat(runtime): Allow embedders to perform additional access checks on file open ( #23208 )
...
Embedders may have special requirements around file opening, so we add a
new `check_open` permission check that is called as part of the file
open process.
2024-04-19 18:12:03 -06:00
Matt Mastracci
365e1f48f7
feat(ext/http): Add addr
to HttpServer ( #23442 )
...
Adds an `addr` field to `HttpServer` to simplify the pattern
`Deno.serve({ onListen({ port } => listenPort = port })`. This becomes:
`const server = Deno.serve({}); port = server.addr.port`.
Changes:
- Refactors `serve` overloads to split TLS out (in preparation for
landing a place for the TLS SNI information)
- Adds an `addr` field to `HttpServer` that matches the `addr` field of
the corresponding `Deno.Listener`s.
2024-04-19 18:09:50 -06:00
Matt Mastracci
d9d3f81f29
chore: remove unused, unstable 'http' namespace ( #23436 )
...
Landing parts of #21903 in preparation for the removal of serveHttp.
2024-04-18 11:21:25 -06:00
Bartek Iwańczuk
6a09a16d71
feat(ext/net): extract TLS key and certificate from interfaces ( #23327 )
...
Relands #23325
2024-04-18 11:21:08 -06:00
Matt Mastracci
5e2a747685
fix(ext/node): Correctly send ALPN on node TLS connections ( #23434 )
...
Landing work from #21903 , plus fixing a node compat bug.
We were always sending the HTTP/2 ALPN on TLS connections which might
confuse upstream servers.
Changes:
- Configure HTTP/2 ALPN when making the TLS connection from the HTTP/2
code
- Read the `ALPNProtocols` property from the TLS connection options
rather than the deno `alpnProtocols` field
- Add tests
Prereq for landing Deno.serveHttp on Deno.serve: removing older HTTP
servers from the codebase.
2024-04-18 09:37:47 -06:00
Bartek Iwańczuk
760d64bc6b
fix(ext/node): worker_threads.receiveMessageOnPort doesn't panic ( #23406 )
...
Follow up to https://github.com/denoland/deno/pull/23386 .
Instead of using async `recv()` method, it was replaced
with a poll based function that doesn't hold onto
RefCell borrow across await point.
Fixes https://github.com/denoland/deno/issues/23362
2024-04-16 18:41:03 +00:00