diff options
author | Matt Mastracci <matthew@mastracci.com> | 2023-08-23 17:03:05 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-23 17:03:05 -0600 |
commit | b1ce2e41676ab5bc807a705b072986d9357fece5 (patch) | |
tree | 18d9b7796221d6236c9e993602c56c769345b6ce | |
parent | af1b794e53182dfe19cc675a107138263f08476c (diff) |
fix(ext/web): add stream tests to detect v8slice split bug (#20253)
Co-authored-by: Bartek IwaĆczuk <biwanczuk@gmail.com>
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" |