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

4417 commits

Author SHA1 Message Date
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
David Sherret
9e08d43d68 refactor(lsp): improve test client initialization (#18015) 2023-03-10 12:59:47 +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
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
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
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
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
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
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
dea5de1c45 refactor(runtime): remove 40_files.js, 40_write_file.js and 40_read_file.js (#18018)
JavaScript APIs from "runtime/js/40_files.js" combined abstractions
for stdio streams ("Stdout", "Stderr", "Stdin") and file system file
("File", "FsFile"). APIs from "runtime/js/40_read_file.js" and 
"runtime/js/40_write_file.js" were implemented using ops from 
"runtime/ops/fs.rs".

This file was removed and relevant APIs were moved to "deno_io/12_io.js"
and "runtime/js/30_fs.js".

This work is meant to enable factoring out "deno_fs" crate.
2023-03-10 12:47:49 +09:00
Bartek Iwańczuk
ce75e31625 refactor(core): include_js_files! 'dir' option doesn't change specifiers (#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.
2023-03-10 12:47:26 +09:00
Andreu Botella
c58790ef13 test(compile): Add a test for dynamic imports in deno compile (#18017)
denoland/eszip#115 added support for statically-analyzed dynamic imports
in eszip, which made `deno compile` support dynamic imports starting
from #17858. This PR adds a test for it.

----

This test is adapted from PR #17663.

Closes #17908
2023-03-10 12:47:20 +09:00
David Sherret
65d6704818 refactor: remove Semaphore::new(1) and use TaskQueue (#18014) 2023-03-10 12:47:14 +09:00
Bartek Iwańczuk
02026506f5 refactor(runtime): factor out deno_io extension crate (#18001)
This is a prerequisite to factor out FS ops to a separate crate.
2023-03-10 12:47:08 +09:00
Geert-Jan Zwiers
7ec260dddf refactor: simplify to string calls (#18011) 2023-03-10 12:46:55 +09:00
Geert-Jan Zwiers
f763f2e298 chore(docs): add note about loadavg returning 0 on windows (#18006) 2023-03-10 12:46:51 +09:00
David Sherret
483caf2820 fix: lazily surface errors in package.json deps parsing (#17974)
Closes #17941
2023-03-10 12:46:44 +09:00
Bartek Iwańczuk
066dedf509 chore: update deno_std submodule to 0.178.0 (#18003) 2023-03-10 12:46:36 +09:00
Divy Srivastava
eda8c83d8b feat(ops): reland fast zero copy string arguments (#17996)
Reland https://github.com/denoland/deno/pull/16777

The codegen is disabled in async ops and when fallback to slow call is
possible (return type is a Result) to avoid hitting this V8 bug:
https://github.com/denoland/deno/issues/17159
2023-03-10 12:46:24 +09:00
Yusuke Tanaka
d3c02a68d3 chore(cli): update deno_lint to 0.41.0 (#17997)
<!--
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 updates deno_lint crate to 0.41.0. The new version contains
a braking change that requries a minor code fix here, which is also
addressed in this commit.
2023-03-10 12:44:45 +09:00
Kenta Moriuchi
d13055e317 fix(core): introduce SafeRegExp to primordials (#17592) 2023-03-10 12:44:33 +09:00
David Sherret
483ccbe220 chore(test): remove TestCommandOutput macros (#17975) 2023-03-10 12:44:23 +09:00
David Sherret
9fecdc29b4 chore: test builders for integration tests (#17965)
Start of adding test builders to simplify integration tests.

I only updated a few test files. We can complete upgrading over time.
2023-03-10 12:44:09 +09:00
Yoshiya Hinosawa
f1c756f589 chore(ext/node): suppress node compat tests stdout by default (#17909) 2023-03-10 12:43:29 +09:00
Yoshiya Hinosawa
e5ff08d85c fix(ext/node): util.types.isSharedArrayBuffer (#17836) 2023-03-10 12:42:14 +09:00
David Sherret
a07adc1a88 chore: fix flaky package_json_basic tests (#17940)
https://github.com/denoland/deno/actions/runs/4267836955/jobs/7429836369

Closes #17946
2023-03-10 12:41:41 +09:00
denobot
86785f2119
1.31.1 (#17936)
Co-authored-by: David Sherret <dsherret@gmail.com>
2023-02-24 21:17:58 -05:00
David Sherret
b5b331e31a
fix(npm): skip analyzing more specifiers in package.json (#17938) 2023-02-25 02:16:26 +00:00
David Sherret
d6192ce8fd
fix: regression remapping remote specifier to local file (#17935)
Tests added to deno_graph, which were previously not there.

Closes #17932
2023-02-25 01:23:51 +00:00
David Sherret
033b70af19
fix(npm): lazily install package.json dependencies only when necessary (#17931)
This lazily does an "npm install" when any package name matches what's
found in the package.json or when running a script from package.json
with deno task.

Part of #17916

Closes #17928
2023-02-24 19:35:43 -05:00
David Sherret
5683daf1aa
fix: ignore workspace specifiers in package.json (#17934)
Part of #17916
2023-02-24 19:27:50 -05:00
Leo Kettmeir
484b6fe2fa
refactor(flash): move remoteAddr to options bag (#17913)
Applies suggestion from #17912
2023-02-24 23:36:07 +01:00
David Sherret
9aebc8bc19
fix: ensure concurrent non-statically analyzable dynamic imports do not sometimes fail (#17923)
Closes #17918
2023-02-24 14:42:45 -05:00
David Sherret
a27d0885f4
feat: add DENO_NO_PACKAGE_JSON env var (#17926)
Depends on #17924

Part of #17916
2023-02-24 19:23:07 +00:00
David Sherret
7ad64283a1
fix(npm): package.json auto-discovery should respect --no-config and --no-npm (#17924)
Part of #17916
2023-02-24 13:51:21 -05:00
David Sherret
6472afd12b
fix: remote modules should be allowed to import data urls (#17920)
This was a regression that has already been broken for some time, but
that also became broken for when using an import map 1.31.

Closes #17914
2023-02-24 12:50:03 -05:00
denobot
c26fbe38d5
1.31.0 (#17906)
Co-authored-by: bartlomieju <bartlomieju@users.noreply.github.com>
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-02-24 00:16:04 +01:00
David Sherret
e57b38f8b2
fix(npm): allow resolving from package.json when an import map exists (#17905) 2023-02-23 23:20:23 +01:00