summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Mastracci <matthew@mastracci.com>2023-08-23 17:03:05 -0600
committerGitHub <noreply@github.com>2023-08-23 17:03:05 -0600
commitb1ce2e41676ab5bc807a705b072986d9357fece5 (patch)
tree18d9b7796221d6236c9e993602c56c769345b6ce
parentaf1b794e53182dfe19cc675a107138263f08476c (diff)
fix(ext/web): add stream tests to detect v8slice split bug (#20253)
Co-authored-by: Bartek IwaƄczuk <biwanczuk@gmail.com>
-rw-r--r--Cargo.lock26
-rw-r--r--Cargo.toml2
-rw-r--r--cli/cache/cache_db.rs2
-rw-r--r--cli/cache/incremental.rs4
-rw-r--r--cli/lsp/client.rs2
-rw-r--r--cli/lsp/diagnostics.rs6
-rw-r--r--cli/lsp/language_server.rs4
-rw-r--r--cli/lsp/parent_process_checker.rs2
-rw-r--r--cli/lsp/testing/execution.rs4
-rw-r--r--cli/main.rs4
-rw-r--r--cli/npm/resolvers/common.rs2
-rw-r--r--cli/npm/resolvers/local.rs4
-rw-r--r--cli/tests/integration/inspector_tests.rs2
-rw-r--r--cli/tests/integration/run_tests.rs2
-rw-r--r--cli/tests/testdata/run/heapstats.js.out4
-rw-r--r--cli/tests/unit/serve_test.ts42
-rw-r--r--cli/tests/unit/streams_test.ts71
-rw-r--r--cli/tools/bench/mod.rs4
-rw-r--r--cli/tools/fmt.rs2
-rw-r--r--cli/tools/repl/mod.rs2
-rw-r--r--cli/tools/test/mod.rs4
-rw-r--r--cli/tools/upgrade.rs2
-rw-r--r--cli/util/draw_thread.rs2
-rw-r--r--cli/util/fs.rs2
-rw-r--r--ext/cache/sqlite.rs2
-rw-r--r--ext/crypto/decrypt.rs2
-rw-r--r--ext/crypto/encrypt.rs2
-rw-r--r--ext/crypto/generate_key.rs2
-rw-r--r--ext/crypto/lib.rs2
-rw-r--r--ext/fetch/lib.rs2
-rw-r--r--ext/ffi/call.rs2
-rw-r--r--ext/fs/std_fs.rs2
-rw-r--r--ext/http/http_next.rs4
-rw-r--r--ext/http/lib.rs6
-rw-r--r--ext/io/lib.rs2
-rw-r--r--ext/kv/remote.rs4
-rw-r--r--ext/kv/sqlite.rs6
-rw-r--r--ext/net/ops_tls.rs2
-rw-r--r--ext/node/ops/crypto/mod.rs2
-rw-r--r--ext/websocket/lib.rs6
-rw-r--r--runtime/inspector_server.rs4
-rw-r--r--runtime/tokio_util.rs2
-rw-r--r--tools/wpt/expectation.json8
43 files changed, 191 insertions, 72 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 3145ddddb..dca046f02 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1007,13 +1007,14 @@ dependencies = [
[[package]]
name = "deno_core"
-version = "0.202.0"
+version = "0.204.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e9d4f3ad9c2861e0bb8745e1f228aaee04782a9ab6a3c3bbb887e60d7faf087a"
+checksum = "b4ddf51deb9a3bb60a4ab74784414b3f2f89de83a77d6d90a64c6447f7765d68"
dependencies = [
"anyhow",
"bytes",
"deno_ops",
+ "deno_unsync",
"futures",
"indexmap 1.9.3",
"libc",
@@ -1386,9 +1387,9 @@ dependencies = [
[[package]]
name = "deno_ops"
-version = "0.80.0"
+version = "0.82.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "abb6a1ceabfbab1c29b32872e68ec994d393b58ccdf12a835d150199555496f3"
+checksum = "1b660872f9a9737d3424470483dd6730d2129481af5055449a2a37ab5bc2145e"
dependencies = [
"deno-proc-macro-rules",
"lazy-regex",
@@ -1504,6 +1505,15 @@ dependencies = [
]
[[package]]
+name = "deno_unsync"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac0984205f25e71ddd1be603d76e70255953c12ff864707359ab195d26dfc7b3"
+dependencies = [
+ "tokio",
+]
+
+[[package]]
name = "deno_url"
version = "0.115.0"
dependencies = [
@@ -4488,9 +4498,9 @@ dependencies = [
[[package]]
name = "serde_v8"
-version = "0.113.0"
+version = "0.115.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fa7b3ecd650d790ff8781402d0704d35a2f51c3bec87fe92d43eea6d371f05d"
+checksum = "36f6cc041512391aabdae4dd11d51e370824ea35bfe896fb2585b6792e28c9bf"
dependencies = [
"bytes",
"derive_more",
@@ -5914,9 +5924,9 @@ dependencies = [
[[package]]
name = "v8"
-version = "0.75.0"
+version = "0.74.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9be435abe79a8427b0969f1ac0a3c0e91644235f68a3de5da4a27ec69666985"
+checksum = "2eedac634b8dd39b889c5b62349cbc55913780226239166435c5cf66771792ea"
dependencies = [
"bitflags 1.3.2",
"fslock",
diff --git a/Cargo.toml b/Cargo.toml
index 761794d65..342d180d8 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -40,7 +40,7 @@ repository = "https://github.com/denoland/deno"
[workspace.dependencies]
deno_ast = { version = "0.28.0", features = ["transpiling"] }
-deno_core = "0.202.0"
+deno_core = "0.204.0"
deno_runtime = { version = "0.123.0", path = "./runtime" }
napi_sym = { version = "0.45.0", path = "./cli/napi/sym" }
diff --git a/cli/cache/cache_db.rs b/cli/cache/cache_db.rs
index cdab27f4c..9b591f58a 100644
--- a/cli/cache/cache_db.rs
+++ b/cli/cache/cache_db.rs
@@ -3,7 +3,7 @@
use deno_core::error::AnyError;
use deno_core::parking_lot::Mutex;
use deno_core::parking_lot::MutexGuard;
-use deno_core::task::spawn_blocking;
+use deno_core::unsync::spawn_blocking;
use deno_runtime::deno_webstorage::rusqlite;
use deno_runtime::deno_webstorage::rusqlite::Connection;
use deno_runtime::deno_webstorage::rusqlite::OptionalExtension;
diff --git a/cli/cache/incremental.rs b/cli/cache/incremental.rs
index 04ac4243b..65490a7cd 100644
--- a/cli/cache/incremental.rs
+++ b/cli/cache/incremental.rs
@@ -7,8 +7,8 @@ use std::path::PathBuf;
use deno_core::error::AnyError;
use deno_core::parking_lot::Mutex;
use deno_core::serde_json;
-use deno_core::task::spawn;
-use deno_core::task::JoinHandle;
+use deno_core::unsync::spawn;
+use deno_core::unsync::JoinHandle;
use deno_runtime::deno_webstorage::rusqlite::params;
use serde::Serialize;
diff --git a/cli/lsp/client.rs b/cli/lsp/client.rs
index 13347a772..45fc88376 100644
--- a/cli/lsp/client.rs
+++ b/cli/lsp/client.rs
@@ -8,7 +8,7 @@ use deno_core::anyhow::bail;
use deno_core::error::AnyError;
use deno_core::serde_json;
use deno_core::serde_json::Value;
-use deno_core::task::spawn;
+use deno_core::unsync::spawn;
use tower_lsp::lsp_types as lsp;
use tower_lsp::lsp_types::ConfigurationItem;
diff --git a/cli/lsp/diagnostics.rs b/cli/lsp/diagnostics.rs
index 817d2fbc4..dea43ad87 100644
--- a/cli/lsp/diagnostics.rs
+++ b/cli/lsp/diagnostics.rs
@@ -28,9 +28,9 @@ use deno_core::resolve_url;
use deno_core::serde::Deserialize;
use deno_core::serde_json;
use deno_core::serde_json::json;
-use deno_core::task::spawn;
-use deno_core::task::spawn_blocking;
-use deno_core::task::JoinHandle;
+use deno_core::unsync::spawn;
+use deno_core::unsync::spawn_blocking;
+use deno_core::unsync::JoinHandle;
use deno_core::ModuleSpecifier;
use deno_graph::Resolution;
use deno_graph::ResolutionError;
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs
index f532430c8..c29817919 100644
--- a/cli/lsp/language_server.rs
+++ b/cli/lsp/language_server.rs
@@ -8,7 +8,7 @@ use deno_core::resolve_url;
use deno_core::serde_json;
use deno_core::serde_json::json;
use deno_core::serde_json::Value;
-use deno_core::task::spawn;
+use deno_core::unsync::spawn;
use deno_core::ModuleSpecifier;
use deno_graph::GraphKind;
use deno_lockfile::Lockfile;
@@ -1705,7 +1705,7 @@ impl Inner {
}
// spawn a blocking task to allow doing other work while this is occurring
- let format_result = deno_core::task::spawn_blocking({
+ let format_result = deno_core::unsync::spawn_blocking({
let fmt_options = self.fmt_options.options.clone();
let document = document.clone();
move || {
diff --git a/cli/lsp/parent_process_checker.rs b/cli/lsp/parent_process_checker.rs
index f83543c04..07bfbb648 100644
--- a/cli/lsp/parent_process_checker.rs
+++ b/cli/lsp/parent_process_checker.rs
@@ -1,6 +1,6 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
-use deno_core::task::spawn;
+use deno_core::unsync::spawn;
use tokio::time::sleep;
use tokio::time::Duration;
diff --git a/cli/lsp/testing/execution.rs b/cli/lsp/testing/execution.rs
index 6a5474ea7..6474d7354 100644
--- a/cli/lsp/testing/execution.rs
+++ b/cli/lsp/testing/execution.rs
@@ -24,8 +24,8 @@ use deno_core::futures::stream;
use deno_core::futures::StreamExt;
use deno_core::parking_lot::Mutex;
use deno_core::parking_lot::RwLock;
-use deno_core::task::spawn;
-use deno_core::task::spawn_blocking;
+use deno_core::unsync::spawn;
+use deno_core::unsync::spawn_blocking;
use deno_core::ModuleSpecifier;
use deno_runtime::permissions::Permissions;
use deno_runtime::tokio_util::create_and_run_current_thread;
diff --git a/cli/main.rs b/cli/main.rs
index cdbd878d6..9044a14da 100644
--- a/cli/main.rs
+++ b/cli/main.rs
@@ -36,7 +36,7 @@ use deno_core::anyhow::Context;
use deno_core::error::AnyError;
use deno_core::error::JsError;
use deno_core::futures::FutureExt;
-use deno_core::task::JoinHandle;
+use deno_core::unsync::JoinHandle;
use deno_runtime::colors;
use deno_runtime::fmt_errors::format_js_error;
use deno_runtime::tokio_util::create_and_run_current_thread_with_maybe_metrics;
@@ -76,7 +76,7 @@ impl SubcommandOutput for Result<(), std::io::Error> {
fn spawn_subcommand<F: Future<Output = T> + 'static, T: SubcommandOutput>(
f: F,
) -> JoinHandle<Result<i32, AnyError>> {
- deno_core::task::spawn(f.map(|r| r.output()))
+ deno_core::unsync::spawn(f.map(|r| r.output()))
}
async fn run_subcommand(flags: Flags) -> Result<i32, AnyError> {
diff --git a/cli/npm/resolvers/common.rs b/cli/npm/resolvers/common.rs
index a705052df..fec96738e 100644
--- a/cli/npm/resolvers/common.rs
+++ b/cli/npm/resolvers/common.rs
@@ -11,7 +11,7 @@ use async_trait::async_trait;
use deno_ast::ModuleSpecifier;
use deno_core::error::AnyError;
use deno_core::futures;
-use deno_core::task::spawn;
+use deno_core::unsync::spawn;
use deno_core::url::Url;
use deno_npm::NpmPackageCacheFolderId;
use deno_npm::NpmPackageId;
diff --git a/cli/npm/resolvers/local.rs b/cli/npm/resolvers/local.rs
index 71b91c452..74b797309 100644
--- a/cli/npm/resolvers/local.rs
+++ b/cli/npm/resolvers/local.rs
@@ -24,8 +24,8 @@ use deno_ast::ModuleSpecifier;
use deno_core::anyhow::bail;
use deno_core::anyhow::Context;
use deno_core::error::AnyError;
-use deno_core::task::spawn;
-use deno_core::task::JoinHandle;
+use deno_core::unsync::spawn;
+use deno_core::unsync::JoinHandle;
use deno_core::url::Url;
use deno_npm::resolution::NpmResolutionSnapshot;
use deno_npm::NpmPackageCacheFolderId;
diff --git a/cli/tests/integration/inspector_tests.rs b/cli/tests/integration/inspector_tests.rs
index b4b1f1678..526efbdf2 100644
--- a/cli/tests/integration/inspector_tests.rs
+++ b/cli/tests/integration/inspector_tests.rs
@@ -34,7 +34,7 @@ where
Fut::Output: Send + 'static,
{
fn execute(&self, fut: Fut) {
- deno_core::task::spawn(fut);
+ deno_core::unsync::spawn(fut);
}
}
diff --git a/cli/tests/integration/run_tests.rs b/cli/tests/integration/run_tests.rs
index 0c39c2b72..3a385f7cd 100644
--- a/cli/tests/integration/run_tests.rs
+++ b/cli/tests/integration/run_tests.rs
@@ -4220,7 +4220,7 @@ where
Fut::Output: Send + 'static,
{
fn execute(&self, fut: Fut) {
- deno_core::task::spawn(fut);
+ deno_core::unsync::spawn(fut);
}
}
diff --git a/cli/tests/testdata/run/heapstats.js.out b/cli/tests/testdata/run/heapstats.js.out
index b75a755f8..954266333 100644
--- a/cli/tests/testdata/run/heapstats.js.out
+++ b/cli/tests/testdata/run/heapstats.js.out
@@ -1,2 +1,2 @@
-Allocated: 4MB
-Freed: -4MB
+Allocated: 8MB
+Freed: -8MB
diff --git a/cli/tests/unit/serve_test.ts b/cli/tests/unit/serve_test.ts
index f412a9071..05affc4f8 100644
--- a/cli/tests/unit/serve_test.ts
+++ b/cli/tests/unit/serve_test.ts
@@ -1483,6 +1483,48 @@ Deno.test(
},
);
+// Make sure that the chunks of a large response aren't repeated or corrupted in some other way by
+// scatterning sentinels throughout.
+// https://github.com/denoland/fresh/issues/1699
+Deno.test(
+ { permissions: { net: true } },
+ async function httpLargeReadableStreamChunk() {
+ const ac = new AbortController();
+ const server = Deno.serve({
+ handler() {
+ return new Response(
+ new ReadableStream({
+ start(controller) {
+ const buffer = new Uint8Array(1024 * 1024);
+ // Mark the buffer with sentinels
+ for (let i = 0; i < 256; i++) {
+ buffer[i * 4096] = i;
+ }
+ controller.enqueue(buffer);
+ controller.close();
+ },
+ }),
+ );
+ },
+ port: servePort,
+ signal: ac.signal,
+ });
+ const response = await fetch(`http://localhost:${servePort}/`);
+ const body = await response.arrayBuffer();
+ assertEquals(1024 * 1024, body.byteLength);
+ const buffer = new Uint8Array(body);
+ for (let i = 0; i < 256; i++) {
+ assertEquals(
+ i,
+ buffer[i * 4096],
+ `sentinel mismatch at index ${i * 4096}`,
+ );
+ }
+ ac.abort();
+ await server.finished;
+ },
+);
+
Deno.test(
{ permissions: { net: true } },
async function httpRequestLatin1Headers() {
diff --git a/cli/tests/unit/streams_test.ts b/cli/tests/unit/streams_test.ts
index c62c48469..4ecea39da 100644
--- a/cli/tests/unit/streams_test.ts
+++ b/cli/tests/unit/streams_test.ts
@@ -77,6 +77,22 @@ function emptyStream(onPull: boolean) {
}).pipeThrough(new TextEncoderStream());
}
+function largePacketStream(packetSize: number, count: number) {
+ return new ReadableStream({
+ pull(controller) {
+ if (count-- > 0) {
+ const buffer = new Uint8Array(packetSize);
+ for (let i = 0; i < 256; i++) {
+ buffer[i * (packetSize / 256)] = i;
+ }
+ controller.enqueue(buffer);
+ } else {
+ controller.close();
+ }
+ },
+ });
+}
+
// Include an empty chunk
function emptyChunkStream() {
return new ReadableStream({
@@ -260,6 +276,61 @@ Deno.test(async function readableStreamWithEmptyChunkOneByOne() {
core.ops.op_close(rid);
});
+// Ensure that we correctly transmit all the sub-chunks of the larger chunks.
+Deno.test(async function readableStreamReadSmallerChunks() {
+ const packetSize = 16 * 1024;
+ const rid = resourceForReadableStream(largePacketStream(packetSize, 1));
+ const buffer = new Uint8Array(packetSize);
+ for (let i = 0; i < packetSize / 1024; i++) {
+ await core.ops.op_read(rid, buffer.subarray(i * 1024, i * 1024 + 1024));
+ }
+ for (let i = 0; i < 256; i++) {
+ assertEquals(
+ i,
+ buffer[i * (packetSize / 256)],
+ `at index ${i * (packetSize / 256)}`,
+ );
+ }
+ core.ops.op_close(rid);
+});
+
+Deno.test(async function readableStreamLargePackets() {
+ const packetSize = 128 * 1024;
+ const rid = resourceForReadableStream(largePacketStream(packetSize, 1024));
+ for (let i = 0; i < 1024; i++) {
+ const buffer = new Uint8Array(packetSize);
+ assertEquals(packetSize, await core.ops.op_read(rid, buffer));
+ for (let i = 0; i < 256; i++) {
+ assertEquals(
+ i,
+ buffer[i * (packetSize / 256)],
+ `at index ${i * (packetSize / 256)}`,
+ );
+ }
+ }
+ assertEquals(0, await core.ops.op_read(rid, new Uint8Array(1)));
+ core.ops.op_close(rid);
+});
+
+Deno.test(async function readableStreamVeryLargePackets() {
+ // 1024 packets of 1MB
+ const rid = resourceForReadableStream(largePacketStream(1024 * 1024, 1024));
+ let total = 0;
+ // Read 96kB up to 12,288 times (96kB is not an even multiple of the 1MB packet size to test this)
+ const readCounts: Record<number, number> = {};
+ for (let i = 0; i < 12 * 1024; i++) {
+ const nread = await core.ops.op_read(rid, new Uint8Array(96 * 1024));
+ total += nread;
+ readCounts[nread] = (readCounts[nread] || 0) + 1;
+ if (nread == 0) {
+ break;
+ }
+ }
+ assertEquals({ 0: 1, 65536: 1024, 98304: 10 * 1024 }, readCounts);
+ assertEquals(total, 1024 * 1024 * 1024);
+ core.ops.op_close(rid);
+});
+
for (const count of [0, 1, 2, 3]) {
for (const delay of [0, 1, 10]) {
// Creating a stream that errors in start will throw
diff --git a/cli/tools/bench/mod.rs b/cli/tools/bench/mod.rs
index 34ce46bc3..247422f71 100644
--- a/cli/tools/bench/mod.rs
+++ b/cli/tools/bench/mod.rs
@@ -27,8 +27,8 @@ use deno_core::futures::stream;
use deno_core::futures::StreamExt;
use deno_core::located_script_name;
use deno_core::serde_v8;
-use deno_core::task::spawn;
-use deno_core::task::spawn_blocking;
+use deno_core::unsync::spawn;
+use deno_core::unsync::spawn_blocking;
use deno_core::v8;
use deno_core::ModuleSpecifier;
use deno_runtime::permissions::Permissions;
diff --git a/cli/tools/fmt.rs b/cli/tools/fmt.rs
index fc1df3281..5ab82795c 100644
--- a/cli/tools/fmt.rs
+++ b/cli/tools/fmt.rs
@@ -29,7 +29,7 @@ use deno_core::error::generic_error;
use deno_core::error::AnyError;
use deno_core::futures;
use deno_core::parking_lot::Mutex;
-use deno_core::task::spawn_blocking;
+use deno_core::unsync::spawn_blocking;
use log::debug;
use log::info;
use log::warn;
diff --git a/cli/tools/repl/mod.rs b/cli/tools/repl/mod.rs
index 34acb8a4e..05c822e11 100644
--- a/cli/tools/repl/mod.rs
+++ b/cli/tools/repl/mod.rs
@@ -8,7 +8,7 @@ use crate::factory::CliFactory;
use crate::file_fetcher::FileFetcher;
use deno_core::error::AnyError;
use deno_core::futures::StreamExt;
-use deno_core::task::spawn_blocking;
+use deno_core::unsync::spawn_blocking;
use deno_runtime::permissions::Permissions;
use deno_runtime::permissions::PermissionsContainer;
use rustyline::error::ReadlineError;
diff --git a/cli/tools/test/mod.rs b/cli/tools/test/mod.rs
index 101817ac9..365b83268 100644
--- a/cli/tools/test/mod.rs
+++ b/cli/tools/test/mod.rs
@@ -40,8 +40,8 @@ use deno_core::futures::StreamExt;
use deno_core::located_script_name;
use deno_core::parking_lot::Mutex;
use deno_core::serde_v8;
-use deno_core::task::spawn;
-use deno_core::task::spawn_blocking;
+use deno_core::unsync::spawn;
+use deno_core::unsync::spawn_blocking;
use deno_core::url::Url;
use deno_core::v8;
use deno_core::ModuleSpecifier;
diff --git a/cli/tools/upgrade.rs b/cli/tools/upgrade.rs
index f37ee8455..bef4538b3 100644
--- a/cli/tools/upgrade.rs
+++ b/cli/tools/upgrade.rs
@@ -17,7 +17,7 @@ use deno_core::anyhow::Context;
use deno_core::error::AnyError;
use deno_core::futures::future::BoxFuture;
use deno_core::futures::FutureExt;
-use deno_core::task::spawn;
+use deno_core::unsync::spawn;
use deno_semver::Version;
use once_cell::sync::Lazy;
use std::borrow::Cow;
diff --git a/cli/util/draw_thread.rs b/cli/util/draw_thread.rs
index 2fd81a78a..832c7f74b 100644
--- a/cli/util/draw_thread.rs
+++ b/cli/util/draw_thread.rs
@@ -2,7 +2,7 @@
use console_static_text::ConsoleStaticText;
use deno_core::parking_lot::Mutex;
-use deno_core::task::spawn_blocking;
+use deno_core::unsync::spawn_blocking;
use deno_runtime::ops::tty::ConsoleSize;
use once_cell::sync::Lazy;
use std::sync::Arc;
diff --git a/cli/util/fs.rs b/cli/util/fs.rs
index ff5ed8553..2ccd70b6d 100644
--- a/cli/util/fs.rs
+++ b/cli/util/fs.rs
@@ -3,7 +3,7 @@
use deno_core::anyhow::Context;
use deno_core::error::AnyError;
pub use deno_core::normalize_path;
-use deno_core::task::spawn_blocking;
+use deno_core::unsync::spawn_blocking;
use deno_core::ModuleSpecifier;
use deno_runtime::deno_crypto::rand;
use deno_runtime::deno_node::PathClean;
diff --git a/ext/cache/sqlite.rs b/ext/cache/sqlite.rs
index 8589d61fd..883f8cc19 100644
--- a/ext/cache/sqlite.rs
+++ b/ext/cache/sqlite.rs
@@ -10,7 +10,7 @@ use std::time::UNIX_EPOCH;
use async_trait::async_trait;
use deno_core::error::AnyError;
use deno_core::parking_lot::Mutex;
-use deno_core::task::spawn_blocking;
+use deno_core::unsync::spawn_blocking;
use deno_core::AsyncRefCell;
use deno_core::AsyncResult;
use deno_core::ByteString;
diff --git a/ext/crypto/decrypt.rs b/ext/crypto/decrypt.rs
index 59679614f..07b2e3e67 100644
--- a/ext/crypto/decrypt.rs
+++ b/ext/crypto/decrypt.rs
@@ -20,7 +20,7 @@ use deno_core::error::custom_error;
use deno_core::error::type_error;
use deno_core::error::AnyError;
use deno_core::op;
-use deno_core::task::spawn_blocking;
+use deno_core::unsync::spawn_blocking;
use deno_core::JsBuffer;
use deno_core::ToJsBuffer;
use rsa::pkcs1::DecodeRsaPrivateKey;
diff --git a/ext/crypto/encrypt.rs b/ext/crypto/encrypt.rs
index 0dc300538..b4a38edde 100644
--- a/ext/crypto/encrypt.rs
+++ b/ext/crypto/encrypt.rs
@@ -19,7 +19,7 @@ use ctr::Ctr64BE;
use deno_core::error::type_error;
use deno_core::error::AnyError;
use deno_core::op;
-use deno_core::task::spawn_blocking;
+use deno_core::unsync::spawn_blocking;
use deno_core::JsBuffer;
use deno_core::ToJsBuffer;
use rand::rngs::OsRng;
diff --git a/ext/crypto/generate_key.rs b/ext/crypto/generate_key.rs
index 9e2d14ea7..6aae2a9b3 100644
--- a/ext/crypto/generate_key.rs
+++ b/ext/crypto/generate_key.rs
@@ -2,7 +2,7 @@
use deno_core::error::AnyError;
use deno_core::op;
-use deno_core::task::spawn_blocking;
+use deno_core::unsync::spawn_blocking;
use deno_core::ToJsBuffer;
use elliptic_curve::rand_core::OsRng;
use num_traits::FromPrimitive;
diff --git a/ext/crypto/lib.rs b/ext/crypto/lib.rs
index 1765697c6..a0a3a2a25 100644
--- a/ext/crypto/lib.rs
+++ b/ext/crypto/lib.rs
@@ -11,7 +11,7 @@ use deno_core::error::AnyError;
use deno_core::op;
use deno_core::ToJsBuffer;
-use deno_core::task::spawn_blocking;
+use deno_core::unsync::spawn_blocking;
use deno_core::JsBuffer;
use deno_core::OpState;
use serde::Deserialize;
diff --git a/ext/fetch/lib.rs b/ext/fetch/lib.rs
index dd83f19ee..4485a3dbe 100644
--- a/ext/fetch/lib.rs
+++ b/ext/fetch/lib.rs
@@ -24,7 +24,7 @@ use deno_core::op;
use deno_core::BufView;
use deno_core::WriteOutcome;
-use deno_core::task::spawn;
+use deno_core::unsync::spawn;
use deno_core::url::Url;
use deno_core::AsyncRefCell;
use deno_core::AsyncResult;
diff --git a/ext/ffi/call.rs b/ext/ffi/call.rs
index 82f8dd822..4f9bbe3bb 100644
--- a/ext/ffi/call.rs
+++ b/ext/ffi/call.rs
@@ -15,7 +15,7 @@ use deno_core::op;
use deno_core::serde_json::Value;
use deno_core::serde_v8;
use deno_core::serde_v8::ExternalPointer;
-use deno_core::task::spawn_blocking;
+use deno_core::unsync::spawn_blocking;
use deno_core::v8;
use deno_core::OpState;
use deno_core::ResourceId;
diff --git a/ext/fs/std_fs.rs b/ext/fs/std_fs.rs
index b2923abb1..9aa46613c 100644
--- a/ext/fs/std_fs.rs
+++ b/ext/fs/std_fs.rs
@@ -9,7 +9,7 @@ use std::path::Path;
use std::path::PathBuf;
use std::rc::Rc;
-use deno_core::task::spawn_blocking;
+use deno_core::unsync::spawn_blocking;
use deno_io::fs::File;
use deno_io::fs::FsResult;
use deno_io::fs::FsStat;
diff --git a/ext/http/http_next.rs b/ext/http/http_next.rs
index 17e9befe2..4d5c63776 100644
--- a/ext/http/http_next.rs
+++ b/ext/http/http_next.rs
@@ -25,8 +25,8 @@ use deno_core::op;
use deno_core::op2;
use deno_core::serde_v8;
use deno_core::serde_v8::from_v8;
-use deno_core::task::spawn;
-use deno_core::task::JoinHandle;
+use deno_core::unsync::spawn;
+use deno_core::unsync::JoinHandle;
use deno_core::v8;
use deno_core::AsyncRefCell;
use deno_core::AsyncResult;
diff --git a/ext/http/lib.rs b/ext/http/lib.rs
index e0c5c89d0..93ea0895e 100644
--- a/ext/http/lib.rs
+++ b/ext/http/lib.rs
@@ -21,7 +21,7 @@ use deno_core::futures::FutureExt;
use deno_core::futures::StreamExt;
use deno_core::futures::TryFutureExt;
use deno_core::op;
-use deno_core::task::spawn;
+use deno_core::unsync::spawn;
use deno_core::AsyncRefCell;
use deno_core::AsyncResult;
use deno_core::BufView;
@@ -1021,7 +1021,7 @@ where
Fut::Output: 'static,
{
fn execute(&self, fut: Fut) {
- deno_core::task::spawn(fut);
+ deno_core::unsync::spawn(fut);
}
}
@@ -1031,7 +1031,7 @@ where
Fut::Output: 'static,
{
fn execute(&self, fut: Fut) {
- deno_core::task::spawn(fut);
+ deno_core::unsync::spawn(fut);
}
}
diff --git a/ext/io/lib.rs b/ext/io/lib.rs
index 090622231..3d6ac0f37 100644
--- a/ext/io/lib.rs
+++ b/ext/io/lib.rs
@@ -2,7 +2,7 @@
use deno_core::error::AnyError;
use deno_core::op;
-use deno_core::task::spawn_blocking;
+use deno_core::unsync::spawn_blocking;
use deno_core::AsyncMutFuture;
use deno_core::AsyncRefCell;
use deno_core::AsyncResult;
diff --git a/ext/kv/remote.rs b/ext/kv/remote.rs
index 47528d15f..448a87b0d 100644
--- a/ext/kv/remote.rs
+++ b/ext/kv/remote.rs
@@ -24,7 +24,7 @@ use chrono::Utc;
use deno_core::error::type_error;
use deno_core::error::AnyError;
use deno_core::futures::TryFutureExt;
-use deno_core::task::JoinHandle;
+use deno_core::unsync::JoinHandle;
use deno_core::OpState;
use prost::Message;
use rand::Rng;
@@ -357,7 +357,7 @@ impl MetadataRefresher {
pub fn new(url: String, access_token: String) -> Self {
let (tx, rx) = watch::channel(MetadataState::Pending);
let handle =
- deno_core::task::spawn(metadata_refresh_task(url, access_token, tx));
+ deno_core::unsync::spawn(metadata_refresh_task(url, access_token, tx));
Self {
handle,
metadata_rx: rx,
diff --git a/ext/kv/sqlite.rs b/ext/kv/sqlite.rs
index bf2688920..f67154cb4 100644
--- a/ext/kv/sqlite.rs
+++ b/ext/kv/sqlite.rs
@@ -19,8 +19,8 @@ use deno_core::error::type_error;
use deno_core::error::AnyError;
use deno_core::futures;
use deno_core::futures::FutureExt;
-use deno_core::task::spawn;
-use deno_core::task::spawn_blocking;
+use deno_core::unsync::spawn;
+use deno_core::unsync::spawn_blocking;
use deno_core::AsyncRefCell;
use deno_core::OpState;
use rand::Rng;
@@ -285,7 +285,7 @@ impl<P: SqliteDbHandlerPermissions> DatabaseHandler for SqliteDbHandler<P> {
pub struct SqliteDb {
conn: ProtectedConn,
queue: OnceCell<SqliteQueue>,
- expiration_watcher: deno_core::task::JoinHandle<()>,
+ expiration_watcher: deno_core::unsync::JoinHandle<()>,
}
impl Drop for SqliteDb {
diff --git a/ext/net/ops_tls.rs b/ext/net/ops_tls.rs
index 7b1cb4e0a..c2ca3d358 100644
--- a/ext/net/ops_tls.rs
+++ b/ext/net/ops_tls.rs
@@ -26,7 +26,7 @@ use deno_core::futures::task::Waker;
use deno_core::op;
use deno_core::parking_lot::Mutex;
-use deno_core::task::spawn;
+use deno_core::unsync::spawn;
use deno_core::AsyncRefCell;
use deno_core::AsyncResult;
use deno_core::ByteString;
diff --git a/ext/node/ops/crypto/mod.rs b/ext/node/ops/crypto/mod.rs
index 1155a4d15..c0b4f55f8 100644
--- a/ext/node/ops/crypto/mod.rs
+++ b/ext/node/ops/crypto/mod.rs
@@ -4,7 +4,7 @@ use deno_core::error::type_error;
use deno_core::error::AnyError;
use deno_core::op;
use deno_core::serde_v8;
-use deno_core::task::spawn_blocking;
+use deno_core::unsync::spawn_blocking;
use deno_core::JsBuffer;
use deno_core::OpState;
use deno_core::ResourceId;
diff --git a/ext/websocket/lib.rs b/ext/websocket/lib.rs
index 81f358dd2..bdca1433b 100644
--- a/ext/websocket/lib.rs
+++ b/ext/websocket/lib.rs
@@ -412,7 +412,7 @@ pub fn op_ws_send_binary(state: &mut OpState, rid: ResourceId, data: &[u8]) {
let len = data.len();
resource.buffered.set(resource.buffered.get() + len);
let lock = resource.reserve_lock();
- deno_core::task::spawn(async move {
+ deno_core::unsync::spawn(async move {
if let Err(err) = resource
.write_frame(lock, Frame::new(true, OpCode::Binary, None, data.into()))
.await
@@ -430,7 +430,7 @@ pub fn op_ws_send_text(state: &mut OpState, rid: ResourceId, data: String) {
let len = data.len();
resource.buffered.set(resource.buffered.get() + len);
let lock = resource.reserve_lock();
- deno_core::task::spawn(async move {
+ deno_core::unsync::spawn(async move {
if let Err(err) = resource
.write_frame(
lock,
@@ -719,6 +719,6 @@ where
Fut::Output: 'static,
{
fn execute(&self, fut: Fut) {
- deno_core::task::spawn(fut);
+ deno_core::unsync::spawn(fut);
}
}
diff --git a/runtime/inspector_server.rs b/runtime/inspector_server.rs
index 70dda9832..1fb840790 100644
--- a/runtime/inspector_server.rs
+++ b/runtime/inspector_server.rs
@@ -15,7 +15,7 @@ use deno_core::futures::task::Poll;
use deno_core::serde_json;
use deno_core::serde_json::json;
use deno_core::serde_json::Value;
-use deno_core::task::spawn;
+use deno_core::unsync::spawn;
use deno_core::url::Url;
use deno_core::InspectorMsg;
use deno_core::InspectorSessionProxy;
@@ -111,7 +111,7 @@ where
Fut::Output: 'static,
{
fn execute(&self, fut: Fut) {
- deno_core::task::spawn(fut);
+ deno_core::unsync::spawn(fut);
}
}
diff --git a/runtime/tokio_util.rs b/runtime/tokio_util.rs
index 4dbaabf44..4ae4f2c38 100644
--- a/runtime/tokio_util.rs
+++ b/runtime/tokio_util.rs
@@ -2,7 +2,7 @@
use std::fmt::Debug;
use std::str::FromStr;
-use deno_core::task::MaskFutureAsSend;
+use deno_core::unsync::MaskFutureAsSend;
#[cfg(tokio_unstable)]
use tokio_metrics::RuntimeMonitor;
diff --git a/tools/wpt/expectation.json b/tools/wpt/expectation.json
index 865a2d5f4..d07aed105 100644
--- a/tools/wpt/expectation.json
+++ b/tools/wpt/expectation.json
@@ -2807,12 +2807,8 @@
},
"class-string-interface.any.html": true,
"class-string-interface.any.worker.html": true,
- "class-string-iterator-prototype-object.any.html": [
- "Object.prototype.toString applied after deleting @@toStringTag"
- ],
- "class-string-iterator-prototype-object.any.worker.html": [
- "Object.prototype.toString applied after deleting @@toStringTag"
- ],
+ "class-string-iterator-prototype-object.any.html": true,
+ "class-string-iterator-prototype-object.any.worker.html": true,
"class-string-named-properties-object.window.html": false,
"global-immutable-prototype.any.html": [
"Setting to a different prototype"