1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-24 15:19:26 -05:00
Commit graph

9105 commits

Author SHA1 Message Date
Luca Casonato
ff91c713f8
chore(ext/fs): decouple fs trait from deno_core (#18732)
This commit removes the dependencies on `deno_core` for the Fs trait.
This allows to move the trait into a different crate that does not
depend on core in the limit.

This adds a new `bounds` field to `deno_core::extension!` that expands
to `where` clauses on the generated code. This allows to add bounds to
the extension parameters, such as `Fs::File: Resource`.
2023-04-18 17:41:53 +02:00
Cre3per
f6e90abb81
refactor(tests): Watcher test timeout (#18459)
Closes #17438
2023-04-18 17:41:53 +02:00
Bartek Iwańczuk
bc857d8939
test: don't silently fail in check_sockopt (#18737) 2023-04-18 17:41:53 +02:00
Andy Jiang
89d277bddd
docs(readme): Update readme (#18677)
- updated examples
- added more resources
- added youtube

---------

Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-04-18 17:41:52 +02:00
David Sherret
49a697e4bb
fix(lsp): ensure language server status works on unix (#18727)
Closes #18724
2023-04-18 17:41:52 +02:00
Bartek Iwańczuk
d9279e3dd6
bench: add benchmark for deferred async ops (#18722)
```
./target/release/deno run cli/bench/async_ops_deferred.js
time 794 ms rate 1259445
time 786 ms rate 1272264
time 770 ms rate 1298701
time 784 ms rate 1275510
time 775 ms rate 1290322
time 786 ms rate 1272264
time 773 ms rate 1293661
time 771 ms rate 1297016
time 774 ms rate 1291989
time 767 ms rate 1303780
time 764 ms rate 1308900
time 768 ms rate 1302083
time 763 ms rate 1310615
time 761 ms rate 1314060
time 761 ms rate 1314060
time 762 ms rate 1312335
time 763 ms rate 1310615
time 759 ms rate 1317523
time 760 ms rate 1315789
time 761 ms rate 1314060
time 769 ms rate 1300390
time 763 ms rate 1310615
time 760 ms rate 1315789
time 763 ms rate 1310615
time 761 ms rate 1314060
time 759 ms rate 1317523
time 765 ms rate 1307189
time 760 ms rate 1315789
time 764 ms rate 1308900
time 763 ms rate 1310615
time 760 ms rate 1315789
time 757 ms rate 1321003
time 763 ms rate 1310615
time 759 ms rate 1317523
time 771 ms rate 1297016
time 759 ms rate 1317523
time 759 ms rate 1317523
time 763 ms rate 1310615
time 754 ms rate 1326259
time 755 ms rate 1324503
time 762 ms rate 1312335
time 752 ms rate 1329787
time 755 ms rate 1324503
time 754 ms rate 1326259
time 759 ms rate 1317523
time 754 ms rate 1326259
time 749 ms rate 1335113
time 753 ms rate 1328021
time 756 ms rate 1322751
time 753 ms rate 1328021
```

```
samply record -r 20000 target/release/deno run cli/bench/async_ops_deferred.js
```

https://share.firefox.dev/43Efvm6
2023-04-18 17:41:52 +02:00
Bartek Iwańczuk
f9ae88c1b7
Revert "perf(core): immediately schedule another tick if there are un… (#18718)
…polled ops (#18611)"

This reverts commit 4317055a3e.

Reverting because we discovered while working on
https://github.com/denoland/deno/pull/18619 that it doesn't work
correctly (sometimes waker just stops working).
2023-04-18 17:41:52 +02:00
Ryan Dahl
4e0bfafb24
feat(kv): AtomicOperation#sum (#18704) 2023-04-18 17:41:52 +02:00
David Sherret
f8d9ba79dd
chore: fix running node tests in parallel on Windows (#18711) 2023-04-18 17:41:52 +02:00
David Sherret
d3bb6ad0af
refactor: add TypeChecker struct (#18709)
Adds a `TypeChecker` struct and pushes more shared functionality into
it.
2023-04-18 17:41:52 +02:00
David Sherret
317e722220
chore: remove node_modules folder being created in testdata directory (#18708) 2023-04-18 17:41:52 +02:00
Kenta Moriuchi
d07a0c7bb3
fix(core): Use safe primordials wrappers (#18687) 2023-04-18 17:41:52 +02:00
David Sherret
eef96d1414
refactor: break up ProcState (#18707)
1. Breaks up functionality within `ProcState` into several other structs
to break out the responsibilities (`ProcState` is only a data struct
now).
2. Moves towards being able to inject dependencies more easily and have
functionality only require what it needs.
3. Exposes `Arc<T>` around the "service structs" instead of it being
embedded within them. The idea behind embedding them was to reduce the
verbosity of needing to pass around `Arc<...>`, but I don't think it was
exactly working and as we move more of these structs to be more
injectable I don't think the extra verbosity will be a big deal.
2023-04-18 17:41:52 +02:00
Divy Srivastava
001a9a5856
fix(ext/websocket): Avoid write deadlock that requires read_frame to complete (#18705)
Fixes https://github.com/denoland/deno/issues/18700

Timeline of the events that lead to the bug.

1. WebSocket handshake complete
2. Server on `read_frame` holding an AsyncRefCell borrow of the
WebSocket stream.
3. Client sends a TXT frame after a some time
4. Server recieves the frame and goes back to `read_frame`.
5. After some time, Server starts a `write_frame` but `read_frame` is
still holding a borrow!
^--- Locked. read_frame needs to complete so we can resume the write.

This commit changes all writes to directly borrow the
`fastwebsocket::WebSocket` resource under the assumption that it won't
affect ongoing reads.
2023-04-18 17:41:51 +02:00
Bartek Iwańczuk
ed3b5db1b8
chore: upgrade hyper to 0.14.26 (#18693)
https://github.com/hyperium/hyper/releases/tag/v0.14.26
2023-04-18 17:41:51 +02:00
Bartek Iwańczuk
ebd49c4a8d
perf(core): immediately schedule another tick if there are unpolled ops (#18611)
Currently we are "waking up" the runtime if at the end of the event loop
tick there are ops that haven't been polled. Waking up incurs a syscall
and it appears we can do another tick of the event loop, without
going through the "wake up" machinery.
2023-04-18 17:41:51 +02:00
Bartek Iwańczuk
774944b250
refactor(core): limit number of boundary crossings between Rust and V8 (#18652)
This commit refactors "deno_core" to do fewer boundary crossings
from Rust to V8. In other words we are now calling V8 from Rust fewer
times.

This is done by merging 3 distinct callbacks into a single one. Instead
of having "op resolve" callback, "next tick" callback and "macrotask
queue" callback, we now have only "Deno.core.eventLoopTick" callback,
which is responsible for doing the same actions previous 3 callbacks.

On each of the event loop we were doing at least 2 boundary crosses
(timers macrotask queue callback and unhandled promise rejection
callback) and up to 4 crosses if there were op response and next tick
callbacks coming from Node.js compatibility layer. Now this is all done
in a single callback.

Closes https://github.com/denoland/deno/issues/18620
2023-04-18 17:41:51 +02:00
David Sherret
1a7991d7a0
refactor(cli): add Emitter struct (#18690)
Removes the functions in the `emit` module and replaces them with an
`Emitter` struct that can have "ctor dependencies" injected rather than
using functions to pass along the dependencies.

This is part of a long term refactor to move more functionality out of
proc state.
2023-04-18 17:41:51 +02:00
Nayeem Rahman
67b1b0f183
refactor(cli): move runTests() and runBenchmarks() to rust (#18563)
Stores the test/bench functions in rust op state during registration.
The functions are wrapped in JS first so that they return a directly
convertible `TestResult`/`BenchResult`. Test steps are still mostly
handled in JS since they are pretty much invoked by the user. Allows
removing a bunch of infrastructure for communicating between JS and
rust. Allows using rust utilities for things like shuffling tests
(`Vec::shuffle`). We can progressively move op and resource sanitization
to rust as well.

Fixes #17122.
Fixes #17312.
2023-04-18 17:41:51 +02:00
David Sherret
2b35ddfc46
chore: bump child_process_test timeouts for slow CI (#18689) 2023-04-18 17:41:51 +02:00
David Sherret
d5356f6687
refactor: upgrade to deno_npm 0.3.0 (#18671)
This allows us to specify the `@types/node` version constraint in the
CLI instead of in deno_npm.
2023-04-18 17:41:51 +02:00
David Sherret
e20bd85b99
ci: don't run wpt tests on debug (#18688) 2023-04-18 17:41:51 +02:00
Bartek Iwańczuk
4fa39349b3
chore: add test duration to WPT (#18680)
To make it easier to debug which tests are slowing us down.

Tests taking more than 5s have duration printed in red,
taking more than 1s in yellow and less than 1s are printed 
without color.
2023-04-18 17:41:51 +02:00
Divy Srivastava
0296b63369
chore: bump fastwebsockets to 0.1.3 (#18684)
Fixes build on aarch64 Linux. See
https://github.com/littledivy/fastwebsockets/issues/2
2023-04-18 17:41:50 +02:00
Bartek Iwańczuk
ef20aedfa8
perf(ops): directly respond for eager ops (#18683)
This commit changes "eager ops" to directly return a response value
instead of calling "opresponse" callback in JavaScript. This saves
one boundary crossing and has a fantastic impact on the "async_ops.js"
benchmark:

```
v1.32.4
$ deno run cli/bench/async_ops.js
time 329 ms rate 3039513
time 322 ms rate 3105590
time 307 ms rate 3257328
time 301 ms rate 3322259
time 303 ms rate 3300330
time 306 ms rate 3267973
time 300 ms rate 3333333
time 301 ms rate 3322259
time 301 ms rate 3322259
time 301 ms rate 3322259
time 302 ms rate 3311258
time 301 ms rate 3322259
time 302 ms rate 3311258
time 302 ms rate 3311258
time 303 ms rate 3300330
```

```
this branch
$ ./target/release/deno run -A cli/bench/async_ops.js
time 257 ms rate 3891050
time 248 ms rate 4032258
time 251 ms rate 3984063
time 246 ms rate 4065040
time 238 ms rate 4201680
time 227 ms rate 4405286
time 228 ms rate 4385964
time 229 ms rate 4366812
time 228 ms rate 4385964
time 226 ms rate 4424778
time 226 ms rate 4424778
time 227 ms rate 4405286
time 228 ms rate 4385964
time 227 ms rate 4405286
time 228 ms rate 4385964
time 227 ms rate 4405286
time 229 ms rate 4366812
time 228 ms rate 4385964
```

Prerequisite for https://github.com/denoland/deno/pull/18652
2023-04-18 17:41:50 +02:00
David Sherret
dc37f414ee
ci: use non-XL runners more (#18675)
![image](https://user-images.githubusercontent.com/1609021/231593822-b9d7c9db-4416-4735-bd89-f28a260607f1.png)

Non-xl runners are faster than the linux xl job, so let's use them for
now

Closes #17103
2023-04-18 17:41:50 +02:00
Geert-Jan Zwiers
b3ff0eaee0
chore(docs): clarify what subcommands do not type-check by default (#18520)
The CLI docs suggested that all deno subcommands no longer type-check by
default. This is only the case for some subcommands, and this PR
clarifies the CLI docs in this regard.
2023-04-18 17:41:50 +02:00
Yiyu Lin
9161e1cacf
refactor(cli,ext,ops): cleanup regex with lazy-regex (#17296)
- bump deps: the newest `lazy-regex` need newer `oncecell` and
`regex`
- reduce `unwrap`
- remove dep `lazy_static`
- make more regex cached

---------

Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-04-18 17:41:50 +02:00
Yiyu Lin
300ced90d8
refactor(serde_v8): move to thiserror, better error output (#18202)
Ref #17318

---------

Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-04-18 17:41:50 +02:00
Elijah
154920a24e
test(runtime): support Windows in resolve_from_cwd_absolute (#18379)
`current_dir().unwrap()` joined with a Path is equivalent to the
implementation in `resolve_from_cwd()`. Manually tested on Ubuntu 22.04
and Windows 11.

Signed-off-by: Elijah Conners <business@elijahpepe.com>
2023-04-18 17:41:50 +02:00
Divy Srivastava
0b023538a0
perf(ext/websocket): make op_server_ws_next_event deferred (#18632)
Avoid attempting to read immediately, wasting time polling the future.
2% throughput improvement on Linux.
2023-04-18 17:41:50 +02:00
Nayeem Rahman
a1845a041b
fix(test): add process sigint handler for --watch (#18678)
Fixes #18676.
2023-04-18 17:41:50 +02:00
David Sherret
babfad7113
fix(npm): eagerly reload package information when version from lockfile not found locally (#18673)
Closes #18624
2023-04-18 17:41:50 +02:00
Bartek Iwańczuk
5d2c778765
refactor(ext/webidl): remove object from 'requiredArguments' (#18674)
This should produce a little less garbage and using an object here
wasn't really required.

---------

Co-authored-by: Aapo Alasuutari <aapo.alasuutari@gmail.com>
Co-authored-by: Leo Kettmeir <crowlkats@toaxl.com>
2023-04-18 17:41:49 +02:00
David Sherret
ae424ee976
refactor: ProcState::build -> ProcState::from_flags (#18672) 2023-04-18 17:41:49 +02:00
David Sherret
e556a3a962
chore: fix windows clippy errors (#18670) 2023-04-18 17:41:49 +02:00
denobot
709cfd6d91
1.32.4 (#18668)
Bumped versions for 1.32.4

Please ensure:
- [x] Target branch is correct
- [x] Crate versions are bumped correctly
- [x] deno_std version is incremented in the code (see
`cli/deno_std.rs`)
- [x] Releases.md is updated correctly

To make edits to this PR:
```shell
git fetch upstream release_1_32.4 && git checkout -b release_1_32.4 upstream/release_1_32.4
```

cc @levex

Co-authored-by: levex <levex@users.noreply.github.com>
2023-04-12 17:17:55 +02:00
Luca Casonato
e9f41bed23 refactor(ext/fs): abstract FS via FileSystem trait (#18599)
This commit abstracts out the specifics of the underlying system calls
FS operations behind a new `FileSystem` and `File` trait in the
`ext/fs` extension.

This allows other embedders to re-use ext/fs, but substituting in a
different FS backend.

This is likely not the final form of these traits. Eventually they will
be entirely `deno_core::Resource` agnostic, and will live in a seperate
crate.

---------

Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-04-12 15:52:08 +02:00
David Sherret
4fab252153 fix(npm): cache bust npm specifiers more aggressively (#18636)
Part 1: #18622 
Part 2: This PR

Closes #16901

---------

Co-authored-by: Luca Casonato <hello@lcas.dev>
2023-04-12 15:52:08 +02:00
Nayeem Rahman
b183737fc9 fix(core): preserve syntax error locations in dynamic imports (#18664)
Fixes #6259.

Adds the location for v8 syntax errors to the message (`message += " at
{location}"`) when rethrowing them for dynamic imports.

Discussing with @bartlomieju on discord I proposed just preserving v8's
error and not reconstructing it, allowing the standard stack trace to
just point to the syntax error instead of the dynamic import. But on
further thought this way has parity with SWC's syntax errors + has the
advantage of showing both the syntax error and dynamic import location.

```ts
// temp.js
await import("./temp2.js");

// temp2.js
function foo() {
  await Promise.resolve();
}

// Before:
// error: Uncaught (in promise) SyntaxError: Unexpected reserved word
// await import("./temp2.js");
// ^
//     at async file:///.../temp.js:1:1

// After:
// error: Uncaught (in promise) SyntaxError: Unexpected reserved word at file:///.../temp2.js:2:3
// await import("./temp2.js");
// ^
//     at async file:///.../temp.js:1:1
```
2023-04-12 15:52:08 +02:00
Satya Rohith
477f49bca2 fix(ext/cache): cache.put overwrites previous call (#18649) 2023-04-12 15:52:08 +02:00
Levente Kurusa
a72396fa84 refactor(node/crypto): port polyfill to Rust for randomInt, randomFill, randomFillSync (#18658)
Pretty much as per the title, I'd welcome some feedback especially
around the
array/buffer handling in the two randomFill functions.
2023-04-12 15:52:08 +02:00
David Sherret
0014ebb91c fix(npm): do not "npm install" when npm specifier happens to match package.json entry (#18660) 2023-04-12 15:52:08 +02:00
Geert-Jan Zwiers
dc1eb76235 chore(cli): clean up unused number value (#18661)
This PR removes an accidentally declared number value.
2023-04-12 15:52:08 +02:00
Luca Casonato
7ced470477 fix(ext/kv): keys must be arrays (#18655)
There was some leftover code from previous iterations, where keys could
be single parts instead of arrays also. This didn't match the types.
2023-04-12 15:52:08 +02:00
David Sherret
766cd5653f chore: .gitignore spring cleaning (#18644) 2023-04-12 15:52:08 +02:00
Andreu Botella
c7c439c54e cleanup(core): Move JsRealm into a separate module (#18641)
This will help make reviews easier for #15760, which moves a number of
methods related to module loading from `JsRuntime` into `JsRealm`.
2023-04-12 15:52:07 +02:00
David Sherret
3491e3e04e ci: do not run build job on draft prs (#18634)
We had a PR land that didn't actually pass the steps because it passed
on a draft pr. This prevents running the "build" job on draft prs.
2023-04-12 15:52:07 +02:00
David Sherret
2ca797bee8 chore: fix linting on main (#18633) 2023-04-12 15:52:07 +02:00
Divy Srivastava
f731dbd981 fix(ext/node): add X509Certificate (#18625)
Towards #18455
2023-04-12 15:52:07 +02:00