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

175 commits

Author SHA1 Message Date
Marcos Casagrande
3a238ef6da perf(ext/node): cache IncomingMessageForServer.headers (#20147)
This PR adds caching to node's `req.headers`

```js
import express from "npm:express";
const app = express();

app.get("/", function (req, res) {
  const ua = req.header("User-Agent");
  const auth = req.header("Authorization");
  const type = req.header("Content-Type");
  const ip = req.header("X-Forwarded-For");
  res.end();
});

app.listen(3000);
```

**this PR**
```
wrk -d 10s --latency http://127.0.0.1:3000
Running 10s test @ http://127.0.0.1:3000
  2 threads and 10 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   155.64us  152.14us   5.74ms   97.39%
    Req/Sec    35.00k     1.97k   39.10k    80.69%
  Latency Distribution
     50%  123.00us
     75%  172.00us
     90%  214.00us
     99%  563.00us
  703420 requests in 10.10s, 50.31MB read
Requests/sec:  69648.45
Transfer/sec:      4.98MB
```

**main**
```
wrk -d 10s --latency http://127.0.0.1:3000
Running 10s test @ http://127.0.0.1:3000
  2 threads and 10 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   217.95us  786.89us  26.26ms   98.23%
    Req/Sec    32.32k     2.54k   37.19k    87.13%
  Latency Distribution
     50%  130.00us
     75%  191.00us
     90%  232.00us
     99%    1.88ms
  649411 requests in 10.10s, 46.45MB read
Requests/sec:  64300.44
Transfer/sec:      4.60MB
```
2023-08-21 17:00:44 +05:30
Divy Srivastava
21233a1114 fix(node): implement TLSSocket._start (#20120)
Closes https://github.com/denoland/deno/issues/19983
Closes https://github.com/denoland/deno/issues/18303
Closes https://github.com/denoland/deno/issues/16681
Closes https://github.com/denoland/deno/issues/19978
2023-08-21 17:00:44 +05:30
Divy Srivastava
48e3b00b0b fix(ext/node): support dictionary option in zlib init (#20035)
Fixes https://github.com/denoland/deno/issues/19540
2023-08-21 17:00:44 +05:30
Divy Srivastava
6617682330 fix(node): object keys in publicEncrypt (#20128)
Fixes https://github.com/denoland/deno/issues/19935
2023-08-21 17:00:44 +05:30
Bartek Iwańczuk
b5c46932a2 fix(node): don't print warning on process.dlopen.flags (#20124)
Closes https://github.com/denoland/deno/issues/20075
2023-08-21 17:00:44 +05:30
Bartek Iwańczuk
2507d6fa10
fix(node/async_hooks): don't pop async context frame if stack if empty (#20077)
Closes https://github.com/denoland/deno/issues/20076
2023-08-10 09:00:25 +05:30
David Sherret
a037ed77a2
fix(fmt): do not insert expr stmt leading semi-colon in do while stmt body (#20093)
This is for when semiColons: false

Closes #20089
2023-08-08 09:15:19 -04:00
Bartek Iwańczuk
6405b5f454
fix(node): polyfill process.title (#20044)
Closes https://github.com/denoland/deno/issues/19777
2023-08-04 14:31:13 +02:00
Bartek Iwańczuk
8d8a89ceea
fix(node): repl._builtinLibs (#20046)
Ref https://github.com/denoland/deno/issues/19733
2023-08-04 14:30:48 +02:00
Bartek Iwańczuk
d9c85e016f
fix(node): node:test reports correct location (#20025)
Also removed some noisy output that caused test flakiness.
2023-08-02 17:11:04 +02:00
Bartek Iwańczuk
21f1b2f62b
feat(node): add polyfill for node:test module (#20002)
This commit provides basic polyfill for "node:test" module. Currently
only top-level "test" function is polyfilled, all remaining functions from
that module throw not implemented errors.
2023-08-02 01:17:38 +02:00
Leo Kettmeir
aa8078b688
feat(node/os): implement getPriority, setPriority & userInfo (#19370)
Takes #4202 over
Closes #17850 

---------

Co-authored-by: ecyrbe <ecyrbe@gmail.com>
2023-07-31 22:29:09 +02:00
Luca Casonato
78ceeec6be
perf: faster node globals access in cjs (#19997)
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-07-31 19:45:32 +00:00
Bartek Iwańczuk
bd79baea5e
fix(node): add writable and readable fields to FakeSocket (#19931)
Closes https://github.com/denoland/deno/issues/19927
2023-07-25 07:17:53 +00:00
Vedant Pandey
d7a9ed9714
fix(node_compat): Wrap require resolve exports in try catch block (#19592)
Potentially closes #19499
2023-07-24 11:30:03 +03:00
sigmaSd
5a3dbe1a62
chore: update commonjs loading docs (#19904) 2023-07-22 05:48:06 +02:00
Leo Kettmeir
da709729e3
fix(node/http): add encrypted field to FakeSocket (#19886)
Fixes #19557
2023-07-21 02:18:07 +02:00
Luca Casonato
e511022c74
feat(ext/node): properly segregate node globals (#19307)
Code run within Deno-mode and Node-mode should have access to a
slightly different set of globals. Previously this was done through a
compile time code-transform for Node-mode, but this is not ideal and has
many edge cases, for example Node's globalThis having a different
identity than Deno's globalThis.

This commit makes the `globalThis` of the entire runtime a semi-proxy.
This proxy returns a different set of globals depending on the caller's
mode. This is not a full proxy, because it is shadowed by "real"
properties on globalThis. This is done to avoid the overhead of a full
proxy for all globalThis operations.

The globals between Deno-mode and Node-mode are now properly segregated.
This means that code running in Deno-mode will not have access to Node's
globals, and vice versa. Deleting a managed global in Deno-mode will
NOT delete the corresponding global in Node-mode, and vice versa.

---------

Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
Co-authored-by: Aapo Alasuutari <aapo.alasuutari@gmail.com>
2023-07-19 10:30:04 +02:00
Leo Kettmeir
bf4e99cbd7
fix(node/http): call callback after request is sent (#19871)
Fixes #19762
2023-07-19 01:30:19 +02:00
Leo Kettmeir
bab0294db6
fix(node/net): Server connection callback include socket value (#19779) 2023-07-19 00:33:43 +02:00
Divy Srivastava
51b3534b3d
fix(ext/node): check if resource can be used with write_vectored (#19868)
Fixes https://github.com/denoland/deno/issues/19766 
Fixes https://github.com/denoland/deno/issues/19846
2023-07-18 23:34:26 +02:00
Bartek Iwańczuk
7e1218cd8f
fix(node): add process.dlopen API (#19860)
Fixes https://github.com/denoland/deno/issues/19830
2023-07-18 15:13:17 +02:00
David Sherret
4ebe3bdb06
fix(node): improve error message requiring non-npm es module (#19856)
Closes #19842
Closes #16913
2023-07-17 16:19:00 -04:00
David Sherret
7a9f7f3419
fix(node): improve require esm error messages (#19853)
Part of #19842.

Closes #19583
Closes #16913
2023-07-17 14:00:44 -04:00
await-ovo
37241e9b1e
fix(ext/node): fix stream/promises export (#19820) 2023-07-17 22:10:34 +09:00
Leo Kettmeir
9d5f6f67d6
fix(node/http): add destroy to FakeSocket (#19796)
Closes #19782
2023-07-11 15:08:35 +02:00
Leo Kettmeir
4cfc54931d
fix(node/http): allow callback in first argument of end call (#19778)
Closes #19762
2023-07-11 14:49:19 +02:00
Leo Kettmeir
5cda141f2d
fix(node/http): server use FakeSocket and add end method (#19660)
Fixes #19324
2023-07-10 13:48:35 +02:00
David Sherret
f3095b8d31
chore: upgrade to dprint 0.39 (#19768) 2023-07-08 18:34:08 +00:00
Divy Srivastava
e4870d84be
perf(ext/node): native vectored write for server streams (#19752)
```
# main
$ ./load_test 10 0.0.0.0 8080 0 0
Using message size of 20 bytes
Running benchmark now...
Msg/sec: 106182.250000
Msg/sec: 110279.750000
^C

# this PR
$ ./load_test 10 0.0.0.0 8080 0 0
Using message size of 20 bytes
Running benchmark now...
Msg/sec: 131632.250000
Msg/sec: 134754.250000
^C
```
2023-07-07 22:17:08 +05:30
Bartek Iwańczuk
de630b9b78
perf(node/async_hooks): optimize AsyncLocalStorage (#19729)
This makes the implementation of "AsyncLocalStorage" from
"node:async_hooks" 3.5x faster than before for noop benchmark
(measuring baseline overhead). It's still 3.5x slower than not
using `AsyncLocalStorage` and 1.64x slower than using
noop promise hooks.
2023-07-06 13:05:10 +02:00
Divy Srivastava
57fae55d82
perf(ext/node): optimize net streams (#19678)
~4.5x improvement in `npm:ws` echo benchmark:

```
$ ./load_test 10 0.0.0.0 8080 0 0
Using message size of 20 bytes
Running benchmark now...
Msg/sec: 101083.750000
Msg/sec: 103606.000000
^C

$ ./load_test 10 0.0.0.0 8080 0 0
Using message size of 20 bytes
Running benchmark now...
Msg/sec: 24906.750000
Msg/sec: 28478.000000
^C
```
2023-07-05 22:45:10 +05:30
await-ovo
686ec85f52
fix(ext/node): Define performance.timeOrigin as getter property (#19714) 2023-07-04 20:19:18 +03:00
await-ovo
0f4051a37a
fix(ext/node): ignore cancelled timer when node timer refresh (#19637)
For timers that have already executed clearTimeout, there is no need to recreate a new timer when refresh is executed again.
2023-07-02 19:11:34 +00:00
Bartek Iwańczuk
01f0d03ae8
refactor: rename built-in node modules from ext:deno_node/ to node: (#19680)
Closes https://github.com/denoland/deno/issues/19510
2023-07-02 20:19:30 +02:00
Leo Kettmeir
4db534d461
fix(node/http): add setKeepAlive to FakeSocket (#19659)
Closes #19535
2023-06-30 03:39:16 +02:00
Bartek Iwańczuk
f372688f22
fix: lint on main branch (#19622) 2023-06-27 17:35:19 +09:00
Kenta Moriuchi
e16b74d792
chore(ext/node): disable prefer-primordials on a per-file basis (#19553) 2023-06-27 15:18:22 +09:00
Felipe Baltor
814edcdd57
test(ext/node): port crypto_test.ts from deno_std (#19561) 2023-06-27 11:04:49 +09:00
Martin Fischer
801b9ec62d
chore: fix typos (#19572) 2023-06-26 09:10:27 -04:00
Ryan Clements
b37b286f7f
fix(ext/node): remove path.toFileUrl (#19536) 2023-06-26 13:08:17 +09:00
Divy Srivastava
4a18c76135
fix(ext/node): support brotli APIs (#19223)
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-06-24 19:42:08 +05:30
Divy Srivastava
f81027ae9f
fix(serde_v8): Do not coerce values in serde_v8 (#19569)
Fixes #19568 

Values are not coerced to the desired type during deserialisation. This
makes serde_v8 stricter.

---------

Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-06-23 12:52:48 +02:00
Ryan Clements
d32287d211
fix(ext/node): remove fromFileUrl from "node:path" (#19504) 2023-06-16 19:43:59 +09:00
Vedant Pandey
0c50c39c35
fix(node): Worker constructor doesn't check type: module of package.json (#19480) 2023-06-15 17:00:30 +02:00
Bartek Iwańczuk
f145cbfacc
refactor(ext/fetch): simplify fetch ops (#19494)
Addresses feedback from
https://github.com/denoland/deno/pull/19412#discussion_r1227912676
2023-06-15 15:34:21 +02:00
Leo Kettmeir
fc4e4c3e93
chore(ext/node): bring back changes to ClientRequest.onSocket (#19509)
Reverts denoland/deno#19426
2023-06-14 22:59:27 +02:00
Leo Kettmeir
92e7287f4a
fix(node/buffer): make slice be the same as subarray (#19481) 2023-06-13 21:26:28 +02:00
Bartek Iwańczuk
07cbec4a82
fix(ext/node): handle 'upgrade' responses (#19412)
This commit adds support for "upgrade" events in "node:http"
"ClientRequest". Currently only "Websocket" upgrades are
handled. Thanks to this change package like "npm:puppeteer"
and "npm:discord" should work.

Closes https://github.com/denoland/deno/issues/18913
Closes https://github.com/denoland/deno/issues/17847
2023-06-13 14:11:27 +02:00
Leo Kettmeir
b4ae37a617
feat(node): HTTPS server (#19362) 2023-06-13 04:15:08 +02:00