summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-03-08refactor(runtime): conditionally register Extension with source files (#18068)Bartek Iwańczuk
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-08perf: move setting up Deno namespace to snapshot time (#18067)Bartek Iwańczuk
No need to do it on startup every time.
2023-03-07refactor(core): don't use Result in ExtensionBuilder::state (#18066)Bartek Iwańczuk
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-07fix(cli): add space after period in `--v8-flags` (#18063)Caleb Cox
Add space between period and "Any" in `--v8-flags` help text.
2023-03-07perf: move runtime bootstrap code to snapshot time (#18062)Bartek Iwańczuk
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-07chore(docs): Fixed manual link (#18060)ayame113
2023-03-07perf: disable snapshot compression (#18061)Bartek Iwańczuk
This commit disables snapshot compression for the CLI snapshot.] Decompressing the snapshot on startup takes ~2.5ms.
2023-03-07refactor: Add "deno_fs" extension crate (#18040)Bartek Iwańczuk
This commit factors out APIs related to file system from "runtime/" to a separate "deno_fs" extension crate.
2023-03-07chore(tests): use temp dir in test `missing_deno_dir` (#18057)Nick Hanley
Fixes #18056
2023-03-06chore: remove duplicate copyright disclaimer (#18055)Tristan F
Removes duplicate copyright disclaimer from `/lockfile/lib.rs`
2023-03-06refactor: use v8::String::new_external_onebyte_static where appropriate (#18051)Bartek Iwańczuk
2023-03-06chore(tests): ability to capture stdout and stderr separately (#18035)David Sherret
This is to allow making assertions on stdout and stderr separately.
2023-03-06fix(ext/node): remove unused _hex module (#18045)Divy Srivastava
2023-03-06perf(ext/node): improve createHash performance (#18033)Divy Srivastava
``` > 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-05refactor: move "pathFromURL" to deno_web extension (#18037)Bartek Iwańczuk
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-05refactor(core): InternalModuleLoader checks if all files were used (#18005)Bartek Iwańczuk
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-05refactor: move definition of Deno.build from "runtime" to "core" (#18036)Bartek Iwańczuk
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-05fix(check): include dts files in tsc roots (#18026)Nayeem Rahman
2023-03-05chore(ext/node): cleanup empty internal_bindings (#18032)Divy Srivastava
2023-03-05fix(ext/crypto): correctly limit ECDSA and hash algorithms (#18030)Filip Skokan
Closes #18029
2023-03-05refactor(runtime): merge "spawn" into "process" (#18022)Bartek Iwańczuk
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-05chore(core): remove argc field from OpDecl (#18024)Divy Srivastava
https://github.com/denoland/deno/pull/18023#discussion_r1125611859
2023-03-05feat(ext/ffi): Make External pointers keep reference to V8 buffer (#17955)Aapo Alasuutari
2023-03-05feat(ops): relational ops (#18023)Divy Srivastava
Join two independent ops into one. A fast impl of one + a slow callback of another. Here's an example showing optimized paths for latin-1 via fast call and the next-best fallback using V8 apis. ```rust #[op(v8)] fn op_encoding_encode_into_fallback( scope: &mut v8::HandleScope, input: serde_v8::Value, // ... #[op(fast, slow = op_encoding_encode_into_fallback)] fn op_encoding_encode_into( input: Cow<'_, str>, // ... ``` Benchmark results of the fallback path: ``` time target/release/deno run -A --unstable ./cli/tests/testdata/benches/text_encoder_into_perf.js ________________________________________________________ Executed in 70.90 millis fish external usr time 57.76 millis 0.23 millis 57.53 millis sys time 17.02 millis 1.28 millis 15.74 millis target/release/deno_main run -A --unstable ./cli/tests/testdata/benches/text_encoder_into_perf.js ________________________________________________________ Executed in 154.00 millis fish external usr time 67.14 millis 0.26 millis 66.88 millis sys time 38.82 millis 1.47 millis 37.35 millis ```
2023-03-05refactor(runtime): remove 40_files.js, 40_write_file.js and 40_read_file.js ↵Bartek Iwańczuk
(#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-05refactor: remove unused 40_diagnostics.js file (#18021)Bartek Iwańczuk
This file was not used anywhere - even though it exposed an unstable "Deno.DiagnosticCategory" API. Seems like a left over from when we had "Deno.emit" API.
2023-03-05refactor(core): include_js_files! 'dir' option doesn't change specifiers ↵Bartek Iwańczuk
(#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-05test(compile): Add a test for dynamic imports in `deno compile` (#18017)Andreu Botella
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-04refactor: remove `Semaphore::new(1)` and use `TaskQueue` (#18014)David Sherret
2023-03-05refactor(runtime): factor out deno_io extension crate (#18001)Bartek Iwańczuk
This is a prerequisite to factor out FS ops to a separate crate.
2023-03-05refactor: move TaskQueue from deno_runtime to deno_core (#18016)Bartek Iwańczuk
This utility is useful in several contexts so it seems reasonable to have it in `deno_core`.
2023-03-05refactor(runtime): factor out FsPermissions for fs ops (#18012)Bartek Iwańczuk
This will help us with moving fs ops to a separate extension crate.
2023-03-04refactor: simplify to string calls (#18011)Geert-Jan Zwiers
2023-03-04chore(docs): add note about loadavg returning 0 on windows (#18006)Geert-Jan Zwiers
2023-03-03fix: lazily surface errors in package.json deps parsing (#17974)David Sherret
Closes #17941
2023-03-03chore: update deno_std submodule to 0.178.0 (#18003)Bartek Iwańczuk
2023-03-03wpt: unlock nightly with --no-ignore (#17998)Filip Skokan
When I was testing the code in #17892 I had updated expectations and didn't catch this. This PR fixes the the expectation file format to not be checked when --no-ignore is passed during [nightly](https://github.com/denoland/deno/actions/runs/4319520368/jobs/7538796572#step:9:46) runs.
2023-03-03feat(ops): reland fast zero copy string arguments (#17996)Divy Srivastava
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-02test(wpt): implement process timeout, fix expectations update, and more... ↵Filip Skokan
(#17892) - relands #17872 - updates the timeouts to be re-configurable just for CI - fixes `./tools/wpt.ts update` - adds option not "ignore" during, applied to wpt epoch runs only
2023-03-02chore(cli): update deno_lint to 0.41.0 (#17997)Yusuke Tanaka
<!-- 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-01fix(core): introduce `SafeRegExp` to primordials (#17592)Kenta Moriuchi
2023-02-28chore: fix cargo build rebuilding deno_runtime each time (#17978)David Sherret
2023-02-28chore(test): remove TestCommandOutput macros (#17975)David Sherret
2023-02-28fix(ext/ffi): Remove deno_core::OpState qualifiers, fix ops returning ↵Aapo Alasuutari
pointer defaults (#17959)
2023-02-27chore: test builders for integration tests (#17965)David Sherret
Start of adding test builders to simplify integration tests. I only updated a few test files. We can complete upgrading over time.
2023-02-27chore(ext/node): fix variable name (#17948)Geert-Jan Zwiers
2023-02-27fix(lockfile): don't touch lockfile is npm specifiers are identical (#17973)Bartek Iwańczuk
We were unconditionally inserting npm specifiers into the lockfile, marking it as "dirty" and requiring saving.
2023-02-27chore(ext/node): suppress node compat tests stdout by default (#17909)Yoshiya Hinosawa
2023-02-27deps: bump `regexp` to `^1.7.0` (#17966)Dominic DiGiacomo
2023-02-26fix(cli,ext/web): Upgrading uuid from =1.1.2 to 1.3.0 (#17963)sean watters
Resolves https://github.com/denoland/deno/issues/17962