From f5766c467975023dda9df3c23508744b79bfab7f Mon Sep 17 00:00:00 2001
From: pjh456 <147148383@qq.com>
Date: Fri, 9 Oct 2026 08:03:35 +0000
Subject: [PATCH] =?UTF-8?q?feat:=20Worker=20=E7=BC=96=E8=AF=91=E4=B8=8E?=
=?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=A4=B1=E8=B4=A5=E7=BB=8F=20onerror=20?=
=?UTF-8?q?=E4=B8=8A=E6=8A=A5=E5=B9=B6=E6=8E=A5=E7=BA=BF=20onmessageerror?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Cargo.lock | 38 +--
Cargo.toml | 2 +-
crates/oxide_vm/src/worker/bindings.rs | 24 +-
crates/oxide_vm/src/worker/mod.rs | 348 ++++++++++++++++++++-----
4 files changed, 314 insertions(+), 98 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index a2e1886a..55f7d293 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1160,7 +1160,7 @@ dependencies = [
[[package]]
name = "oxide_builtins"
-version = "0.8.93"
+version = "0.8.94"
dependencies = [
"chrono",
"fast-float",
@@ -1185,7 +1185,7 @@ dependencies = [
[[package]]
name = "oxide_bytecode"
-version = "0.8.93"
+version = "0.8.94"
dependencies = [
"num-bigint",
"oxide_log",
@@ -1193,7 +1193,7 @@ dependencies = [
[[package]]
name = "oxide_cfg"
-version = "0.8.93"
+version = "0.8.94"
dependencies = [
"oxide_bytecode",
"oxide_emit",
@@ -1204,7 +1204,7 @@ dependencies = [
[[package]]
name = "oxide_cli"
-version = "0.8.93"
+version = "0.8.94"
dependencies = [
"ansi_term",
"bumpalo",
@@ -1226,7 +1226,7 @@ dependencies = [
[[package]]
name = "oxide_code_cache"
-version = "0.8.93"
+version = "0.8.94"
dependencies = [
"lru",
"oxide_bytecode",
@@ -1235,7 +1235,7 @@ dependencies = [
[[package]]
name = "oxide_compiler"
-version = "0.8.93"
+version = "0.8.94"
dependencies = [
"oxide_bytecode",
"oxide_cfg",
@@ -1255,7 +1255,7 @@ dependencies = [
[[package]]
name = "oxide_dce"
-version = "0.8.93"
+version = "0.8.94"
dependencies = [
"oxide_bytecode",
"oxide_cfg",
@@ -1269,7 +1269,7 @@ dependencies = [
[[package]]
name = "oxide_emit"
-version = "0.8.93"
+version = "0.8.94"
dependencies = [
"num-bigint",
"oxc_allocator",
@@ -1284,7 +1284,7 @@ dependencies = [
[[package]]
name = "oxide_engine"
-version = "0.8.93"
+version = "0.8.94"
dependencies = [
"oxide_bytecode",
"oxide_compiler",
@@ -1296,7 +1296,7 @@ dependencies = [
[[package]]
name = "oxide_ir"
-version = "0.8.93"
+version = "0.8.94"
dependencies = [
"oxide_bytecode",
"oxide_log",
@@ -1305,7 +1305,7 @@ dependencies = [
[[package]]
name = "oxide_kernel"
-version = "0.8.93"
+version = "0.8.94"
dependencies = [
"bumpalo",
"dashmap",
@@ -1319,7 +1319,7 @@ dependencies = [
[[package]]
name = "oxide_liveness"
-version = "0.8.93"
+version = "0.8.94"
dependencies = [
"oxide_bytecode",
"oxide_cfg",
@@ -1331,7 +1331,7 @@ dependencies = [
[[package]]
name = "oxide_log"
-version = "0.8.93"
+version = "0.8.94"
dependencies = [
"tracing",
"tracing-appender",
@@ -1340,7 +1340,7 @@ dependencies = [
[[package]]
name = "oxide_parser"
-version = "0.8.93"
+version = "0.8.94"
dependencies = [
"oxc_allocator",
"oxc_ast",
@@ -1355,7 +1355,7 @@ dependencies = [
[[package]]
name = "oxide_regalloc"
-version = "0.8.93"
+version = "0.8.94"
dependencies = [
"oxide_bytecode",
"oxide_cfg",
@@ -1371,7 +1371,7 @@ dependencies = [
[[package]]
name = "oxide_runtime_api"
-version = "0.8.93"
+version = "0.8.94"
dependencies = [
"num-bigint",
"num-traits",
@@ -1384,7 +1384,7 @@ dependencies = [
[[package]]
name = "oxide_test262"
-version = "0.8.93"
+version = "0.8.94"
dependencies = [
"oxide_bytecode",
"oxide_compiler",
@@ -1402,7 +1402,7 @@ dependencies = [
[[package]]
name = "oxide_types"
-version = "0.8.93"
+version = "0.8.94"
dependencies = [
"bumpalo",
"dashmap",
@@ -1415,7 +1415,7 @@ dependencies = [
[[package]]
name = "oxide_vm"
-version = "0.8.93"
+version = "0.8.94"
dependencies = [
"bumpalo",
"chrono",
diff --git a/Cargo.toml b/Cargo.toml
index 1a44997c..3bebf681 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -23,7 +23,7 @@ members = [
]
[workspace.package]
-version = "0.8.93"
+version = "0.8.94"
edition = "2021"
license = "MIT"
rust-version = "1.80"
diff --git a/crates/oxide_vm/src/worker/bindings.rs b/crates/oxide_vm/src/worker/bindings.rs
index b60ebfe9..e77d9872 100644
--- a/crates/oxide_vm/src/worker/bindings.rs
+++ b/crates/oxide_vm/src/worker/bindings.rs
@@ -14,7 +14,7 @@
use std::cell::{Cell, RefCell};
-use oxide_builtins::message_value::{detach_message, MessageValue};
+use oxide_builtins::message_value::detach_message;
use oxide_kernel::message_queue::Sender;
use oxide_kernel::shape_forge::EMPTY_SHAPE_ID;
use oxide_runtime_api::{NativeResult, ProtoKind, VmHost};
@@ -23,10 +23,12 @@ use oxide_types::value::JsValue;
use crate::vm::Vm;
+use super::WorkerOutMail;
+
// worker → 主线程输出通道(worker realm 专用,`worker_event_loop` 建 Vm 后注入)。
// thread-local:worker 线程独占,不跨线程共享。主 realm 的 Vm 不注入(恒 `None`)。
thread_local! {
- static WORKER_OUT_TX: RefCell