Files
hakorune/nyash.toml
nyash-codex 34be7d2d79 vm/router: minimal special-method extension (equals/1); toString mapping kept
mir: add TypeCertainty to Callee::Method (diagnostic only); plumb through builder/JSON/printer; backends ignore behaviorally

using: confirm unified prelude resolver entry for all runner modes

docs: update Callee architecture with certainty; update call-instructions; CURRENT_TASK note

tests: quick 40/40 PASS; integration (LLVM) 17/17 PASS
2025-09-28 01:33:58 +09:00

407 lines
12 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[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", "."]
# Optional package-style entries (opt-in via using resolver)
[using.json_native]
path = "apps/lib/json_native/"
main = "parser/parser.nyash"
# JSON Native String utilities as a standalone package (single-file)
[using.string_utils]
path = "apps/lib/json_native/utils/string.nyash"
[using.aliases]
# Resolve `using json as ...` to json_native when desired
json = "json_native"
StringUtils = "string_utils"
JsonNode = "json_node"
[using.json_node]
path = "apps/lib/json_native/core/node.nyash"
[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"
selfhost.vm.mir_min = "apps/selfhost/vm/boxes/mir_vm_min.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 = 4 }
read = { method_id = 5 }
write = { method_id = 6 }
close = { method_id = 7 }
exists = { method_id = 8 }
copyFrom = { method_id = 9 }
cloneSelf = { method_id = 10 }
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 = 4 }
dirname = { method_id = 5 }
basename = { method_id = 6 }
extname = { method_id = 7 }
isAbs = { method_id = 8 }
normalize = { method_id = 9 }
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 = 4 }
sin = { method_id = 5 }
cos = { method_id = 6 }
round = { method_id = 7 }
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 = 4 }
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 = 4 }
isMatch = { method_id = 5 }
find = { method_id = 6 }
replaceAll = { method_id = 7 }
split = { method_id = 8 }
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 = 4 }
post = { method_id = 5 }
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 = 4 }
setHeader = { method_id = 5 }
write = { method_id = 6 }
readBody = { method_id = 7 }
getStatus = { method_id = 8 }
getHeader = { method_id = 9 }
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 = 4 }
readBody = { method_id = 5 }
respond = { method_id = 6 }
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 = 4 }
stop = { method_id = 5 }
accept = { method_id = 6 }
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 = 4 }
stop = { method_id = 5 }
accept = { method_id = 6 }
acceptTimeout = { method_id = 7 }
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 = 4 }
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 = 4 }
recv = { method_id = 5 }
close = { method_id = 6 }
recvTimeout = { method_id = 7 }
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 = 4 }
fromUtf8Bytes = { method_id = 5 }
base64Encode = { method_id = 6 }
base64Decode = { method_id = 7 }
hexEncode = { method_id = 8 }
hexDecode = { method_id = 9 }
fini = { method_id = 4294967295 }
# Provider Verify — minimal required methods (dev warn by default)
[verify.required_methods]
# Note: Dynamic plugins may not be present in dev; preflight runs in warn mode.
StringBox = ["length", "concat"]
ArrayBox = ["len", "push", "get"]
MapBox = ["has", "get", "set"]
ConsoleBox = ["print"]
[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 = 4 }
root = { method_id = 5 }
error = { method_id = 6 }
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 = 4 }
get = { method_id = 5 }
size = { method_id = 6 }
at = { method_id = 7 }
str = { method_id = 8 }
int = { method_id = 9 }
bool = { method_id = 10 }
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 = 4 }
get = { method_id = 5 }
toJson = { method_id = 6 }
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 = 4 }
import = { method_id = 5 }
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 = 4 }
call = { method_id = 5 }
str = { method_id = 6 }
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 = 4 }
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 = 4 }
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 }
length = { method_id = 1 }
isEmpty = { method_id = 2 }
charCodeAt = { method_id = 3 }
concat = { method_id = 4 }
fromUtf8 = { method_id = 5 }
toUtf8 = { method_id = 6 }
# Note: Below methods are not implemented yet
# substring = { method_id = 8 }
# indexOf = { method_id = 10 }
# lastIndexOf = { method_id = 11 }
# replace = { method_id = 12 }
# split = { method_id = 13 }
# trim = { method_id = 14 }
# toUpper = { method_id = 15 }
# toLower = { method_id = 16 }
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 }