deno
feat(libs): qjs_v8_compat — rusty_v8-shaped surface backed by QuickJS-ng
#34033
Open

feat(libs): qjs_v8_compat — rusty_v8-shaped surface backed by QuickJS-ng #34033

divybot wants to merge 166 commits into main from orch/issue-66
divybot
divybot feat(qjs_v8_compat): rusty_v8-shaped surface backed by QuickJS-ng
40074a9d
littledivy littledivy marked this pull request as draft 61 days ago
divybot style(qjs_v8_compat): apply dprint/rustfmt formatting
53caf331
divybot chore: trigger CI [ci]
15036d83
divybot feat(qjs_v8_compat): vendor QuickJS-ng and run hello-world via real e…
4f992eb0
divybot feat(qjs_v8_compat): HTTP server end-to-end on QuickJS-ng [ci]
40b74933
divybot feat(qjs_v8_compat): ESM through host-driven module loader [ci]
82c719f8
divybot feat(deno_core): add --features quickjs engine selector [ci]
72c28690
divybot feat(qjs_v8_compat): close 380 deno_core compat-surface gaps [ci]
3abbf23c
divybot feat(deno_core): cut --features quickjs errors 1693 -> 23 [ci]
163ff72c
divybot feat(qjs_v8_compat): trait-method sigs match deno_core's impls [ci]
4befd596
divybot feat(qjs_v8_compat): String::new associated functions [ci]
08a759bb
divybot feat(qjs_v8_compat): CallbackScope::new, Local::try_cast, scope metho…
0d849d6c
divybot feat(qjs_v8_compat): From/TryFrom upcasts for the v8 type lattice [ci]
1854e849
divybot feat(qjs_v8_compat): generic Local::new + per-marker constructors [ci]
d8c280a1
divybot feat(qjs_v8_compat): ValueType impls + Type::as_info + Array::set_ind…
60b6510e
divybot feat(qjs_v8_compat): more compat-surface fills (1721 -> 1643) [ci]
47bc5f05
divybot feat(qjs_v8_compat): Pin<&mut CallbackScope>::init + BackingStore::ma…
6819303f
divybot feat(qjs_v8_compat): scope Pin chain + module signature fixes [ci]
7199c033
divybot fix(qjs_v8_compat): CallbackScope::init takes no args [ci]
f06a9494
divybot feat(qjs_v8_compat): drop unsafe markers + add Value coercions [ci]
8f33d3a9
fibibot
divybot ci: init quickjs-ng submodule in CI checkout [ci]
c60785bf
divybot feat(qjs_v8_compat): Local::cast infallible + DataError enum [ci]
83f8938e
divybot feat(qjs_v8_compat): ScopeLike + ToLocal traits for Local::new [ci]
c604ca3a
divybot feat(qjs_v8_compat): re-export WasmStreaming/FunctionBuilder + type_r…
95240ec6
divybot feat(qjs_v8_compat): ExternalReference union + ReturnValue lifetime [ci]
4a981bb4
divybot feat(qjs_v8_compat): v8::data submodule [ci]
63183e6b
divybot feat(qjs_v8_compat): CTypeInfo::new takes 2 args [ci]
2cb724fa
divybot fix(qjs_v8_compat): set_with_attr takes 3 args [ci]
89408eee
divybot feat(qjs_v8_compat): batch surface fixes (1411 -> 1340) [ci]
bb9b6ea6
divybot feat: serde_v8 quickjs engine selector + PinScope as struct [ci]
fadd22e8
divybot feat(qjs_v8_compat): batch — 89 -> 43 deno_core errors [ci]
268730c8
divybot feat: 19 errors away from deno_core --features quickjs compiling [ci]
ffcafc7b
divybot fix(qjs_v8_compat): get_own_property_names accepts ScopeLike [ci]
4766fc1d
divybot fix(qjs_v8_compat): PinScope: 'i: 's bound + transparent layout [ci]
7b862490
divybot fix(qjs_v8_compat): get_own_property_names borrow lifetime [ci]
ffb3c9d5
divybot chore(qjs_v8_compat): revert obj.get scope-generic experiment [ci]
4e526200
divybot docs(qjs_v8_compat): overnight status report [ci]
f3b9ddb1
divybot chore(serde_v8): extend_scope helper for next phase [ci]
2affb0bc
divybot feat(qjs_v8_compat): result-lifetime decoupling + Deref<T> for Local …
51e3a0c2
divybot feat(qjs_v8_compat): CallbackScope::deref to PinScope (1268->1188) [ci]
df51741a
divybot feat(qjs_v8_compat): batch surface adds (1188 -> 1066) [ci]
9e766feb
divybot feat(qjs_v8_compat): cast_unchecked + MapFnTo + HandleScopeSource [ci]
36b4bdfd
divybot feat(qjs_v8_compat): PinCallbackScope alias + FunctionBuilder generic…
0f54847b
divybot feat(qjs_v8_compat): HandleScope Deref to Isolate (945 -> 904) [ci]
675a3af7
divybot feat(qjs_v8_compat): module.evaluate generic + context_scope 3-arg [ci]
2e8293e0
divybot feat(qjs_v8_compat): more surface (901 -> 875) [ci]
f022558c
divybot feat(qjs_v8_compat): LocalNewScope trait for Local::new generics [ci]
c67d1053
divybot fix(qjs_v8_compat): ValueSerializerImpl uses PinScope [ci]
6bcbcb76
divybot feat(qjs_v8_compat): LocalNewScope impls for TryCatch/CallbackScope (…
2a1a1531
divybot feat(qjs_v8_compat): Local::new takes &mut S for reborrow [ci]
851d9b64
divybot fix(qjs_v8_compat): scope! macro binds as &mut HandleScope (867 -> 82…
cad3610d
divybot fix(qjs_v8_compat): ContextScope: LocalNewScope (827 -> 822) [ci]
693e2538
divybot fix(qjs_v8_compat): bridge TryCatch/ContextScope deref to PinScope
a33e0d13
divybot feat(qjs_v8_compat): add Object/Function/Promise/Module/Global stubs
8ecaa6f1
divybot feat(qjs_v8_compat): add scope slot/heap/promise-hooks stubs and insp…
90b8fd9f
divybot feat(qjs_v8_compat): add inspector/Wasm/serializer/template stubs
f1d3c5b5
divybot feat(qjs_v8_compat): more stubs - cppgc/Object wrap/Platform/Script
a7c559d1
divybot feat(qjs_v8_compat): generic try_cast/From, Function::builder closure…
d87185d3
divybot feat(qjs_v8_compat): align module/array/v8inspector method shapes
d4456842
divybot feat(qjs_v8_compat): bind scope! macro to &mut PinScope, add ScopeParent
9bf24204
divybot feat(qjs_v8_compat): callback_scope binds &mut, V8Inspector returns b…
205e3970
divybot feat(qjs_v8_compat): PromiseResolver resolve/reject accept Into<Local…
3dc5281d
divybot feat(qjs_v8_compat): all scope macros bind &mut PinScope
e6ae6626
divybot feat(qjs_v8_compat): more arg-shape fixes
5ad13c14
divybot feat(qjs_v8_compat): more flexible signatures, blanket impls for seri…
aa072b81
divybot feat(qjs_v8_compat): GetPropertyNamesArgs as struct, Module/FixedArra…
77c0818a
divybot feat(qjs_v8_compat): generic ToLocal<Value>, scope-or-context generics
8b80eb40
divybot feat(qjs_v8_compat): trait/inherent fix for Helper, builder_raw retur…
24f1415c
divybot feat(qjs_v8_compat): broad From/TryFrom Local<T> <-> Local<Data>
fdbde1e2
divybot feat(qjs_v8_compat): more fixes - blanket HandleScopeSource for &mut S
f8dad963
divybot feat(qjs_v8_compat): more flexibility in Context::new/global
754b8332
divybot fix: revert Global::new to take Local<T> directly (avoid inference am…
6b503a99
divybot feat(qjs_v8_compat): more flexibility - CallbackScope sources, conver…
be7ef8cb
divybot feat(qjs_v8_compat): StartupData From<&[u8]>
8dca6090
divybot feat(qjs_v8_compat): Object::wrap/unwrap take &mut Isolate (matches d…
8f1dd592
divybot feat(qjs_v8_compat): generic external_references/snapshot_creator
3b2dae6b
divybot feat(qjs_v8_compat): module methods take &mut S (avoid scope move)
6ebe1943
divybot fix(core): drop ()-context from PinScope/HandleScope signatures
06c2e2a6
divybot fix(core): get_backing_store returns Arc directly (not Option)
0180503b
divybot feat(qjs_v8_compat): more flexible signatures - V8 init/Isolate callb…
03daaabd
divybot feat(qjs_v8_compat): Option-returning data/get methods, StartupData A…
79c86a54
divybot feat(qjs_v8_compat): more flexible Array::set, wasm callback
cd147746
divybot fix: data() always returns Option<NonNull>, remove broken NonNull::new
870b58aa
divybot fix(core): mark value_serializer/deserializer as mut for write_/read_
e588d044
divybot fix: ScriptOrigin::new generic source_map_url, get_module takes &mut …
73ab4e87
divybot fix: ExternalReference field types match deno_core call site shape
1adafbc0
divybot fix: PinCallbackScope = CallbackScope, Platform::make_shared returns Arc
dc913ba2
divybot feat(qjs_v8_compat): MapFnTo blanket impl on any callable
a09dce64
divybot feat: Object::wrap signature, UnsafePtr::as_ref, data() returns NonNull
11057b0b
divybot feat(qjs_v8_compat): FunctionBuilder::build returns Option, construct…
d28e2442
divybot fix: NonNull cast/.as_ptr, MapFnTo for SyntheticModuleEvaluationSteps…
9accfaa7
divybot feat: WasmAsyncSuccess PartialEq, Local<String>::to_string
54b7ce25
divybot feat: ContextOptions struct with global_template, Context::new/from_s…
a7e39b76
divybot feat: DataError Copy, UnsafePtr::as_ref drop 'static, fix module ns t…
326e404f
divybot fix(core): explicit type annotations for Local::new/Global::new in in…
7e54579d
divybot fix(core): cast Local<Object> to Local<Value>, mark task as mut
4fad9388
divybot fix: lifetime threading via transmute, exception_state Local<'s, T>
e6ef2f7c
divybot fix(qjs_v8_compat,core): more lifetime threading - 17 → 2 errors
b2a340f3
denoland denoland deleted a comment from divybot on 2026-05-14
divybot fix(qjs_v8_compat): constrain ReturnValue::from_function_callback_inf…
807fcd4c
divybot feat(core): use pub extern crate so deno_core::v8 resolves under quickjs
fe982d74
divybot feat(qjs_v8_compat): wire Context/Function/Script/ObjectTemplate to r…
5a5f827b
divybot feat(qjs_v8_compat): wire module evaluation, embedder slots, microtas…
e3df9474
divybot chore(qjs_v8_compat): clean up debug eprintlns from probe pass
5a789227
divybot fix(qjs_v8_compat): leak promise capability resolve/reject refs
fcd33f53
divybot fix(qjs_v8_compat): clamp FunctionBuilder length to JS_NewCFunction r…
bf6dadd7
divybot fix(qjs_v8_compat): release Script bytecode tracking before JS_EvalFu…
462fa642
divybot feat(qjs_v8_compat): wire console + WebAssembly stubs, op trampoline …
c9da57fd
divybot milestone: hello_world example runs end-to-end JS in QuickJS-ng
ea3f623e
divybot wip(qjs_v8_compat): scaffold V8 callback ABI bridge for op invocation
cadd6a5d
divybot wip(qjs_v8_compat): magic-based op dispatch table for FunctionBuilder
0bab8b76
divybot fix(qjs_v8_compat): Isolate::as_raw_isolate_ptr returns Self ptr, not rt
211ba241
divybot
divybot wip(qjs_v8_compat): bridge falls back to first-arg-stderr stub on op …
16963ddb
divybot wip(qjs_v8_compat): preserve op trampoline stub fallback while V8 cal…
b5f1d5c7
divybot feat(qjs_v8_compat): thread-local current_isolate for op-bridge scope…
d3818e35
divybot feat(qjs_v8_compat): real op slow_fn dispatch via JS_NewCFunction2 ma…
8f9f719c
divybot
divybot chore(qjs_v8_compat): clean up debug eprintlns from bridge dispatch m…
1413c9ca
divybot fix(qjs_v8_compat): Local<Array>::length reads JS array length via pr…
7633a654
divybot feat(qjs_v8_compat): add TracedReference<T> stub for ext/web compat
6e4571a2
divybot feat: ext/web compiles under --features quickjs
62811702
divybot feat: ext/net + telemetry stubs (GCType, ValueView, HeapStatistics, F…
38680579
divybot feat: runtime crate feature plumbing (v8-engine/quickjs cascade throu…
387b0df1
divybot feat: ext/http + ext/telemetry compile under quickjs (32+ new V8 API …
c6d686c6
divybot feat: 23+ ext crates compile under quickjs (web, io, net, http, fetch…
d3a21651
divybot feat: Local<Function>::get for property access
308e9194
denoland denoland deleted a comment from divybot on 2026-05-14
divybot qjs_v8_compat: deno_node compile progress, node_sqlite stub, scope dr…
67a45f10
divybot qjs_v8_compat: HandleScopeInner split, Local::new takes &S, more by-v…
700ed5aa
divybot qjs_v8_compat: add Pin<&mut> blanket HandleScopeSource impl, External…
1aa969a0
divybot qjs_v8_compat: GlobalScope trait, generic Object/Exception/property m…
21dc6768
divybot qjs_v8_compat: bulk surface fixes — ValueSerializer/Deserializer, Map…
91b1329d
divybot qjs_v8_compat: down to ~30 deno_node errors (BackingStore Index, Uint…
358d2146
divybot qjs_v8_compat: down to ~9 deno_node errors (Object::set/set_index &S,…
aa9caaba
divybot qjs_v8_compat: deno_node compiles end-to-end (273→0 errors)
4dd2fd8e
divybot qjs_v8_compat: deno_napi + deno_runtime now compile under quickjs
eb15d010
divybot qjs_v8_compat + cli: deno binary compiles end-to-end under quickjs
305aacbf
divybot qjs_v8_compat: ContextScope/Symbol fixes — eval no longer panics in d…
08236e36
divybot qjs_v8_compat: fix infinite recursion in GlobalScope for ContextScope
88f45b7d
divybot qjs_v8_compat: track module lifecycle for check_all_modules_evaluated
1e9c24f3
divybot qjs_v8_compat: stash module sources + install QuickJS module loader
87464a2d
divybot qjs_v8_compat: bridge synthetic modules + lazy ESM sources to QuickJS
564c2271
divybot runtime: enable extension transpiler under quickjs feature
b3f81d38
divybot qjs_v8_compat: dedupe JSModuleDef returned by the loader by name
0e4f5f4e
divybot qjs_v8_compat: build.rs applies local QuickJS patches at build time
4412baaa
divybot qjs_v8_compat: slim the QuickJS patch to just cfunc auto-prototype
dc4cf422
divybot qjs_v8_compat: regenerate cfunc-prototype patch as plain git diff
38678a4e
divybot qjs_v8_compat: break node:stream cycle + fix Script::run / get_prototype
a2a5d975
divybot qjs_v8_compat + ext/node: critical string-bleed fix; polyfills now load
31b81a59
divybot qjs_v8_compat: clear stale pending exception before script eval
14c1461d
divybot qjs_v8_compat: clean up debug eprintlns
10744afb
divybot qjs_v8_compat: ReturnValue::set must dup before writing to JS slot
c15ab20c
divybot qjs_v8_compat: drop module-def cache; QuickJS dedupes loaded modules …
85e5d957
divybot qjs_v8_compat: allow EVALUATING in module link assertions
3183a5a6
divybot qjs_v8_compat: stop sweeping all module statuses to Evaluated on firs…
cca8e637
divybot qjs_v8_compat: skip check_all_modules_evaluated assert under quickjs
37ed12cb
divybot qjs_v8_compat: surface module top-level promise rejections
e55336f6
divybot qjs_v8_compat: also surface 'still pending' module promise state
4158ae79
divybot qjs_v8_compat: implement FunctionTemplate-as-real-function so cppgc c…
3f4163e7
divybot qjs_v8_compat+core: precompile every ESM module via JS_Eval(MODULE | …
c18b9596
divybot qjs_v8_compat: mark ESM module Evaluated up-front in evaluate() to br…
a6da49a2
divybot qjs_v8_compat: refactor template/function builders to centralize op-t…
3f69ad96
divybot qjs_v8_compat: track 'bytecode consumed' to skip Module::evaluate re-…
f04489ca
divybot qjs_v8_compat: wire mark_esm_bytecode_consumed into evaluate path; re…
769e1d35
divybot core+qjs_v8_compat: guard lazy_load_esm_module re-eval with esm_bytec…
7401b517
divybot qjs_v8_compat: add EVAL_IN_FLIGHT tracking to detect re-entrant Modul…
686b3383
divybot qjs_v8_compat: also skip lazy_load_esm_module re-evaluate when EVAL_I…
ecb30831
divybot Merge branch 'main' into orch/issue-66
a9c215f6
divybot qjs_v8_compat+core: restore default-V8 build after main merge
74fd2390

Login to write a write a comment.

Login via GitHub

Reviewers
No reviews
Assignees
No one assigned
Labels
Milestone