phase: 20.49 COMPLETE; 20.50 Flow+String minimal reps; 20.51 selfhost v0/v1 minimal (Option A/B); hv1-inline binop/unop/copy; docs + run_all + CURRENT_TASK -> 21.0

This commit is contained in:
nyash-codex
2025-11-06 15:41:52 +09:00
parent 2dc370223d
commit 77d4fd72b3
1658 changed files with 6288 additions and 2612 deletions

View File

@ -10,7 +10,7 @@
- 実行:
```
NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_HOSTCALL=1 NYASH_JIT_EVENTS=1 \
./target/release/nyash --backend vm examples/jit_map_get_param_hh.nyash
./target/release/nyash --backend vm examples/jit_map_get_param_hh.hako
```
- 期待: `allow id: nyash.map.get_hh` イベントが出る。戻り値は `value1`
@ -19,7 +19,7 @@ NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_HOSTCALL=1 NYASH_JIT_EVENTS=1 \
- 実行:
```
NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_HOSTCALL=1 NYASH_JIT_EVENTS=1 \
./target/release/nyash --backend vm examples/jit_policy_optin_mutating.nyash
./target/release/nyash --backend vm examples/jit_policy_optin_mutating.hako
```
- 期待: 1回目は `policy_denied_mutating` でfallback、whitelist後の2回目はallow。
@ -36,7 +36,7 @@ NYASH_JIT_EVENTS_RUNTIME=1 NYASH_JIT_EVENTS_PATH=events.jsonl ...
- 目的: GCのカウント/トレース/バリア観測の導線確認VM経路
- 実行:
```
./target/release/nyash --backend vm examples/gc_counting_demo.nyash
./target/release/nyash --backend vm examples/gc_counting_demo.hako
```
- Tips: 詳細ログは `NYASH_GC_COUNTING=1 NYASH_GC_TRACE=2` を併用。
@ -45,7 +45,7 @@ NYASH_JIT_EVENTS_RUNTIME=1 NYASH_JIT_EVENTS_PATH=events.jsonl ...
- 実行(しきい値=1を明示またはDebugConfigBoxでapply後にRunnerが自動設定:
```
NYASH_JIT_THRESHOLD=1 NYASH_JIT_HOSTCALL=1 \
./target/release/nyash --backend vm examples/jit_policy_whitelist_demo.nyash
./target/release/nyash --backend vm examples/jit_policy_whitelist_demo.hako
```
- 期待: `policy_events.jsonl``phase:"lower"`(計画)と `phase:"execute"`(実績)が出る。
@ -61,12 +61,12 @@ NYASH_JIT_THRESHOLD=1 NYASH_JIT_HOSTCALL=1 \
- 事前: `cargo build --release --features cranelift-jit`
- 実行例String/Integer/Consoleの最小:
```
./target/release/nyash --compile-native examples/aot_min_string_len.nyash -o app && ./app
./target/release/nyash --compile-native examples/aot_min_string_len.hako -o app && ./app
# 結果は `Result: <val>` として標準出力に表示
```
- Python最小チェーンRO:
```
./target/release/nyash --compile-native examples/aot_py_min_chain.nyash -o app && ./app
./target/release/nyash --compile-native examples/aot_py_min_chain.hako -o app && ./app
```
- スクリプト版(詳細な手順): `tools/build_aot.sh <file> -o <out>`Windowsは `tools/build_aot.ps1`
@ -75,6 +75,6 @@ NYASH_JIT_THRESHOLD=1 NYASH_JIT_HOSTCALL=1 \
- 実行(デモ):
```
NYASH_SCHED_DEMO=1 NYASH_SCHED_POLL_BUDGET=2 \
./target/release/nyash --backend vm examples/scheduler_demo.nyash
./target/release/nyash --backend vm examples/scheduler_demo.hako
```
- 期待: `[SCHED] immediate task ran at safepoint``[SCHED] delayed task ran at safepoint` が出力

View File

@ -1,11 +1,11 @@
// Minimal function for AOT/JIT plugin_invoke with String.length()
// Run JIT demo:
// NYASH_USE_PLUGIN_BUILTINS=1 NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 \
// ./target/release/nyash --backend vm examples/aot_min_string_len.nyash
// ./target/release/nyash --backend vm examples/aot_min_string_len.hako
// Generate .o (if compiled):
// NYASH_AOT_OBJECT_OUT=target/aot_objects \
// NYASH_USE_PLUGIN_BUILTINS=1 NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 \
// ./target/release/nyash --backend vm examples/aot_min_string_len.nyash
// ./target/release/nyash --backend vm examples/aot_min_string_len.hako
static box Main {
len1(s) {

View File

@ -4,7 +4,7 @@
// - PyRuntimeBox.eval() with zero args reads NYASH_PY_EVAL_CODE on the host side.
// - Avoids StringBox and println to minimize unsupported JIT lowerings.
// - Build AOT:
// bash tools/build_python_aot.sh examples/aot_py_eval_env_min.nyash -o app
// bash tools/build_python_aot.sh examples/aot_py_eval_env_min.hako -o app
// - Run:
// NYASH_PY_EVAL_CODE="(__import__('math').sqrt)(9)" ./app

View File

@ -4,7 +4,7 @@
// cargo build --release --features cranelift-jit
// Run:
// NYASH_PY_EVAL_CODE="(__import__('builtins').int)(**{'x':'FF','base':16})" \
// ./target/release/nyash --compile-native examples/aot_py_eval_kwargs_env.nyash -o app && \
// ./target/release/nyash --compile-native examples/aot_py_eval_kwargs_env.hako -o app && \
// NYASH_PY_EVAL_CODE="(__import__('builtins').int)(**{'x':'FF','base':16})" ./app
static box Main {

View File

@ -1,7 +1,7 @@
// AOT Python minimal chain: import -> getattr -> call
// Build AOT (example):
// cargo build --release --features cranelift-jit
// ./target/release/nyash --compile-native examples/aot_py_min_chain.nyash -o app && ./app
// ./target/release/nyash --compile-native examples/aot_py_min_chain.hako -o app && ./app
static box Main {
main() {

View File

@ -1,7 +1,7 @@
// AOT Python evalR Err demo (returns Result.Err)
// Build:
// cargo build --release --features cranelift-jit
// ./target/release/nyash --compile-native examples/aot_py_result_err.nyash -o app && ./app
// ./target/release/nyash --compile-native examples/aot_py_result_err.hako -o app && ./app
static box Main {
main() {

View File

@ -1,7 +1,7 @@
// AOT Python evalR OK demo (returns Result.Ok)
// Build:
// cargo build --release --features cranelift-jit
// ./target/release/nyash --compile-native examples/aot_py_result_ok.nyash -o app && ./app
// ./target/release/nyash --compile-native examples/aot_py_result_ok.hako -o app && ./app
static box Main {
main() {

View File

@ -1,7 +1,7 @@
// ArrayBox plugin demo
// Requires: plugins/nyash-array-plugin built (release) and nyash.toml updated
// Run:
// NYASH_CLI_VERBOSE=1 ./target/release/nyash --backend vm examples/array_plugin_demo.nyash
// NYASH_CLI_VERBOSE=1 ./target/release/nyash --backend vm examples/array_plugin_demo.hako
static box Main {
main() {

View File

@ -2,7 +2,7 @@
// Build plugin:
// (cd plugins/nyash-array-plugin && cargo build --release)
// Run (plugin host auto-loads from nyash.toml):
// NYASH_CLI_VERBOSE=1 ./target/release/nyash --backend vm examples/array_plugin_set_demo.nyash
// NYASH_CLI_VERBOSE=1 ./target/release/nyash --backend vm examples/array_plugin_set_demo.hako
static box Main {
main() {

View File

@ -1,6 +1,6 @@
// ConsoleBox native build test - simplest version
// Build native:
// ./tools/build_aot.sh examples/console_native_simple.nyash console_simple
// ./tools/build_aot.sh examples/console_native_simple.hako console_simple
static box Main {
main() {

View File

@ -1,7 +1,7 @@
// ConsoleBox native build test - minimal example
// Build native:
// cargo build --release --features cranelift-jit
// ./tools/build_aot.sh examples/console_native_test.nyash console_app
// ./tools/build_aot.sh examples/console_native_test.hako console_app
static box Main {
greet(name) {

View File

@ -1,5 +1,5 @@
// Cycle test A -> B -> A
using "examples/cycle_b.nyash"
using "examples/cycle_b.hako"
static box A {
main() {

View File

@ -1,5 +1,5 @@
// Cycle test B -> A
using "examples/cycle_a.nyash"
using "examples/cycle_a.hako"
static box B {
main() {

View File

@ -1,6 +1,6 @@
// GC Counting demo (VM path) — verifies CountingGc counters and barrier sites
// Run:
// ./target/release/nyash --backend vm examples/gc_counting_demo.nyash
// ./target/release/nyash --backend vm examples/gc_counting_demo.hako
// Expect (with trace): [GC] counters: safepoints>0 read_barriers>=0 write_barriers>=0
static box Main {

View File

@ -1,6 +1,6 @@
static box Main {
main() {
using "examples/include_math.nyash" as include_math
using "examples/include_math.hako" as include_math
return include_math
}
}

View File

@ -1,6 +1,6 @@
static box Main {
main() {
using "examples/include_math.nyash" as Math
using "examples/include_math.hako" as Math
local r = Math.add(1, 2)
return r
}

View File

@ -1,7 +1,7 @@
// jit-direct: boolean return normalization
// Build: cargo build --release --features cranelift-jit
// Run: NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 \
// ./target/release/nyash --jit-direct examples/jit_direct_bool_ret.nyash
// ./target/release/nyash --jit-direct examples/jit_direct_bool_ret.hako
static box Main {
main() {

View File

@ -1,7 +1,7 @@
// jit-direct: f64 return demo
// Build: cargo build --release --features cranelift-jit
// Run: NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_NATIVE_F64=1 \
// ./target/release/nyash --jit-direct examples/jit_direct_f64_ret.nyash
// ./target/release/nyash --jit-direct examples/jit_direct_f64_ret.hako
static box Main {
main() {

View File

@ -1,7 +1,7 @@
// jit-direct: minimal local Store/Load path
// Build: cargo build --release --features cranelift-jit
// Run: NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 \
// ./target/release/nyash --jit-direct examples/jit_direct_local_store_load.nyash
// ./target/release/nyash --jit-direct examples/jit_direct_local_store_load.hako
static box Main {
main() {

View File

@ -1,7 +1,7 @@
// f64 E2E demo (Cranelift JIT)
// Build: cargo build --release --features cranelift-jit
// Run: NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_NATIVE_F64=1 \
// ./target/release/nyash --backend vm examples/jit_f64_e2e_add_compare.nyash
// ./target/release/nyash --backend vm examples/jit_f64_e2e_add_compare.hako
static box Main {
main() {

View File

@ -1,5 +1,5 @@
// Fallback case: Array.append/push is mutating; with read-only policy it should fallback
// Run: NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 ./target/release/nyash --backend vm examples/jit_hostcall_array_append.nyash
// Run: NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 ./target/release/nyash --backend vm examples/jit_hostcall_array_append.hako
static box Main {
main() {

View File

@ -2,7 +2,7 @@
// Expect: decision="fallback", reason="policy_denied_mutating"
// Run:
// NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_EVENTS=1 NYASH_JIT_HOSTCALL=1 \
// ./target/release/nyash --backend vm examples/jit_hostcall_array_push_mutating.nyash
// ./target/release/nyash --backend vm examples/jit_hostcall_array_push_mutating.hako
static box Main {
main() {

View File

@ -1,5 +1,5 @@
// Success case: String.length() via JIT hostcall (read-only)
// Run: NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 ./target/release/nyash --backend vm examples/jit_hostcall_len_string.nyash
// Run: NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 ./target/release/nyash --backend vm examples/jit_hostcall_len_string.hako
static box Main {
main() {

View File

@ -2,7 +2,7 @@
// Expect: decision="allow", arg_types=["Handle","Handle"]
// Run:
// NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_EVENTS=1 NYASH_JIT_HOSTCALL=1 \
// ./target/release/nyash --backend vm examples/jit_hostcall_map_get_handle.nyash
// ./target/release/nyash --backend vm examples/jit_hostcall_map_get_handle.hako
static box Main {
main() {

View File

@ -1,7 +1,7 @@
// Allow case: math.sin expects f64; JIT records sig_ok (allow) and VM executes (thin bridge)
// Run:
// NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_EVENTS=1 \
// ./target/release/nyash --backend vm examples/jit_hostcall_math_sin_allow_float.nyash
// ./target/release/nyash --backend vm examples/jit_hostcall_math_sin_allow_float.hako
static box Main {
main() {

View File

@ -1,7 +1,7 @@
// Allow via coercion: math.sin expects f64; integer arg coerces i64->f64 in signature check
// Run:
// NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_NATIVE_F64=1 NYASH_JIT_HOSTCALL=1 NYASH_JIT_EVENTS=1 \
// ./target/release/nyash --backend vm examples/jit_hostcall_math_sin_allow_int_coerce.nyash
// ./target/release/nyash --backend vm examples/jit_hostcall_math_sin_allow_int_coerce.hako
static box Main {
main() {

View File

@ -1,5 +1,5 @@
// Boundary case: math.sin expects f64; v0 emits sig_mismatch fallback event
// Run: NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_EVENTS=1 ./target/release/nyash --backend vm examples/jit_hostcall_math_sin_mismatch.nyash
// Run: NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_EVENTS=1 ./target/release/nyash --backend vm examples/jit_hostcall_math_sin_mismatch.hako
static box Main {
main() {

View File

@ -2,7 +2,7 @@
// Expect: JIT hostcall allow for nyash.map.get_hh (Handle,Handle)
// Run:
// NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_HOSTCALL=1 NYASH_JIT_EVENTS=1 \
// ./target/release/nyash --backend vm examples/jit_map_get_param_hh.nyash
// ./target/release/nyash --backend vm examples/jit_map_get_param_hh.hako
box Helper {
birth() {

View File

@ -1,7 +1,7 @@
// Function-style math: abs(x)
// Run:
// NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_NATIVE_F64=1 NYASH_JIT_EVENTS=1 \
// ./target/release/nyash --backend vm examples/jit_math_function_style_abs_float.nyash
// ./target/release/nyash --backend vm examples/jit_math_function_style_abs_float.hako
static box Main {
main() {

View File

@ -1,7 +1,7 @@
// Function-style math: cos(x)
// Run:
// NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_NATIVE_F64=1 NYASH_JIT_EVENTS=1 \
// ./target/release/nyash --backend vm examples/jit_math_function_style_cos_float.nyash
// ./target/release/nyash --backend vm examples/jit_math_function_style_cos_float.hako
static box Main {
main() {

View File

@ -1,7 +1,7 @@
// Function-style math: max(a,b)
// Run:
// NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_NATIVE_F64=1 NYASH_JIT_EVENTS=1 \
// ./target/release/nyash --backend vm examples/jit_math_function_style_max_float.nyash
// ./target/release/nyash --backend vm examples/jit_math_function_style_max_float.hako
static box Main {
main() {

View File

@ -1,7 +1,7 @@
// Function-style math: min(a,b)
// Run:
// NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_NATIVE_F64=1 NYASH_JIT_EVENTS=1 \
// ./target/release/nyash --backend vm examples/jit_math_function_style_min_float.nyash
// ./target/release/nyash --backend vm examples/jit_math_function_style_min_float.hako
static box Main {
main() {

View File

@ -1,7 +1,7 @@
// Function-style math: sin(x) should normalize to MathBox.sin(x)
// Run:
// NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_NATIVE_F64=1 NYASH_JIT_EVENTS=1 \
// ./target/release/nyash --backend vm examples/jit_math_function_style_sin_float.nyash
// ./target/release/nyash --backend vm examples/jit_math_function_style_sin_float.hako
static box Main {
main() {

View File

@ -2,7 +2,7 @@
// Expect: decision="allow(coerce_f64)", arg_types=["I64","F64"]
// Run:
// NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_NATIVE_F64=1 NYASH_JIT_RELAX_NUMERIC=1 NYASH_JIT_EVENTS=1 \
// ./target/release/nyash --backend vm examples/jit_math_min_relax_numeric.nyash
// ./target/release/nyash --backend vm examples/jit_math_min_relax_numeric.hako
static box Main {
main() {

View File

@ -2,7 +2,7 @@
// Run:
// NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_HOSTCALL=1 \
// NYASH_JIT_EVENTS=1 NYASH_JIT_NATIVE_F64=1 \
// ./target/release/nyash --backend vm examples/jit_math_native_f64.nyash
// ./target/release/nyash --backend vm examples/jit_math_native_f64.hako
box Runner {
birth() {

View File

@ -4,7 +4,7 @@
// Run:
// NYASH_USE_PLUGIN_BUILTINS=1 NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 \
// NYASH_JIT_SHIM_TRACE=1 NYASH_CLI_VERBOSE=1 \
// ./target/release/nyash --backend vm examples/jit_plugin_invoke_box_helper.nyash
// ./target/release/nyash --backend vm examples/jit_plugin_invoke_box_helper.hako
box Helper {
helper(arr) {

View File

@ -4,7 +4,7 @@
// Run:
// NYASH_USE_PLUGIN_BUILTINS=1 NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 \
// NYASH_JIT_SHIM_TRACE=1 NYASH_CLI_VERBOSE=1 \
// ./target/release/nyash --backend vm examples/jit_plugin_invoke_global_helper.nyash
// ./target/release/nyash --backend vm examples/jit_plugin_invoke_global_helper.hako
helper(arr) {
// JIT target: plugin_invoke on parameter only

View File

@ -9,7 +9,7 @@
// Run (JIT helper only):
// NYASH_USE_PLUGIN_BUILTINS=1 NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 \
// NYASH_JIT_SHIM_TRACE=1 NYASH_CLI_VERBOSE=1 \
// ./target/release/nyash --backend vm examples/jit_plugin_invoke_param_array.nyash
// ./target/release/nyash --backend vm examples/jit_plugin_invoke_param_array.hako
static box Main {
main() {

View File

@ -4,7 +4,7 @@
// Run:
// NYASH_USE_PLUGIN_BUILTINS=1 NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 \
// NYASH_JIT_SHIM_TRACE=1 NYASH_CLI_VERBOSE=1 \
// ./target/release/nyash --backend vm examples/jit_plugin_invoke_static_helper.nyash
// ./target/release/nyash --backend vm examples/jit_plugin_invoke_static_helper.hako
static box Helper {
static helper(arr) {

View File

@ -3,7 +3,7 @@
// 2) Whitelist nyash.array.push_h → allow + execute
// Run:
// NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_HOSTCALL=1 NYASH_JIT_EVENTS=1 \
// ./target/release/nyash --backend vm examples/jit_policy_optin_mutating.nyash
// ./target/release/nyash --backend vm examples/jit_policy_optin_mutating.hako
box Helper {
birth() {}

View File

@ -2,7 +2,7 @@
// Goal: show fallback on read_only, then allow after whitelist.
// Run (Cranelift enabled recommended):
// cargo build --release -j32 --features cranelift-jit
// NYASH_JIT_HOSTCALL=1 ./target/release/nyash --backend vm examples/jit_policy_whitelist_demo.nyash
// NYASH_JIT_HOSTCALL=1 ./target/release/nyash --backend vm examples/jit_policy_whitelist_demo.hako
// Check events file:
// cat policy_events.jsonl # contains phase=lower/execute decisions

Some files were not shown because too many files have changed in this diff Show More