Age | Commit message (Collapse) | Author |
|
Fixes: https://github.com/denoland/deno/issues/24713
Fixes: https://github.com/denoland/deno/issues/25855
|
|
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
```
|
|
This reverts commit 71ca61e189cca9215982ce4598b7a4da8430c584.
Now uses a shared implementation from deno_core.
|
|
Reverts denoland/deno#24402
deno_web can't depend on code in runtime
|
|
We are switching to ContinuationPreservedEmbedderData. This allows
adding async context tracking to the various async operations that deno
provides.
Fixes: https://github.com/denoland/deno/issues/7010
Fixes: https://github.com/denoland/deno/issues/22886
Fixes: https://github.com/denoland/deno/issues/24368
|
|
|
|
|
|
|
|
|
|
for snapshotted modules (#18041)
This commit renames "deno_core::InternalModuleLoader" to
"ExtModuleLoader" and changes the specifiers used by the
modules loaded from this loader to "ext:".
"internal:" scheme was really ambiguous and it's more characters than
"ext:", which should result in slightly smaller snapshot size.
Closes https://github.com/denoland/deno/issues/18020
|
|
(#18019)
This commit changes "include_js_files!" macro from "deno_core"
in a way that "dir" option doesn't cause specifiers to be rewritten
to include it.
Example:
```
include_js_files! {
dir "js",
"hello.js",
}
```
The above definition required embedders to use:
`import ... from "internal:<ext_name>/js/hello.js"`.
But with this change, the "js" directory in which the files are stored
is an implementation detail, which for embedders results in:
`import ... from "internal:<ext_name>/hello.js"`.
The directory the files are stored in, is an implementation detail and
in some cases might result in a significant size difference for the
snapshot. As an example, in "deno_node" extension, we store the
source code in "polyfills" directory; which resulted in each specifier
to look like "internal:deno_node/polyfills/<module_name>", but with
this change it's "internal:deno_node/<module_name>".
Given that "deno_node" has over 100 files, many of them having
several import specifiers to the same extension, this change removes
10 characters from each import specifier.
|
|
Adds two test files: "cli/tests/unit_node/process_test.ts" and
"cli/tests/unit_node/child_process_test.ts"
---------
Co-authored-by: Yoshiya Hinosawa <stibium121@gmail.com>
|
|
This PR changes Node.js/npm compatibility layer to use polyfills for
built-in Node.js
embedded in the snapshot (that are coming from "ext/node" extension).
As a result loading `std/node`, either from
"https://deno.land/std@<latest>/" or
from "DENO_NODE_COMPAT_URL" env variable were removed. All code that is
imported via "npm:" specifiers now uses code embedded in the snapshot.
Several fixes were applied to various modules in "ext/node" to make
tests pass.
---------
Co-authored-by: Yoshiya Hinosawa <stibium121@gmail.com>
Co-authored-by: Divy Srivastava <dj.srivastava23@gmail.com>
|
|
This commit moves "deno_std/node" in "ext/node" crate. The code is
transpiled and snapshotted during the build process.
During the first pass a minimal amount of work was done to create the
snapshot, a lot of code in "ext/node" depends on presence of "Deno"
global. This code will be gradually fixed in the follow up PRs to migrate
it to import relevant APIs from "internal:" modules.
Currently the code from snapshot is not used in any way, and all
Node/npm compatibility still uses code from
"https://deno.land/std/node" (or from the location specified by
"DENO_NODE_COMPAT_URL"). This will also be handled in a follow
up PRs.
---------
Co-authored-by: crowlkats <crowlkats@toaxl.com>
Co-authored-by: Divy Srivastava <dj.srivastava23@gmail.com>
Co-authored-by: Yoshiya Hinosawa <stibium121@gmail.com>
|