deprecations: warn-once for nyash.toml (already wired) + child_env audit (spawns use helper); docs sweep to prefer and hako.toml in README.*; smokes: add Core‑Direct negative rc canaries (array oob set, map bad key) and verified quick/core core_direct suite green

This commit is contained in:
nyash-codex
2025-11-02 19:02:23 +09:00
parent 65aa79b575
commit cf3908d438
5 changed files with 77 additions and 9 deletions

View File

@ -27,6 +27,7 @@ JSON_OUT=""
MIR_OUT=""
EXE_OUT=""
DO_RUN=0
KEEP_TMP=0
while [ $# -gt 0 ]; do
case "$1" in
@ -34,6 +35,7 @@ while [ $# -gt 0 ]; do
--json) JSON_OUT="$2"; shift 2;;
--run) DO_RUN=1; shift;;
--mir) MIR_OUT="$2"; shift 2;;
--keep-tmp) KEEP_TMP=1; shift;;
--exe) EXE_OUT="$2"; shift 2;;
*) echo "[selfhost] unknown arg: $1" >&2; exit 2;;
esac
@ -122,8 +124,10 @@ if [ -n "$EXE_OUT" ]; then
"$NYLL" --in "$MIR_TMP" --emit exe --nyrt "$NYRT_DIR" --out "$EXE_OUT"
# Cleanup
if [ -z "$JSON_OUT" ]; then rm -f "$tmp_json" 2>/dev/null || true; fi
if [ -z "$MIR_OUT" ]; then rm -f "$MIR_TMP" 2>/dev/null || true; fi
if [ "$KEEP_TMP" != "1" ]; then
if [ -z "$JSON_OUT" ]; then rm -f "$tmp_json" 2>/dev/null || true; fi
if [ -z "$MIR_OUT" ]; then rm -f "$MIR_TMP" 2>/dev/null || true; fi
fi
exit 0
fi
@ -135,7 +139,7 @@ if [ "$DO_RUN" = "1" ]; then
"$BIN" --json-file "$tmp_json" >/dev/null 2>&1
rc=$?
set -e
if [ -z "$JSON_OUT" ]; then rm -f "$tmp_json" 2>/dev/null || true; fi
if [ "$KEEP_TMP" != "1" ] && [ -z "$JSON_OUT" ]; then rm -f "$tmp_json" 2>/dev/null || true; fi
exit $rc
else
# Emit-only

View File

@ -0,0 +1,32 @@
#!/bin/bash
# core_direct_array_oob_set_rc_vm.sh — Core Direct: array out-of-bounds set → nonzero rc
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
if ROOT_GIT=$(git -C "$SCRIPT_DIR" rev-parse --show-toplevel 2>/dev/null); then
ROOT="$ROOT_GIT"
else
ROOT="$(cd "$SCRIPT_DIR/../../../../../../../../.." && pwd)"
fi
source "$ROOT/tools/smokes/v2/lib/test_runner.sh"
source "$ROOT/tools/smokes/v2/lib/stageb_helpers.sh"
require_env || exit 2
# Set index=5 on a 3-size array → OOB should trigger rc != 0 under CoreDirect
code='static box Main { method main(args) { local a=ArrayBox(); a.push(1); a.push(2); a.push(3); a.set(5, 9); return 0 } }'
json=$(stageb_compile_to_json "$code") || { echo "[FAIL] core_direct_array_oob_set_rc_vm (emit failed)" >&2; exit 1; }
set +e
NYASH_GATE_C_CORE=1 HAKO_GATE_C_CORE=1 HAKO_CORE_DIRECT=1 \
NYASH_QUIET=1 HAKO_QUIET=1 NYASH_CLI_VERBOSE=0 NYASH_NYRT_SILENT_RESULT=1 \
"$NYASH_BIN" --json-file "$json" >/dev/null 2>&1
rc=$?
set -e
rm -f "$json"
if [ "$rc" -ne 0 ]; then
echo "[PASS] core_direct_array_oob_set_rc_vm"
else
echo "[FAIL] core_direct_array_oob_set_rc_vm (rc=$rc)" >&2; exit 1
fi

View File

@ -0,0 +1,32 @@
#!/bin/bash
# core_direct_map_bad_key_rc_vm.sh — Core Direct: Map.get with non-string key → nonzero rc
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
if ROOT_GIT=$(git -C "$SCRIPT_DIR" rev-parse --show-toplevel 2>/dev/null); then
ROOT="$ROOT_GIT"
else
ROOT="$(cd "$SCRIPT_DIR/../../../../../../../../.." && pwd)"
fi
source "$ROOT/tools/smokes/v2/lib/test_runner.sh"
source "$ROOT/tools/smokes/v2/lib/stageb_helpers.sh"
require_env || exit 2
# Map.get requires string key; using int key should raise [map/bad-key] and map to rc != 0
code='static box Main { method main(args) { local m=MapBox(); local x=m.get(123); return 0 } }'
json=$(stageb_compile_to_json "$code") || { echo "[FAIL] core_direct_map_bad_key_rc_vm (emit failed)" >&2; exit 1; }
set +e
NYASH_GATE_C_CORE=1 HAKO_GATE_C_CORE=1 HAKO_CORE_DIRECT=1 \
NYASH_QUIET=1 HAKO_QUIET=1 NYASH_CLI_VERBOSE=0 NYASH_NYRT_SILENT_RESULT=1 \
"$NYASH_BIN" --json-file "$json" >/dev/null 2>&1
rc=$?
set -e
rm -f "$json"
if [ "$rc" -ne 0 ]; then
echo "[PASS] core_direct_map_bad_key_rc_vm"
else
echo "[FAIL] core_direct_map_bad_key_rc_vm (rc=$rc)" >&2; exit 1
fi