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

8803 commits

Author SHA1 Message Date
David Sherret
fb57043c2d chore(ci): update other workflows to use cargo-toolchain.toml (#18109)
I accidentally missed these in #18104
2023-03-16 11:54:12 +09:00
Yoshiya Hinosawa
fc6edac597
chore(runtime): fix build.rs (2) (#18113) 2023-03-10 15:41:43 +09:00
Yoshiya Hinosawa
553fc5e2f1
chore(runtime): fix build.rs (#18112) 2023-03-10 15:30:49 +09:00
denobot
5f0931e6c8
1.31.2 (#18111)
Co-authored-by: kt3k <kt3k@users.noreply.github.com>
2023-03-10 14:25:50 +09:00
Yusuke Tanaka
625efa0dc8 refactor: use pin! macro from std (#18110)
<!--
Before submitting a PR, please read http://deno.land/manual/contributing

1. Give the PR a descriptive title.

  Examples of good title:
    - fix(std/http): Fix race condition in server
    - docs(console): Update docstrings
    - feat(doc): Handle nested reexports

  Examples of bad title:
    - fix #7123
    - update docs
    - fix bugs

2. Ensure there is a related issue and it is referenced in the PR text.
3. Ensure there are tests that cover the changes.
4. Ensure `cargo test` passes.
5. Ensure `./tools/format.js` passes without changing files.
6. Ensure `./tools/lint.js` passes.
7. Open as a draft PR if your work is still in progress. The CI won't
run
   all steps, but you can add '[ci]' to a commit message to force it to.
8. If you would like to run the benchmarks on the CI, add the 'ci-bench'
label.
-->

This commit replaces `pin_mut!` macro with `pin!` macro that has been
provided from std since Rust 1.68.0.
With the std version we can not only expect its stability but also pass
an expression (rather than identifier) as an argument to the macro.
2023-03-10 13:03:23 +09:00
Lino Le Van
afb04af3e3 chore(cli): fix outdated comment (#18106) 2023-03-10 13:03:17 +09:00
Bartek Iwańczuk
c7528240cb refactor(core): remove RuntimeOptions::extensions_with_js (#18099)
This commit removes "deno_core::RuntimeOptions::extensions_with_js".

Now it's embedders' responsibility to properly register extensions
that will not contains JavaScript sources when running from an existing
snapshot.

Prerequisite for https://github.com/denoland/deno/pull/18080
2023-03-10 13:03:08 +09:00
Bartek Iwańczuk
159f444d16 fix(prompt): better output with control chars (#18108) 2023-03-10 13:02:28 +09:00
David Sherret
2e16551d24 chore(ci): ensure Rust toolchain installation is based on rust-toolchain.toml (#18104)
It seems like `dtolnay/rust-toolchain` does not want to support
rust-toolchain.toml unfortunately and we had thought it did.
2023-03-10 13:02:20 +09:00
Bartek Iwańczuk
2cd5f64695 fix: Split extension registration and snapshotting (#18098)
This commit partially reverts changes from
https://github.com/denoland/deno/pull/18095.

Turns out I made a mistake that became apparent when working
on removing "RuntimeOptions::extensions_with_js" in a follow up.
2023-03-10 13:02:12 +09:00
David Sherret
0c0b5c1195 refactor(tests/lsp): consolidate more into test LspClient and reduce verbosity (#18100) 2023-03-10 13:02:04 +09:00
Divy Srivastava
f4cf507683 chore: bump rusty_v8 to 0.64.0 (#18096) 2023-03-10 13:01:55 +09:00
Bartek Iwańczuk
566db8921b chore: update Rust to 1.68.0 (#18102) 2023-03-10 13:01:49 +09:00
Bartek Iwańczuk
09de6a11d6 refactor: Split extension registration for runtime and snapshotting (#18095)
This commit splits "<ext_name>::init" functions into "init_ops" and
"init_ops_and_esm". That way we don't have to construct list of
ESM sources on each startup if we're running with a snapshot.

In a follow up commit "deno_core" will be changed to not have a split
between "extensions" and "extensions_with_js" - it will be embedders'
responsibility to pass appropriately configured extensions.

Prerequisite for https://github.com/denoland/deno/pull/18080
2023-03-10 13:01:41 +09:00
Divy Srivastava
716409e81e fix(ext/webstorage): check size of inputs before insert (#18087) 2023-03-10 13:01:34 +09:00
Bartek Iwańczuk
9ebbd23ced refactor(core): Extension::builder_with_deps (#18093)
Prerequisite for https://github.com/denoland/deno/pull/18080
2023-03-10 13:01:23 +09:00
Kenta Moriuchi
cd9f11ae38 fix(rumtime): Add Deno. prefix for registered symbols (#18086) 2023-03-10 13:01:17 +09:00
Bartek Iwańczuk
80d1b29587 perf(core): over-allocate in ModuleMap when running from snapshot (#18083)
This commit changes "ModuleMap" initialization to over-allocate by 16
for vectors storing module information and module V8 handles. In 99%
cases there's gonna be at least one additional module loaded, so it's
very wasteful to have to reallocate when the module is executed (IIRC
Rust will double the size of the vector) and move all of the elements.
2023-03-10 13:01:07 +09:00
Bartek Iwańczuk
f9b43044ef perf: don't add unload event listener (#18082)
This commit changes how "unload" event is handled - before
this commit an event listener was added unconditionally in
the runtime bootstrapping function, which for some reason was
very expensive (0.3ms). Instead of adding an event listener,
a check was added to "dispatchEvent" function that performs
the same action (so it's only called if there's an event dispatched).
2023-03-10 13:00:11 +09:00
David Sherret
9e08d43d68 refactor(lsp): improve test client initialization (#18015) 2023-03-10 12:59:47 +09:00
Roy Ivy III
e60677ddcf fix(runtime/windows): ensure Deno.stdin.setRaw(false) properly disables raw mode (#17983) 2023-03-10 12:59:34 +09:00
David Sherret
b064c95e93 fix(npm): improve peer dependency resolution with circular dependencies (#18069)
This improves peer dependency resolution yet again. We did not handle
scenarios like the following:

```
// a -> b -> c -> d -> c -> b (peer)
```

...which would maybe work ok the first time its run in some cases, but
then lead to a lockfile that would error on load.

This now keeps track of circular dependencies and updates nodes
accordingly. That said, there is still a lurking bug in this code
somewhere that I've added a comment for (there is a mitigation on the
tail end that seems to work well). The current state is much better than
before and I can look into it later. I think it's something small that's
incorrect.
2023-03-10 12:59:23 +09:00
Divy Srivastava
c39695736e feat(core): prevent isolate drop for CLI main worker (#18059)
```
Benchmark 1: deno run -A ../empty.js
  Time (mean ± σ):      20.5 ms ±   0.5 ms    [User: 13.4 ms, System: 5.1 ms]
  Range (min … max):    19.8 ms …  24.0 ms    119 runs

Benchmark 2: target/release/deno run -A ../empty.js
  Time (mean ± σ):      18.8 ms ±   0.3 ms    [User: 13.0 ms, System: 4.9 ms]
  Range (min … max):    18.3 ms …  19.9 ms    129 runs
  ```

---------

Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-03-10 12:59:15 +09:00
Bartek Iwańczuk
81a9784116 chore: update tempfile dependency (#18077) 2023-03-10 12:59:04 +09:00
Miroslav Bajtoš
1b71011d75 deps: bump once_cell to ^1.17.1 (#18075) 2023-03-10 12:58:55 +09:00
Bartek Iwańczuk
88bf50c812 Revert "perf: disable snapshot compression (#18061)" (#18074)
This reverts commit d12b039e1a.

It was landed as an experiment and it confirms much faster startup
if not compression is applied.
2023-03-10 12:58:49 +09:00
David Sherret
35c889d1ad fix: attempt to only allow one deno process to update the node_modules folder at a time (#18058)
This is implemented in such a way that it should still allow processes
to go through when a file lock wasn't properly cleaned up and the OS
hasn't released it yet (but with a 200ms-ish delay).

Closes #18039
2023-03-10 12:58:41 +09:00
Bartek Iwańczuk
793089bdf0 refactor: rename InternalModuleLoader to ExtModuleLoader, use ext: scheme 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
2023-03-10 12:58:25 +09:00
Bartek Iwańczuk
81293440be refactor(runtime): conditionally register Extension with source files (#18068)
Since we are snapshotting extension source at build time, there's no
need to define list of sources for the extension at runtime.

This commit changes "deno_node" extension by removing "init_polyfill"
function in favor of "init_polyfill_ops_and_esm()" and "init_polyfill_ops()".

The former is used during snapshot and when "deno_runtime" is compiled
with "dont_create_runtime_snapshot" cargo feature flag. The latter is used
when running a worker from an existing snapshot.

This is a start of a bigger refactor to all extensions - thanks to this
change, we don't have to iterate over all defined source files for extension at
runtime, and because of that we don't have to create a filepath for each of the
source files. It's not a big deal, but we are iterating over 300 files on each start,
and concatenating 3 strings before creating a "PathBuf" for ~200 of them.
This is already visible on the startup flamegraphs and should be avoided.
2023-03-10 12:58:18 +09:00
Bartek Iwańczuk
daab06b458 perf: move setting up Deno namespace to snapshot time (#18067)
No need to do it on startup every time.
2023-03-10 12:58:12 +09:00
Bartek Iwańczuk
3e16c3fe36 refactor(core): don't use Result in ExtensionBuilder::state (#18066)
There's no point for this API to expect result. If something fails it should
result in a panic during build time to signal to embedder that setup is
wrong.
2023-03-10 12:58:06 +09:00
Caleb Cox
ec69d8c8ab fix(cli): add space after period in --v8-flags (#18063)
Add space between period and "Any" in `--v8-flags` help text.
2023-03-10 12:57:58 +09:00
Bartek Iwańczuk
a9af072e2d perf: move runtime bootstrap code to snapshot time (#18062)
This commit moves some of the code from "99_main.js" to
be executed during the snapshot time instead of on each
worker bootstrap. These should minimally help with startup
time benchmark.
2023-03-10 12:57:46 +09:00
ayame113
36fc29869a chore(docs): Fixed manual link (#18060) 2023-03-10 12:57:26 +09:00
Bartek Iwańczuk
05eecec2f0 perf: disable snapshot compression (#18061)
This commit disables snapshot compression for the CLI snapshot.]

Decompressing the snapshot on startup takes ~2.5ms.
2023-03-10 12:57:19 +09:00
Bartek Iwańczuk
b67df0f07b refactor: Add "deno_fs" extension crate (#18040)
This commit factors out APIs related to file system from "runtime/"
to a separate "deno_fs" extension crate.
2023-03-10 12:57:09 +09:00
Nick Hanley
c879a00cc9 chore(tests): use temp dir in test missing_deno_dir (#18057)
Fixes #18056
2023-03-10 12:56:57 +09:00
Tristan F
406c95230f chore: remove duplicate copyright disclaimer (#18055)
Removes duplicate copyright disclaimer from `/lockfile/lib.rs`
2023-03-10 12:56:47 +09:00
Bartek Iwańczuk
91ea2cdc57 refactor: use v8::String::new_external_onebyte_static where appropriate (#18051) 2023-03-10 12:56:33 +09:00
David Sherret
bd6fd4ea5f chore(tests): ability to capture stdout and stderr separately (#18035)
This is to allow making assertions on stdout and stderr separately.
2023-03-10 12:56:18 +09:00
Divy Srivastava
f065380414 fix(ext/node): remove unused _hex module (#18045) 2023-03-10 12:56:05 +09:00
Divy Srivastava
38b4411cae perf(ext/node): improve createHash performance (#18033)
```
> deno run -A ../test.mjs
cpu: unknown
runtime: deno 1.31.1 (aarch64-apple-darwin)

benchmark      time (avg)             (min … max)       p75       p99      p995
------------------------------------------------- -----------------------------
             2.22 µs/iter      (2.2 µs … 2.28 µs)   2.22 µs   2.28 µs   2.28 µs

> target/release/deno run -A test.mjs
cpu: unknown
runtime: deno 1.31.1 (aarch64-apple-darwin)

benchmark      time (avg)             (min … max)       p75       p99      p995
------------------------------------------------- -----------------------------
            864.9 ns/iter   (825.05 ns … 1.22 µs) 864.93 ns   1.22 µs   1.22 µs
```
2023-03-10 12:55:55 +09:00
Bartek Iwańczuk
ce7a23b86d refactor: move "pathFromURL" to deno_web extension (#18037)
This API is required by several extensions like "ext/node", "ext/ffi"
and also FS APIs that we want to move to a separate crate. Because 
of that "pathFromURL" API was moved to "deno_web" extension so
other extension crates can rely on it.
2023-03-10 12:55:47 +09:00
Bartek Iwańczuk
b6a4b1c794 refactor(core): InternalModuleLoader checks if all files were used (#18005)
This commit changes "InternalModuleLoader" from "deno_core" to 
store a list of used modules during snapshotting. If a module was not
used during snapshotting "InternalModuleLoader" will panic in its "Drop"
handler signaling to the embedder that they made a mistake somewhere.
2023-03-10 12:55:33 +09:00
Bartek Iwańczuk
4fbc51ca46 refactor: move definition of Deno.build from "runtime" to "core" (#18036)
We use information about build in several extension crates like
"ext/node" or "runtime/". In an effort to move "fs" APIs to a separate 
crate it is a prerequisite to have this information available outside 
of the "runtime/" crate.

This commit moves definition of "build" object to "Deno.core" that is 
later forwarded to "Deno.build".
2023-03-10 12:55:19 +09:00
Nayeem Rahman
38ed6d55f7 fix(check): include dts files in tsc roots (#18026) 2023-03-10 12:55:13 +09:00
Divy Srivastava
be3d72876a chore(ext/node): cleanup empty internal_bindings (#18032) 2023-03-10 12:52:10 +09:00
Filip Skokan
7e0cc3cb2f fix(ext/crypto): correctly limit ECDSA and hash algorithms (#18030)
Closes #18029
2023-03-10 12:52:00 +09:00
Bartek Iwańczuk
d583c593c0 refactor(runtime): merge "spawn" into "process" (#18022)
This commit merges "runtime/js/40_spawn.js" into
"runtime/js/40_process.js", and "runtime::ops::spawn" 
into "runtime::ops::process".

It makes little sense to have them separated given that we want to
factor out these APIs into a separate extension crate.
2023-03-10 12:51:42 +09:00
Divy Srivastava
f9a235f2eb chore(core): remove argc field from OpDecl (#18024)
https://github.com/denoland/deno/pull/18023#discussion_r1125611859
2023-03-10 12:51:31 +09:00