refactor: 动态编译改经 CompilerService 注入,oxide_vm 去编译器依赖

This commit is contained in:
2026-10-08 05:51:58 +00:00
parent 66735f802f
commit 4f9b6ab444
94 changed files with 459 additions and 67 deletions
+2 -1
View File
@@ -100,12 +100,13 @@ fn panic_payload_str(payload: &Box<dyn std::any::Any + Send>) -> String {
#[cfg(test)]
mod tests {
use super::*;
use oxide_compiler::DefaultCompilerService;
use oxide_kernel::kernel::KernelConfig;
/// 测试环境:minimal 内核加单 VM 池(与池既有测试同口径)。
fn test_env() -> (Arc<KernelCore>, Arc<VmPool>) {
let kernel = KernelCore::new(KernelConfig::minimal());
let pool = VmPool::new(Arc::clone(&kernel), 1, Some(2));
let pool = VmPool::new(Arc::clone(&kernel), Arc::new(DefaultCompilerService), 1, Some(2));
(kernel, pool)
}
+2 -1
View File
@@ -73,12 +73,13 @@ pub fn handle_forge_query(
mod tests {
use super::*;
use crate::server::eval;
use oxide_compiler::DefaultCompilerService;
use oxide_kernel::kernel::KernelConfig;
/// 测试环境:minimal 内核加单 VM 池(与 eval 测试同口径)。
fn test_env() -> (Arc<KernelCore>, Arc<VmPool>) {
let kernel = KernelCore::new(KernelConfig::minimal());
let pool = VmPool::new(Arc::clone(&kernel), 1, Some(2));
let pool = VmPool::new(Arc::clone(&kernel), Arc::new(DefaultCompilerService), 1, Some(2));
(kernel, pool)
}
+9 -1
View File
@@ -13,6 +13,7 @@ use std::sync::atomic::{AtomicUsize, Ordering};
use std::sync::{mpsc, Arc, Mutex};
use std::thread::JoinHandle;
use oxide_compiler::DefaultCompilerService;
use oxide_kernel::kernel::KernelCore;
use oxide_vm::vm_pool::{PoolCounters, VmPool};
@@ -111,7 +112,14 @@ pub fn spawn_workers(
let counters = Arc::clone(&counters);
handles.push(std::thread::spawn(move || {
// 池在本线程上创建,永不跨线程移动(Vm 不是 Send)。
let pool = VmPool::with_counters(Arc::clone(&kernel), min_pool_size, max_pool_size, counters);
// 编译服务随池构造注入:worker 池内 Vm 的 eval 动态编译面由此供给。
let pool = VmPool::with_counters(
Arc::clone(&kernel),
Arc::new(DefaultCompilerService),
min_pool_size,
max_pool_size,
counters,
);
worker_loop(rx, kernel, pool);
}));
senders.push(tx);