From d93595ab83d5ecc3501e18fb58e1c0a64482f6a3 Mon Sep 17 00:00:00 2001 From: Selfhosting Dev Date: Wed, 17 Sep 2025 22:30:19 +0900 Subject: [PATCH] docs(plugins): update headers to TypeBox v2; expand v2 doc with Regex/Net method tables; remove BID mentions where v2 exists --- docs/reference/plugin-abi/nyash_abi_v2.md | 32 +++++++++++++++++++++++ plugins/nyash-array-plugin/src/lib.rs | 2 +- plugins/nyash-console-plugin/src/lib.rs | 2 +- plugins/nyash-filebox-plugin/src/lib.rs | 4 +-- plugins/nyash-integer-plugin/src/lib.rs | 2 +- plugins/nyash-map-plugin/src/lib.rs | 2 +- plugins/nyash-math-plugin/src/lib.rs | 4 +-- plugins/nyash-net-plugin/src/lib.rs | 6 ++--- plugins/nyash-regex-plugin/src/lib.rs | 2 +- plugins/nyash-string-plugin/src/lib.rs | 2 +- 10 files changed, 45 insertions(+), 13 deletions(-) diff --git a/docs/reference/plugin-abi/nyash_abi_v2.md b/docs/reference/plugin-abi/nyash_abi_v2.md index 8355a97c..1436ae40 100644 --- a/docs/reference/plugin-abi/nyash_abi_v2.md +++ b/docs/reference/plugin-abi/nyash_abi_v2.md @@ -101,6 +101,38 @@ Notes - Keep result payloads small; prefer handles (tag=8) for large data and stream APIs. - Use UTF‑8 strings (tag=6) for human‑readable values; use bytes (tag=7) otherwise. +Method Tables (TLV Contracts) +- RegexBox + - birth(0): returns `handle` (RegexBox) + - compile(1): args [string pattern]; returns `OK` + - isMatch(2): args [string text]; returns [bool] + - find(3): args [string text]; returns [string match] + - replaceAll(4): args [string text, string repl]; returns [string] + - split(5): args [string text, i64 limit?]; returns [string joined by "\n"] + - fini(MAX): returns `OK` + +- Net — Client/Response/Request + - ClientBox + - birth(0): returns `handle` (ClientBox) + - get(1): args [string url]; returns `handle` (ResponseBox) + - post(2): args [string url, bytes|string body]; returns `handle` (ResponseBox) + - fini(MAX) + - ResponseBox + - birth(0) + - setStatus(1): args [i32] + - setHeader(2): args [string name, string value] + - write(3): args [bytes|string] + - readBody(4): returns [bytes] + - getStatus(5): returns [i32] + - getHeader(6): args [string name]; returns [string] + - fini(MAX) + - RequestBox + - birth(0): returns `handle` (RequestBox) + - path(1): returns [string] + - readBody(2): returns [bytes] + - respond(3): args [handle(ResponseBox)] + - fini(MAX) + Phase‑12 Alignment & Roadmap - Alignment: The Phase‑12 “Unified TypeBox ABI” is a superset of this v2 minimal design. It shares the same core shape: per‑Box TypeBox export, method_id dispatch, and TLV arguments/results. - Current focus (v2 minimal): simplicity and portability for first‑party plugins (Regex/Net/File/Path/Math/Time/Python family). The loader probes `nyash_typebox_` and calls `invoke_id` with `(instance_id, method_id, TLV)`. diff --git a/plugins/nyash-array-plugin/src/lib.rs b/plugins/nyash-array-plugin/src/lib.rs index 4b093f3a..2dff45b0 100644 --- a/plugins/nyash-array-plugin/src/lib.rs +++ b/plugins/nyash-array-plugin/src/lib.rs @@ -1,4 +1,4 @@ -//! Nyash ArrayBox Plugin - Minimal BID-FFI v1 +//! Nyash ArrayBox Plugin — TypeBox v2 (minimal) //! Methods: birth(0), length(1), get(2), push(3), fini(u32::MAX) use once_cell::sync::Lazy; diff --git a/plugins/nyash-console-plugin/src/lib.rs b/plugins/nyash-console-plugin/src/lib.rs index c821e8ad..8e7e9551 100644 --- a/plugins/nyash-console-plugin/src/lib.rs +++ b/plugins/nyash-console-plugin/src/lib.rs @@ -1,4 +1,4 @@ -//! Nyash ConsoleBox Plugin - BID-FFI v1 +//! Nyash ConsoleBox Plugin — TypeBox v2 //! Provides simple stdout printing via ConsoleBox use std::collections::HashMap; diff --git a/plugins/nyash-filebox-plugin/src/lib.rs b/plugins/nyash-filebox-plugin/src/lib.rs index caba88e4..b98c6b7e 100644 --- a/plugins/nyash-filebox-plugin/src/lib.rs +++ b/plugins/nyash-filebox-plugin/src/lib.rs @@ -1,6 +1,6 @@ -//! Nyash FileBox Plugin - BID-FFI v1 Implementation +//! Nyash FileBox Plugin — TypeBox v2 //! -//! Provides file I/O operations as a Nyash plugin +//! Provides file I/O operations as a Nyash plugin(TypeBox v2 エクスポート済み) use std::collections::HashMap; use std::ffi::CStr; diff --git a/plugins/nyash-integer-plugin/src/lib.rs b/plugins/nyash-integer-plugin/src/lib.rs index 6fc939e2..c3e8a963 100644 --- a/plugins/nyash-integer-plugin/src/lib.rs +++ b/plugins/nyash-integer-plugin/src/lib.rs @@ -1,4 +1,4 @@ -//! Nyash IntegerBox Plugin - Minimal BID-FFI v1 +//! Nyash IntegerBox Plugin — TypeBox v2 (minimal) //! Methods: birth(0), get(1), set(2), fini(u32::MAX) use once_cell::sync::Lazy; diff --git a/plugins/nyash-map-plugin/src/lib.rs b/plugins/nyash-map-plugin/src/lib.rs index 4446e5e2..91929e26 100644 --- a/plugins/nyash-map-plugin/src/lib.rs +++ b/plugins/nyash-map-plugin/src/lib.rs @@ -1,4 +1,4 @@ -//! Nyash MapBox Plugin - Minimal BID-FFI v1 +//! Nyash MapBox Plugin — TypeBox v2 (minimal) //! Methods: birth(0), size(1), get(2), has(3), set(4), fini(u32::MAX) //! Extension: support both i64 and UTF-8 string keys; values remain i64. diff --git a/plugins/nyash-math-plugin/src/lib.rs b/plugins/nyash-math-plugin/src/lib.rs index b4f650a2..f39910f0 100644 --- a/plugins/nyash-math-plugin/src/lib.rs +++ b/plugins/nyash-math-plugin/src/lib.rs @@ -1,5 +1,5 @@ -//! Nyash Math/Time Plugin - BID-FFI v1 (minimal) -//! MathBox: sqrt(i64) -> i64 +//! Nyash Math/Time Plugin — TypeBox v2 +//! MathBox: sqrt/sin/cos/round //! TimeBox: now() -> i64 (unix seconds) use std::collections::HashMap; diff --git a/plugins/nyash-net-plugin/src/lib.rs b/plugins/nyash-net-plugin/src/lib.rs index f31b171a..b08ade80 100644 --- a/plugins/nyash-net-plugin/src/lib.rs +++ b/plugins/nyash-net-plugin/src/lib.rs @@ -1,6 +1,6 @@ -//! Nyash Net Plugin (HTTP stub) - BID-FFI v1 -//! Provides HttpServerBox (singleton), HttpRequestBox, HttpResponseBox, HttpClientBox -//! This is a pure in-process stub (no real sockets), suitable for E2E of BoxRef args/returns. +//! Nyash Net Plugin (HTTP minimal) — TypeBox v2 +//! Provides ServerBox/RequestBox/ResponseBox/ClientBox and socket variants. +//! Pure in-process HTTP over localhost for E2E of BoxRef args/returns. use once_cell::sync::Lazy; use std::collections::{HashMap, VecDeque}; diff --git a/plugins/nyash-regex-plugin/src/lib.rs b/plugins/nyash-regex-plugin/src/lib.rs index 2dd76e53..49ef557d 100644 --- a/plugins/nyash-regex-plugin/src/lib.rs +++ b/plugins/nyash-regex-plugin/src/lib.rs @@ -1,4 +1,4 @@ -//! Nyash RegexBox Plugin - Minimal regex support (compile + match/find/replace/split) +//! Nyash RegexBox Plugin — TypeBox v2(compile / isMatch / find / replaceAll / split) use once_cell::sync::Lazy; use regex::Regex; diff --git a/plugins/nyash-string-plugin/src/lib.rs b/plugins/nyash-string-plugin/src/lib.rs index a0045f0f..75e8cd4c 100644 --- a/plugins/nyash-string-plugin/src/lib.rs +++ b/plugins/nyash-string-plugin/src/lib.rs @@ -1,4 +1,4 @@ -//! Nyash StringBox Plugin - Minimal BID-FFI v1 +//! Nyash StringBox Plugin — TypeBox v2 (minimal) //! Methods: birth(0), length(1), is_empty(2), charCodeAt(3), fini(u32::MAX) use once_cell::sync::Lazy;