mirror of
https://github.com/Xahau/xahaud.git
synced 2026-07-23 23:20:12 +00:00
Add Wasmtime v44.0.1 as a second WebAssembly execution engine, selectable at runtime via the new featureWasmtimeEngine Amendment. When the Amendment is enabled, hook execution and WASM validation switch from WasmEdge to Wasmtime. sfHookInstructionCount changes semantics to fuel consumed (initial budget: 10,000,000,000 units); fee calculation is redefined accordingly. New files: - external/wasmtime/conanfile.py + conandata.yml — prebuilt C API binary package (macOS arm64, Linux x86_64; SHA256-pinned at v44.0.1) - cmake/deps/Wasmtime.cmake — find_package(wasmtime REQUIRED) - src/.../WasmtimeEngine.h/.cpp — IWasmEngine implementation Build system changes: - CMakeLists.txt, conanfile.py: with_wasmtime option (default on) - cmake/RippledCore.cmake: link wasmtime::wasmtime alongside wasmedge::wasmedge Protocol changes: - features.macro: XRPL_FEATURE(WasmtimeEngine, Supported::yes, DefaultNo) - WasmEngine.h: constexpr kWasmtimeInitialFuel = 10'000'000'000ULL (consensus-fixed) - applyHook.cpp, SetHook.cpp, Change.cpp: engine selected by featureWasmtimeEngine Implementation notes: - Consensus-fixed config: consume_fuel=true, wasm_simd=true, relaxed_simd=false, reference_types=true, bulk_memory=true, multi_value=false, nan_canonicalization=true - Termination ABI: accept/rollback sets ExecState::terminated flag then returns a wasm_trap_t* to unwind the guest; execute() checks the flag before inspecting callErr to distinguish clean termination from errors - Memory access workaround (ensureMemoryExported): Wasmtime lacks an index-based memory accessor equivalent to WasmEdge_CallingFrameGetMemoryInstance. The binary is patched before instantiation to inject a "memory" export when the module owns memory without exporting it, enabling wasmtime_caller_export_get() inside host callbacks.
The subdirectories in this directory contain either copies or Conan recipes of external libraries used by rippled. The Conan recipes include patches we have not yet pushed upstream.
| Folder | Upstream | Description |
|---|---|---|
antithesis-sdk |
Project | Antithesis SDK for C++ |
ed25519-donna |
Project | Ed25519 digital signatures |
rocksdb |
Recipe | Fast key/value database. (Supports rotational disks better than NuDB.) |
secp256k1 |
Project | ECDSA digital signatures using the secp256k1 curve |
snappy |
Recipe | "Snappy" lossless compression algorithm. |
soci |
Recipe | Abstraction layer for database access. |