Files
Selfhosting Dev 27568eb4a6 json: add v2 JsonDoc/JsonNode plugin with runtime provider switch; vendored yyjson + FFI; loader resolve(name)->method_id; PyVM JSON shims; smokes + CI gate; disable MiniVmPrints fallbacks by default
- plugin_loader_v2: store per-Box resolve() from TypeBox FFI; add resolve_method_id() and use in invoke_instance_method
- plugin_loader_unified: resolve_method() falls back to loader’s resolve when TOML lacks method entries
- nyash.toml: register JsonDocBox/JsonNodeBox methods (birth/parse/root/error; kind/get/size/at/str/int/bool)
- plugins/nyash-json-plugin:
  * serde/yyjson provider switch via env NYASH_JSON_PROVIDER (default serde)
  * vendored yyjson (c/yyjson) + shim; parse/root/get/size/at/str/int/bool implemented for yyjson
  * TLV void returns aligned to tag=9
- PyVM: add minimal JsonDocBox/JsonNodeBox shims in ops_box.py (for dev path)
- tests/smokes: add jsonbox_{parse_ok,parse_err,nested,collect_prints}; wire two into min-gate CI
- tools: collect_prints_mixed now uses JSON-based app
- MiniVmPrints: move BinaryOp and fallback heuristics behind a dev toggle (default OFF)
- CURRENT_TASK.md: updated with provider policy and fallback stance
2025-09-22 06:16:20 +09:00

25 lines
724 B
Rust

fn main() {
// Build vendored C shim for yyjson provider (skeleton).
// This keeps linkage ready without introducing external deps.
let shim = "c/yyjson_shim.c";
let yyjson_c = "c/yyjson/yyjson.c";
let mut b = cc::Build::new();
let mut need = false;
if std::path::Path::new(yyjson_c).exists() {
b.file(yyjson_c);
println!("cargo:rerun-if-changed={}", yyjson_c);
need = true;
}
if std::path::Path::new(shim).exists() {
b.file(shim);
println!("cargo:rerun-if-changed={}", shim);
need = true;
}
if need {
b.include("c")
.include("c/yyjson")
.warnings(false)
.compile("yyjson_shim");
}
}