Files
hakorune/nyash.toml
Selfhosting Dev 73b90a7c28 feat: スモークテストv2実装&Phase 15.5後のプラグイン対応
Phase 15.5 Core Box削除後の新テストシステム構築:

## 実装内容
- スモークテストv2システム完全実装(3段階プロファイル)
- 共通ライブラリ(test_runner/plugin_manager/result_checker/preflight)
- インタープリター層完全削除(約350行)
- PyVM重要インフラ特化保持戦略(JSON v0ブリッジ専用)
- nyash.tomlパス修正(13箇所、プラグイン正常ロード確認)

## 動作確認済み
- 基本算術演算(+, -, *, /)
- 制御構文(if, loop, break, continue)
- 変数代入とスコープ
- プラグインロード(20個の.soファイル)

## 既知の問題
- StringBox/IntegerBoxメソッドが動作しない
  - オブジェクト生成は成功するがメソッド呼び出しでエラー
  - Phase 15.5影響でプラグイン実装が不完全な可能性

## ドキュメント
- docs/development/testing/smoke-tests-v2.md 作成
- docs/reference/pyvm-usage-guidelines.md 作成
- CODEX_QUESTION.md(Codex相談用)作成

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 09:30:42 +09:00

377 lines
11 KiB
TOML

[env]
# Put environment defaults used by tools or examples if needed
# Enable using resolver by default (can be disabled with NYASH_SKIP_TOML_ENV=1)
NYASH_ENABLE_USING = "1"
# Enable dev sugar preexpand for @ local alias (line-head) during parsing
NYASH_DEV_AT_LOCAL = "1"
[using]
paths = ["apps", "lib", "."]
[modules]
# Map logical namespaces to Nyash source paths (consumed by runner)
selfhost.compiler.debug = "apps/selfhost/compiler/boxes/debug_box.nyash"
selfhost.compiler.parser = "apps/selfhost/compiler/boxes/parser_box.nyash"
selfhost.compiler.emitter = "apps/selfhost/compiler/boxes/emitter_box.nyash"
selfhost.compiler.mir = "apps/selfhost/compiler/boxes/mir_emitter_box.nyash"
selfhost.vm.json_cur = "apps/selfhost/vm/boxes/json_cur.nyash"
selfhost.vm.json = "apps/selfhost/common/json_adapter.nyash"
selfhost.vm.core = "apps/selfhost/vm/boxes/mini_vm_core.nyash"
selfhost.vm.scan = "apps/selfhost/common/mini_vm_scan.nyash"
selfhost.vm.binop = "apps/selfhost/common/mini_vm_binop.nyash"
selfhost.vm.compare = "apps/selfhost/common/mini_vm_compare.nyash"
selfhost.vm.prints = "apps/selfhost/vm/boxes/mini_vm_prints.nyash"
selfhost.vm.seam = "apps/selfhost/vm/boxes/seam_inspector.nyash"
# Temporary alias keys (migration aid; keys kept stable)
selfhost.common.json = "apps/selfhost/common/json_adapter.nyash"
selfhost.common.scan = "apps/selfhost/common/mini_vm_scan.nyash"
selfhost.common.binop = "apps/selfhost/common/mini_vm_binop.nyash"
selfhost.common.compare = "apps/selfhost/common/mini_vm_compare.nyash"
# v2 Plugin libraries (loader reads these for TypeBox ABI)
[libraries]
[libraries."libnyash_filebox_plugin.so"]
boxes = ["FileBox"]
path = "plugins/nyash-filebox-plugin/libnyash_filebox_plugin.so"
[libraries."libnyash_filebox_plugin.so".FileBox]
type_id = 6
abi_version = 1
singleton = false
[libraries."libnyash_filebox_plugin.so".FileBox.methods]
birth = { method_id = 0 }
open = { method_id = 1 }
read = { method_id = 2 }
write = { method_id = 3 }
close = { method_id = 4 }
exists = { method_id = 5 }
copyFrom = { method_id = 7 }
cloneSelf = { method_id = 8 }
fini = { method_id = 4294967295 }
[libraries."libnyash_path_plugin.so"]
boxes = ["PathBox"]
path = "plugins/nyash-path-plugin/libnyash_path_plugin.so"
[libraries."libnyash_path_plugin.so".PathBox]
type_id = 55
abi_version = 1
singleton = false
[libraries."libnyash_path_plugin.so".PathBox.methods]
birth = { method_id = 0 }
join = { method_id = 1 }
dirname = { method_id = 2 }
basename = { method_id = 3 }
extname = { method_id = 4 }
isAbs = { method_id = 5 }
normalize = { method_id = 6 }
fini = { method_id = 4294967295 }
[libraries."libnyash_math_plugin.so"]
boxes = ["MathBox", "TimeBox"]
path = "plugins/nyash-math-plugin/libnyash_math_plugin.so"
[libraries."libnyash_math_plugin.so".MathBox]
type_id = 50
abi_version = 1
singleton = false
[libraries."libnyash_math_plugin.so".MathBox.methods]
birth = { method_id = 0 }
sqrt = { method_id = 1 }
sin = { method_id = 2 }
cos = { method_id = 3 }
round = { method_id = 4 }
fini = { method_id = 4294967295 }
[libraries."libnyash_math_plugin.so".TimeBox]
type_id = 51
abi_version = 1
singleton = false
[libraries."libnyash_math_plugin.so".TimeBox.methods]
birth = { method_id = 0 }
now = { method_id = 1 }
fini = { method_id = 4294967295 }
[libraries."libnyash_regex_plugin.so"]
boxes = ["RegexBox"]
path = "plugins/nyash-regex-plugin/libnyash_regex_plugin.so"
[libraries."libnyash_regex_plugin.so".RegexBox]
type_id = 52
abi_version = 1
singleton = false
[libraries."libnyash_regex_plugin.so".RegexBox.methods]
birth = { method_id = 0 }
compile = { method_id = 1 }
isMatch = { method_id = 2 }
find = { method_id = 3 }
replaceAll = { method_id = 4 }
split = { method_id = 5 }
fini = { method_id = 4294967295 }
[libraries."libnyash_net_plugin.so"]
boxes = ["ClientBox", "ResponseBox", "RequestBox", "ServerBox", "SockServerBox", "SockClientBox", "SockConnBox"]
path = "plugins/nyash-net-plugin/libnyash_net_plugin.so"
[libraries."libnyash_net_plugin.so".ClientBox]
type_id = 23
abi_version = 1
singleton = false
[libraries."libnyash_net_plugin.so".ClientBox.methods]
birth = { method_id = 0 }
get = { method_id = 1 }
post = { method_id = 2 }
fini = { method_id = 4294967295 }
[libraries."libnyash_net_plugin.so".ResponseBox]
type_id = 22
abi_version = 1
singleton = false
[libraries."libnyash_net_plugin.so".ResponseBox.methods]
birth = { method_id = 0 }
setStatus = { method_id = 1 }
setHeader = { method_id = 2 }
write = { method_id = 3 }
readBody = { method_id = 4 }
getStatus = { method_id = 5 }
getHeader = { method_id = 6 }
fini = { method_id = 4294967295 }
[libraries."libnyash_net_plugin.so".RequestBox]
type_id = 21
abi_version = 1
singleton = false
[libraries."libnyash_net_plugin.so".RequestBox.methods]
birth = { method_id = 0 }
path = { method_id = 1 }
readBody = { method_id = 2 }
respond = { method_id = 3 }
fini = { method_id = 4294967295 }
[libraries."libnyash_net_plugin.so".ServerBox]
type_id = 20
abi_version = 1
singleton = false
[libraries."libnyash_net_plugin.so".ServerBox.methods]
birth = { method_id = 0 }
start = { method_id = 1 }
stop = { method_id = 2 }
accept = { method_id = 3 }
fini = { method_id = 4294967295 }
[libraries."libnyash_net_plugin.so".SockServerBox]
type_id = 30
abi_version = 1
singleton = false
[libraries."libnyash_net_plugin.so".SockServerBox.methods]
birth = { method_id = 0 }
start = { method_id = 1 }
stop = { method_id = 2 }
accept = { method_id = 3 }
acceptTimeout = { method_id = 4 }
fini = { method_id = 4294967295 }
[libraries."libnyash_net_plugin.so".SockClientBox]
type_id = 32
abi_version = 1
singleton = false
[libraries."libnyash_net_plugin.so".SockClientBox.methods]
birth = { method_id = 0 }
connect = { method_id = 1 }
fini = { method_id = 4294967295 }
[libraries."libnyash_net_plugin.so".SockConnBox]
type_id = 31
abi_version = 1
singleton = false
[libraries."libnyash_net_plugin.so".SockConnBox.methods]
birth = { method_id = 0 }
send = { method_id = 1 }
recv = { method_id = 2 }
close = { method_id = 3 }
recvTimeout = { method_id = 4 }
fini = { method_id = 4294967295 }
[libraries."libnyash_encoding_plugin.so"]
boxes = ["EncodingBox"]
path = "plugins/nyash-encoding-plugin/libnyash_encoding_plugin.so"
[libraries."libnyash_encoding_plugin.so".EncodingBox]
type_id = 53
abi_version = 1
singleton = false
[libraries."libnyash_encoding_plugin.so".EncodingBox.methods]
birth = { method_id = 0 }
toUtf8Bytes = { method_id = 1 }
fromUtf8Bytes = { method_id = 2 }
base64Encode = { method_id = 3 }
base64Decode = { method_id = 4 }
hexEncode = { method_id = 5 }
hexDecode = { method_id = 6 }
fini = { method_id = 4294967295 }
[libraries."libnyash_json_plugin.so"]
boxes = ["JsonDocBox", "JsonNodeBox"]
path = "plugins/nyash-json-plugin/libnyash_json_plugin.so"
[libraries."libnyash_json_plugin.so".JsonDocBox]
type_id = 70
abi_version = 1
singleton = false
[libraries."libnyash_json_plugin.so".JsonDocBox.methods]
birth = { method_id = 0 }
parse = { method_id = 1 }
root = { method_id = 2 }
error = { method_id = 3 }
fini = { method_id = 4294967295 }
[libraries."libnyash_json_plugin.so".JsonNodeBox]
type_id = 71
abi_version = 1
singleton = false
[libraries."libnyash_json_plugin.so".JsonNodeBox.methods]
birth = { method_id = 0 }
kind = { method_id = 1 }
get = { method_id = 2 }
size = { method_id = 3 }
at = { method_id = 4 }
str = { method_id = 5 }
int = { method_id = 6 }
bool = { method_id = 7 }
fini = { method_id = 4294967295 }
[libraries."libnyash_toml_plugin.so"]
boxes = ["TOMLBox"]
path = "plugins/nyash-toml-plugin/libnyash_toml_plugin.so"
[libraries."libnyash_toml_plugin.so".TOMLBox]
type_id = 54
abi_version = 1
singleton = false
[libraries."libnyash_toml_plugin.so".TOMLBox.methods]
birth = { method_id = 0 }
parse = { method_id = 1 }
get = { method_id = 2 }
toJson = { method_id = 3 }
fini = { method_id = 4294967295 }
# Python (v2 TypeBox) plugins
[libraries."libnyash_python_plugin.so"]
boxes = ["PyRuntimeBox", "PyObjectBox"]
path = "plugins/nyash-python-plugin/libnyash_python_plugin.so"
[libraries."libnyash_python_plugin.so".PyRuntimeBox]
type_id = 40
abi_version = 1
singleton = false
[libraries."libnyash_python_plugin.so".PyRuntimeBox.methods]
birth = { method_id = 0 }
eval = { method_id = 1 }
import = { method_id = 2 }
evalR = { method_id = 11 }
importR = { method_id = 12 }
fini = { method_id = 4294967295 }
[libraries."libnyash_python_plugin.so".PyObjectBox]
type_id = 41
abi_version = 1
singleton = false
[libraries."libnyash_python_plugin.so".PyObjectBox.methods]
birth = { method_id = 0 }
getattr = { method_id = 1 }
call = { method_id = 2 }
str = { method_id = 3 }
callKw = { method_id = 5 }
getattrR = { method_id = 11 }
callR = { method_id = 12 }
callKwR = { method_id = 15 }
fini = { method_id = 4294967295 }
[libraries."libnyash_python_parser_plugin.so"]
boxes = ["PythonParserBox"]
path = "plugins/nyash-python-parser-plugin/libnyash_python_parser_plugin.so"
[libraries."libnyash_python_parser_plugin.so".PythonParserBox]
type_id = 60
abi_version = 1
singleton = false
[libraries."libnyash_python_parser_plugin.so".PythonParserBox.methods]
birth = { method_id = 0 }
parse = { method_id = 1 }
fini = { method_id = 4294967295 }
[libraries."libnyash_python_compiler_plugin.so"]
boxes = ["PythonCompilerBox"]
path = "plugins/nyash-python-compiler-plugin/libnyash_python_compiler_plugin.so"
[libraries."libnyash_python_compiler_plugin.so".PythonCompilerBox]
type_id = 61
abi_version = 1
singleton = false
[libraries."libnyash_python_compiler_plugin.so".PythonCompilerBox.methods]
birth = { method_id = 0 }
compile = { method_id = 1 }
fini = { method_id = 4294967295 }
# StringBox Plugin (Core Box replacement)
[libraries."libnyash_string_plugin.so"]
boxes = ["StringBox"]
path = "plugins/nyash-string-plugin/libnyash_string_plugin.so"
[libraries."libnyash_string_plugin.so".StringBox]
type_id = 10
abi_version = 1
singleton = false
[libraries."libnyash_string_plugin.so".StringBox.methods]
birth = { method_id = 0 }
get = { method_id = 1 }
set = { method_id = 2 }
concat = { method_id = 3 }
length = { method_id = 4 }
substring = { method_id = 5 }
charCodeAt = { method_id = 6 }
indexOf = { method_id = 7 }
lastIndexOf = { method_id = 8 }
replace = { method_id = 9 }
split = { method_id = 10 }
trim = { method_id = 11 }
toUpper = { method_id = 12 }
toLower = { method_id = 13 }
fini = { method_id = 4294967295 }
# IntegerBox Plugin (Core Box replacement)
[libraries."libnyash_integer_plugin.so"]
boxes = ["IntegerBox"]
path = "plugins/nyash-integer-plugin/libnyash_integer_plugin.so"
[libraries."libnyash_integer_plugin.so".IntegerBox]
type_id = 12
abi_version = 1
singleton = false
[libraries."libnyash_integer_plugin.so".IntegerBox.methods]
birth = { method_id = 0 }
get = { method_id = 1 }
set = { method_id = 2 }
fini = { method_id = 4294967295 }