What is under vendor/
vendor/wasm/- WebAssembly/specvendor/wasi/- WebAssembly/WASIvendor/component-model/- WebAssembly/component-model (CM spec)- Canonical built-ins:
vendor/component-model/design/mvp/CanonicalABI.md - Concurrency (async, streams, futures):
vendor/component-model/design/mvp/Concurrency.md - Explainer:
vendor/component-model/design/mvp/Explainer.md
- Canonical built-ins:
vendor/wasmtime/- a Wasm runtime with WASI P3 supportvendor/wasm-tools/- the Wasm toolchain the Wado compiler builds onvendor/antlr4/- ANTLR4, the grammar dialect Gale targets. Readpackage-gale/AGENTS.mdfirst: most of this tree must not be readvendor/wasi-webgpu/- thewasi:webgpuproposalvendor/protobuf-spec/- protobuf.dev's source, which is the protobuf spec- Wire format:
vendor/protobuf-spec/content/programming-guides/encoding.md - The
.protogrammar, one file per syntax and edition:vendor/protobuf-spec/content/reference/protobuf/{proto2,proto3,edition-2023,edition-2024}-spec.md - Edition features:
vendor/protobuf-spec/content/editions/features.md
- Wire format:
vendor/protobuf/- protocolbuffers/protobuf, for the.protofiles the spec does not carry:src/google/protobuf/descriptor.proto, the well-known types, and theunittest*.proto/test_messages_*.protoGrog parses as a corpus
git submodule update --init --recommend-shallow fetches them.
Syncing
mise run sync-vendorvendor/wasmtime goes to the exact version in Cargo.lock, which WASI P3
compatibility requires. The other submodules go to their remote HEAD.
Building against a patched wasmtime
To test a change to wasmtime itself, edit vendor/wasmtime in place and add to
the workspace Cargo.toml:
[patch.crates-io]
wasmtime = { path = "vendor/wasmtime/crates/wasmtime" }
wasmtime-wasi = { path = "vendor/wasmtime/crates/wasi" }
wasmtime-wasi-http = { path = "vendor/wasmtime/crates/wasi-http" }
wasmtime-wasi-tls = { path = "vendor/wasmtime/crates/wasi-tls" }Those four names redirect 31 crates. The cranelift-*, pulley-*,
wasmtime-internal-* and wiggle* crates follow through the dependency graph.
sync-vendor already holds the submodule at the Cargo.lock version, so the
sources match what the workspace expects and nothing needs porting.
Keep the stanza on a throwaway branch. CI checks out without submodules
(submodules: false, also actions/checkout's default), so on main every job
dies while parsing the manifest. Landing it means turning submodule checkout on
across every workflow.
reference/ holds patches written this way, each with its measurement:
current_thread_split.patch— splits the cold deferred-frame replay out ofStoreOpaque::current_threadso the fast path inlines. Removes ~1 point of CPU; throughput flat.trace_fiber_roots.patch— tracks fiber-owning reps instead of scanning the whole componentResourceTableper GC. Not measurable.