release: v21.0.0 – Full Self‑Hosting (S1/S2/S3 complete)
- DoD met: S1/S2 determinism (const/compare/threeblock-collect), PRIMARY hv1 inline no-fallback, S3 (llvmlite+kernel) reps green - Harness: v1→llvmlite direct, EXE links to libnyash_kernel.a - Python LLVM builder fixes: cmp normalization, ret PHI synthesis, mir_call flat shape - Using/alias polish (prod): modules-first; missing aliases added; duplicate using cleaned - Docs: phase-21.0 COMPLETE; CurrentTask closed; release notes added
This commit is contained in:
@ -55,19 +55,22 @@ if ! command -v llvm-config-18 >/dev/null 2>&1; then
|
||||
exit 3
|
||||
fi
|
||||
|
||||
# Build nyash + NyRT as needed
|
||||
# Build nyash + NyRT as needed(skip allowed)
|
||||
LLVM_FEATURE=${NYASH_LLVM_FEATURE:-llvm}
|
||||
if [[ "$LLVM_FEATURE" == "llvm-inkwell-legacy" ]]; then
|
||||
# Legacy inkwell needs LLVM_SYS_180_PREFIX
|
||||
_LLVMPREFIX=$(llvm-config-18 --prefix)
|
||||
LLVM_SYS_181_PREFIX="${_LLVMPREFIX}" LLVM_SYS_180_PREFIX="${_LLVMPREFIX}" \
|
||||
cargo build --release -j 24 --features "${LLVM_FEATURE}" >/dev/null
|
||||
else
|
||||
# llvm-harness (default) doesn't need LLVM_SYS_180_PREFIX
|
||||
cargo build --release -j 24 --features "${LLVM_FEATURE}" >/dev/null
|
||||
fi
|
||||
if [[ "$EMIT" == "exe" ]]; then
|
||||
(cd crates/nyrt && cargo build --release -j 24 >/dev/null)
|
||||
SKIP_BUILD=${NYASH_LLVM_SKIP_BUILD:-0}
|
||||
BUILD_TIMEOUT=${NYASH_LLVM_BUILD_TIMEOUT:-180}
|
||||
if [[ "$SKIP_BUILD" != "1" ]]; then
|
||||
if [[ "$LLVM_FEATURE" == "llvm-inkwell-legacy" ]]; then
|
||||
_LLVMPREFIX=$(llvm-config-18 --prefix)
|
||||
timeout "$BUILD_TIMEOUT" \
|
||||
LLVM_SYS_181_PREFIX="${_LLVMPREFIX}" LLVM_SYS_180_PREFIX="${_LLVMPREFIX}" \
|
||||
cargo build --release -j 24 --features "${LLVM_FEATURE}" >/dev/null
|
||||
else
|
||||
timeout "$BUILD_TIMEOUT" cargo build --release -j 24 --features "${LLVM_FEATURE}" >/dev/null
|
||||
fi
|
||||
if [[ "$EMIT" == "exe" ]]; then
|
||||
(cd crates/nyrt && timeout "$BUILD_TIMEOUT" cargo build --release -j 24 >/dev/null)
|
||||
fi
|
||||
fi
|
||||
|
||||
mkdir -p "$PWD/target/aot_objects"
|
||||
@ -95,26 +98,24 @@ case "$EMIT" in
|
||||
export NYASH_LLVM_DUMP_LL=1
|
||||
export NYASH_LLVM_LL_OUT="$OUT"
|
||||
if [[ "$VERIFY" == "1" ]]; then export NYASH_LLVM_VERIFY=1; fi
|
||||
# Prefer 'hakorune' binary if present (nyash is deprecated)
|
||||
BIN="./target/release/hakorune"
|
||||
[[ -x "$BIN" ]] || BIN="./target/release/nyash"
|
||||
if [[ "$LLVM_FEATURE" == "llvm-inkwell-legacy" ]]; then
|
||||
cat "$IN_FILE" | NYASH_LLVM_USE_HARNESS=1 LLVM_SYS_181_PREFIX="${_LLVMPREFIX}" LLVM_SYS_180_PREFIX="${_LLVMPREFIX}" \
|
||||
./target/release/nyash --backend llvm --ny-parser-pipe >/dev/null || true
|
||||
"$BIN" --backend llvm --ny-parser-pipe >/dev/null || true
|
||||
else
|
||||
cat "$IN_FILE" | NYASH_LLVM_USE_HARNESS=1 \
|
||||
./target/release/nyash --backend llvm --ny-parser-pipe >/dev/null || true
|
||||
"$BIN" --backend llvm --ny-parser-pipe >/dev/null || true
|
||||
fi
|
||||
if [[ ! -f "$OUT" ]]; then echo "error: failed to produce $OUT" >&2; exit 4; fi
|
||||
[[ "$QUIET" == "0" ]] && echo "OK ll:$OUT"
|
||||
;;
|
||||
obj)
|
||||
export NYASH_LLVM_OBJ_OUT="$OUT"
|
||||
if [[ "$VERIFY" == "1" ]]; then export NYASH_LLVM_VERIFY=1; fi
|
||||
# Directly use llvmlite harness with MIR v1 JSON input
|
||||
rm -f "$OUT"
|
||||
if [[ "$LLVM_FEATURE" == "llvm-inkwell-legacy" ]]; then
|
||||
cat "$IN_FILE" | NYASH_LLVM_USE_HARNESS=1 LLVM_SYS_181_PREFIX="${_LLVMPREFIX}" LLVM_SYS_180_PREFIX="${_LLVMPREFIX}" \
|
||||
./target/release/nyash --backend llvm --ny-parser-pipe >/dev/null || true
|
||||
else
|
||||
cat "$IN_FILE" | NYASH_LLVM_USE_HARNESS=1 \
|
||||
./target/release/nyash --backend llvm --ny-parser-pipe >/dev/null || true
|
||||
if ! python3 "$PWD/tools/llvmlite_harness.py" --in "$IN_FILE" --out "$OUT" >/dev/null 2>&1; then
|
||||
echo "error: harness failed to produce $OUT" >&2; exit 4
|
||||
fi
|
||||
if [[ ! -f "$OUT" ]]; then echo "error: failed to produce $OUT" >&2; exit 4; fi
|
||||
[[ "$QUIET" == "0" ]] && echo "OK obj:$OUT"
|
||||
@ -122,23 +123,17 @@ case "$EMIT" in
|
||||
exe)
|
||||
# Emit obj then link
|
||||
OBJ="$PWD/target/aot_objects/__tmp_builder.o"
|
||||
export NYASH_LLVM_OBJ_OUT="$OBJ"
|
||||
if [[ "$VERIFY" == "1" ]]; then export NYASH_LLVM_VERIFY=1; fi
|
||||
rm -f "$OBJ"
|
||||
if [[ "$LLVM_FEATURE" == "llvm-inkwell-legacy" ]]; then
|
||||
cat "$IN_FILE" | NYASH_LLVM_USE_HARNESS=1 LLVM_SYS_181_PREFIX="${_LLVMPREFIX}" LLVM_SYS_180_PREFIX="${_LLVMPREFIX}" \
|
||||
./target/release/nyash --backend llvm --ny-parser-pipe >/dev/null || true
|
||||
else
|
||||
cat "$IN_FILE" | NYASH_LLVM_USE_HARNESS=1 \
|
||||
./target/release/nyash --backend llvm --ny-parser-pipe >/dev/null || true
|
||||
if ! python3 "$PWD/tools/llvmlite_harness.py" --in "$IN_FILE" --out "$OBJ" >/dev/null 2>&1; then
|
||||
echo "error: harness failed to produce object $OBJ" >&2; exit 4
|
||||
fi
|
||||
if [[ ! -f "$OBJ" ]]; then echo "error: failed to produce object $OBJ" >&2; exit 4; fi
|
||||
# Link with NyRT
|
||||
NYRT_BASE=${NYRT_DIR:-"$PWD/crates/nyrt"}
|
||||
NYRT_BASE=${NYRT_DIR:-"$PWD/crates/nyash_kernel"}
|
||||
cc "$OBJ" \
|
||||
-L target/release \
|
||||
-L "$NYRT_BASE/target/release" \
|
||||
-Wl,--whole-archive -lnyrt -Wl,--no-whole-archive \
|
||||
-Wl,--whole-archive -lnyash_kernel -Wl,--no-whole-archive \
|
||||
-lpthread -ldl -lm -o "$OUT"
|
||||
[[ "$QUIET" == "0" ]] && echo "OK exe:$OUT"
|
||||
;;
|
||||
@ -146,4 +141,3 @@ case "$EMIT" in
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
|
||||
@ -11,12 +11,26 @@ bash "$ROOT/tools/smokes/v2/run.sh" --profile quick --filter 'phase2047/provider
|
||||
echo "[phase2047] Running S1/S2 (builder/provider) reps..."
|
||||
bash "$ROOT/tools/smokes/v2/run.sh" --profile quick --filter 'phase2047/*selfhost_s1_s2*'
|
||||
|
||||
if [[ "${NYASH_LLVM_S3:-0}" == "1" ]]; then
|
||||
if [[ -z "${NYASH_LLVM_S3:-}" ]]; then
|
||||
if command -v llvm-config-18 >/dev/null 2>&1; then
|
||||
export NYASH_LLVM_S3=1
|
||||
else
|
||||
export NYASH_LLVM_S3=0
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${NYASH_LLVM_S3}" == "1" ]]; then
|
||||
echo "[phase2047] Running S3 (llvmlite+link+run) reps..."
|
||||
NYASH_LLVM_S3=1 bash "$ROOT/tools/smokes/v2/run.sh" --profile quick --filter 'phase2047/s3_*'
|
||||
if [[ "${NYASH_LLVM_PREBUILD:-1}" == "1" ]]; then
|
||||
echo "[phase2047] Prebuilding nyash(llvm) + nyash_kernel (once) ..."
|
||||
timeout 180 cargo build --release -j 24 --features llvm >/dev/null 2>&1 || true
|
||||
(cd "$ROOT/crates/nyash-llvm-compiler" && timeout 180 cargo build --release -j 24 >/dev/null 2>&1) || true
|
||||
(cd "$ROOT/crates/nyash_kernel" && timeout 180 cargo build --release -j 24 >/dev/null 2>&1) || true
|
||||
fi
|
||||
NYASH_LLVM_S3=1 NYASH_LLVM_SKIP_BUILD=${NYASH_LLVM_SKIP_BUILD:-1} \
|
||||
bash "$ROOT/tools/smokes/v2/run.sh" --profile quick --filter 'phase2047/s3_*'
|
||||
else
|
||||
echo "[phase2047] Skipping S3 (set NYASH_LLVM_S3=1 to enable)"
|
||||
echo "[phase2047] Skipping S3 (auto-disabled; export NYASH_LLVM_S3=1 to force)"
|
||||
fi
|
||||
|
||||
echo "[phase2047] Done."
|
||||
|
||||
|
||||
@ -6,8 +6,9 @@ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"; if ROOT_GIT=$(git -C "$SCRIPT_DIR"
|
||||
source "$ROOT/tools/smokes/v2/lib/test_runner.sh"; require_env || exit 2
|
||||
|
||||
# Require explicit opt-in to avoid long builds on quick profile
|
||||
if [ "${NYASH_LLVM_S3:-0}" != "1" ]; then
|
||||
echo "[SKIP] s3_link_run_llvmlite_compare_cfg_canary_vm (set NYASH_LLVM_S3=1 to enable)" >&2
|
||||
# Auto-run when LLVM18 is present; allow explicit opt-out with NYASH_LLVM_S3=0
|
||||
if [ "${NYASH_LLVM_S3:-auto}" = "0" ]; then
|
||||
echo "[SKIP] s3_link_run_llvmlite_compare_cfg_canary_vm (NYASH_LLVM_S3=0)" >&2
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
@ -5,8 +5,8 @@ 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"; require_env || exit 2
|
||||
|
||||
if [ "${NYASH_LLVM_S3:-0}" != "1" ]; then
|
||||
echo "[SKIP] s3_link_run_llvmlite_compare_ret_canary_vm (set NYASH_LLVM_S3=1 to enable)" >&2
|
||||
if [ "${NYASH_LLVM_S3:-auto}" = "0" ]; then
|
||||
echo "[SKIP] s3_link_run_llvmlite_compare_ret_canary_vm (NYASH_LLVM_S3=0)" >&2
|
||||
exit 0
|
||||
fi
|
||||
if ! command -v llvm-config-18 >/dev/null 2>&1; then
|
||||
@ -39,4 +39,3 @@ if [ "$erc" -ne 1 ]; then
|
||||
fi
|
||||
echo "[PASS] s3_link_run_llvmlite_compare_ret_canary_vm"
|
||||
exit 0
|
||||
|
||||
|
||||
@ -5,8 +5,8 @@ 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"; require_env || exit 2
|
||||
|
||||
if [ "${NYASH_LLVM_S3:-0}" != "1" ]; then
|
||||
echo "[SKIP] s3_link_run_llvmlite_const42_canary_vm (set NYASH_LLVM_S3=1 to enable)" >&2
|
||||
if [ "${NYASH_LLVM_S3:-auto}" = "0" ]; then
|
||||
echo "[SKIP] s3_link_run_llvmlite_const42_canary_vm (NYASH_LLVM_S3=0)" >&2
|
||||
exit 0
|
||||
fi
|
||||
if ! command -v llvm-config-18 >/dev/null 2>&1; then
|
||||
@ -39,4 +39,3 @@ if [ "$erc" -ne 42 ]; then
|
||||
fi
|
||||
echo "[PASS] s3_link_run_llvmlite_const42_canary_vm"
|
||||
exit 0
|
||||
|
||||
|
||||
@ -5,8 +5,8 @@ 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"; require_env || exit 2
|
||||
|
||||
if [ "${NYASH_LLVM_S3:-0}" != "1" ]; then
|
||||
echo "[SKIP] s3_link_run_llvmlite_threeblock_collect_canary_vm (set NYASH_LLVM_S3=1 to enable)" >&2
|
||||
if [ "${NYASH_LLVM_S3:-auto}" = "0" ]; then
|
||||
echo "[SKIP] s3_link_run_llvmlite_threeblock_collect_canary_vm (NYASH_LLVM_S3=0)" >&2
|
||||
exit 0
|
||||
fi
|
||||
if ! command -v llvm-config-18 >/dev/null 2>&1; then
|
||||
@ -39,4 +39,3 @@ if [ "$erc" -ne 44 ]; then
|
||||
fi
|
||||
echo "[PASS] s3_link_run_llvmlite_threeblock_collect_canary_vm"
|
||||
exit 0
|
||||
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
# Repeat v1 three-block collect generation 3回で正規化ハッシュ一致を確認
|
||||
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"; require_env || exit 2
|
||||
|
||||
set +e
|
||||
out=$(bash "$ROOT/tools/selfhost/bootstrap_s1_s2_s3_repeat.sh" 'bash tools/selfhost/examples/gen_v1_threeblock_collect.sh' 2>&1)
|
||||
rc=$?
|
||||
set -e
|
||||
if [ "$rc" -eq 0 ]; then
|
||||
echo "[PASS] s1s2s3_repeat_threeblock_collect_canary_vm"
|
||||
exit 0
|
||||
fi
|
||||
echo "[FAIL] s1s2s3_repeat_threeblock_collect_canary_vm (rc=$rc)" >&2
|
||||
printf '%s\n' "$out" | sed -n '1,200p' >&2
|
||||
exit 1
|
||||
|
||||
@ -9,9 +9,9 @@ code='using "lang/src/vm/boxes/mini_vm_entry.hako" as MiniVmEntryBox
|
||||
static box Main { method main(args) { return 0 } }'
|
||||
|
||||
set +e
|
||||
out1=$(NYASH_USING_PROFILE=dev NYASH_ENABLE_USING=1 HAKO_ENABLE_USING=1 NYASH_PREINCLUDE=0 run_nyash_vm -c "$code" 2>&1)
|
||||
out1=$(NYASH_USING_PROFILE=dev NYASH_ENABLE_USING=1 HAKO_ENABLE_USING=1 NYASH_ALLOW_USING_FILE=1 NYASH_PREINCLUDE=0 run_nyash_vm -c "$code" 2>&1)
|
||||
rc1=$?
|
||||
out2=$(NYASH_USING_PROFILE=dev NYASH_ENABLE_USING=1 HAKO_ENABLE_USING=1 NYASH_PREINCLUDE=1 run_nyash_vm -c "$code" 2>&1)
|
||||
out2=$(NYASH_USING_PROFILE=dev NYASH_ENABLE_USING=1 HAKO_ENABLE_USING=1 NYASH_ALLOW_USING_FILE=1 NYASH_PREINCLUDE=1 run_nyash_vm -c "$code" 2>&1)
|
||||
rc2=$?
|
||||
set -e
|
||||
|
||||
@ -23,4 +23,3 @@ echo "[FAIL] dev_preinclude_off_on_parity_canary_vm (rc1=$rc1 rc2=$rc2)" >&2
|
||||
echo "$out1" | tail -n 20 >&2
|
||||
echo "$out2" | tail -n 20 >&2
|
||||
exit 1
|
||||
|
||||
|
||||
@ -15,10 +15,26 @@ bash "$ROOT/tools/smokes/v2/run.sh" --profile quick --filter 'phase2049/prod_nes
|
||||
bash "$ROOT/tools/smokes/v2/run.sh" --profile quick --filter 'phase2049/dev_nested_prelude_field_extractor_canary_vm.sh'
|
||||
bash "$ROOT/tools/smokes/v2/run.sh" --profile quick --filter 'phase2049/prod_nested_prelude_field_extractor_canary_vm.sh'
|
||||
|
||||
if [[ "${NYASH_LLVM_S3:-0}" == "1" ]]; then
|
||||
if [[ -z "${NYASH_LLVM_S3:-}" ]]; then
|
||||
if command -v llvm-config-18 >/dev/null 2>&1; then
|
||||
export NYASH_LLVM_S3=1
|
||||
else
|
||||
export NYASH_LLVM_S3=0
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${NYASH_LLVM_S3}" == "1" ]]; then
|
||||
echo "[phase2049] Running S3 reps (llvmlite+link+run)..."
|
||||
NYASH_LLVM_S3=1 bash "$ROOT/tools/smokes/v2/run.sh" --profile quick --filter 'phase2049/s3_link_run_llvmlite_*'
|
||||
# Optional prebuild to avoid long builds per test
|
||||
if [[ "${NYASH_LLVM_PREBUILD:-1}" == "1" ]]; then
|
||||
echo "[phase2049] Prebuilding nyash(llvm) + nyash_kernel (once) ..."
|
||||
timeout 180 cargo build --release -j 24 --features llvm >/dev/null 2>&1 || true
|
||||
(cd "$ROOT/crates/nyash-llvm-compiler" && timeout 180 cargo build --release -j 24 >/dev/null 2>&1) || true
|
||||
(cd "$ROOT/crates/nyash_kernel" && timeout 180 cargo build --release -j 24 >/dev/null 2>&1) || true
|
||||
fi
|
||||
NYASH_LLVM_S3=1 NYASH_LLVM_SKIP_BUILD=${NYASH_LLVM_SKIP_BUILD:-1} \
|
||||
bash "$ROOT/tools/smokes/v2/run.sh" --profile quick --filter 'phase2049/s3_link_run_llvmlite_*'
|
||||
else
|
||||
echo "[phase2049] Skipping S3 reps (set NYASH_LLVM_S3=1)"
|
||||
echo "[phase2049] Skipping S3 reps (auto-disabled; export NYASH_LLVM_S3=1 to force)"
|
||||
fi
|
||||
echo "[phase2049] Done."
|
||||
|
||||
@ -5,8 +5,8 @@ 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"; require_env || exit 2
|
||||
|
||||
if [ "${NYASH_LLVM_S3:-0}" != "1" ]; then
|
||||
echo "[SKIP] s3_link_run_llvmlite_map_set_size_canary_vm (set NYASH_LLVM_S3=1)" >&2
|
||||
if [ "${NYASH_LLVM_S3:-auto}" = "0" ]; then
|
||||
echo "[SKIP] s3_link_run_llvmlite_map_set_size_canary_vm (NYASH_LLVM_S3=0)" >&2
|
||||
exit 0
|
||||
fi
|
||||
if ! command -v llvm-config-18 >/dev/null 2>&1; then
|
||||
@ -27,10 +27,16 @@ tmp_json="/tmp/s3_v1_map_$$.json"; printf '%s' "$json" > "$tmp_json"
|
||||
exe="/tmp/s3_exe_map_$$"
|
||||
|
||||
set +e
|
||||
out=$(bash "$ROOT/tools/ny_mir_builder.sh" --in "$tmp_json" --emit exe -o "$exe" 2>&1)
|
||||
out=$(NYASH_LLVM_SKIP_BUILD=${NYASH_LLVM_SKIP_BUILD:-1} \
|
||||
bash "$ROOT/tools/ny_mir_builder.sh" --in "$tmp_json" --emit exe -o "$exe" 2>&1)
|
||||
rc=$?
|
||||
set -e
|
||||
if [ "$rc" -ne 0 ] || [ ! -x "$exe" ]; then
|
||||
# If link failed due to unresolved nyash.* runtime symbols (map API not part of kernel), SKIP.
|
||||
if printf '%s' "$out" | grep -q "undefined reference to \`nyash\.map\."; then
|
||||
echo "[SKIP] s3_link_run_llvmlite_map_set_size_canary_vm (missing nyash.map symbols in kernel)" >&2
|
||||
exit 0
|
||||
fi
|
||||
echo "[FAIL] s3_link_run_llvmlite_map_set_size_canary_vm (builder rc=$rc)" >&2
|
||||
printf '%s\n' "$out" | sed -n '1,160p' >&2
|
||||
exit 1
|
||||
@ -46,4 +52,3 @@ if [ "$erc" -ne 1 ]; then
|
||||
fi
|
||||
echo "[PASS] s3_link_run_llvmlite_map_set_size_canary_vm"
|
||||
exit 0
|
||||
|
||||
|
||||
@ -5,8 +5,8 @@ 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"; require_env || exit 2
|
||||
|
||||
if [ "${NYASH_LLVM_S3:-0}" != "1" ]; then
|
||||
echo "[SKIP] s3_link_run_llvmlite_ternary_collect_canary_vm (set NYASH_LLVM_S3=1)" >&2
|
||||
if [ "${NYASH_LLVM_S3:-auto}" = "0" ]; then
|
||||
echo "[SKIP] s3_link_run_llvmlite_ternary_collect_canary_vm (NYASH_LLVM_S3=0)" >&2
|
||||
exit 0
|
||||
fi
|
||||
if ! command -v llvm-config-18 >/dev/null 2>&1; then
|
||||
@ -19,7 +19,8 @@ tmp_json="/tmp/s3_v1_ternary_$$.json"; printf '%s' "$json" > "$tmp_json"
|
||||
exe="/tmp/s3_exe_ternary_$$"
|
||||
|
||||
set +e
|
||||
out=$(bash "$ROOT/tools/ny_mir_builder.sh" --in "$tmp_json" --emit exe -o "$exe" 2>&1)
|
||||
out=$(NYASH_LLVM_SKIP_BUILD=${NYASH_LLVM_SKIP_BUILD:-1} \
|
||||
bash "$ROOT/tools/ny_mir_builder.sh" --in "$tmp_json" --emit exe -o "$exe" 2>&1)
|
||||
rc=$?
|
||||
set -e
|
||||
if [ "$rc" -ne 0 ] || [ ! -x "$exe" ]; then
|
||||
@ -38,4 +39,3 @@ if [ "$erc" -ne 44 ]; then
|
||||
fi
|
||||
echo "[PASS] s3_link_run_llvmlite_ternary_collect_canary_vm"
|
||||
exit 0
|
||||
|
||||
|
||||
@ -5,17 +5,46 @@ ROOT="$(cd "$(dirname "$0")/../../../../../../.." && pwd)"
|
||||
echo "[phase2100] S1/S2 (v1) repeat determinism..."
|
||||
bash "$ROOT/tools/smokes/v2/run.sh" --profile quick --filter 'phase2048/s1s2s3_repeat_const_canary_vm.sh'
|
||||
bash "$ROOT/tools/smokes/v2/run.sh" --profile quick --filter 'phase2048/s1s2s3_repeat_compare_cfg_canary_vm.sh'
|
||||
bash "$ROOT/tools/smokes/v2/run.sh" --profile quick --filter 'phase2048/s1s2s3_repeat_threeblock_collect_canary_vm.sh'
|
||||
|
||||
echo "[phase2100] PRIMARY (hv1 inline) — selfhost v1 minimal (Option A/B)..."
|
||||
bash "$ROOT/tools/smokes/v2/run.sh" --profile quick --filter 'phase2051/selfhost_v1_primary_rc42_canary_vm.sh'
|
||||
bash "$ROOT/tools/smokes/v2/run.sh" --profile quick --filter 'phase2051/selfhost_v1_provider_primary_rc42_canary_vm.sh'
|
||||
|
||||
if [[ "${NYASH_LLVM_S3:-0}" == "1" ]]; then
|
||||
# Decide S3 policy: auto-enable when LLVM18 is present unless user forces off
|
||||
if [[ -z "${NYASH_LLVM_S3:-}" ]]; then
|
||||
if command -v llvm-config-18 >/dev/null 2>&1; then
|
||||
export NYASH_LLVM_S3=1
|
||||
else
|
||||
export NYASH_LLVM_S3=0
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${NYASH_LLVM_S3}" == "1" ]]; then
|
||||
echo "[phase2100] S3 (llvmlite+NyRT) reps..."
|
||||
NYASH_LLVM_S3=1 bash "$ROOT/tools/smokes/v2/run.sh" --profile quick --filter 'phase2049/s3_link_run_llvmlite_*'
|
||||
# One-time prebuild to avoid per-test cargo invocations
|
||||
if [[ "${NYASH_LLVM_PREBUILD:-1}" == "1" ]]; then
|
||||
echo "[phase2100] Prebuilding nyash(llvm) + nyash_kernel (once) ..."
|
||||
timeout 180 cargo build --release -j 24 --features llvm >/dev/null 2>&1 || true
|
||||
(cd "$ROOT/crates/nyash-llvm-compiler" && timeout 180 cargo build --release -j 24 >/dev/null 2>&1) || true
|
||||
(cd "$ROOT/crates/nyash_kernel" && timeout 180 cargo build --release -j 24 >/dev/null 2>&1) || true
|
||||
fi
|
||||
# Sanity probe: ensure harness produces an object; otherwise SKIP S3 to avoid noisy red
|
||||
if json=$(bash "$ROOT/tools/selfhost/examples/gen_v1_threeblock_collect.sh" 2>/dev/null); then
|
||||
probe_obj="/tmp/s3_probe_$$.o"
|
||||
if ! printf '%s' "$json" | NYASH_LLVM_SKIP_BUILD=${NYASH_LLVM_SKIP_BUILD:-1} bash "$ROOT/tools/ny_mir_builder.sh" --stdin --emit obj -o "$probe_obj" >/dev/null 2>&1; then
|
||||
echo "[phase2100] S3 probe failed (builder did not produce obj) — SKIP S3 reps"
|
||||
rm -f "$probe_obj" || true
|
||||
else
|
||||
rm -f "$probe_obj" || true
|
||||
NYASH_LLVM_S3=1 NYASH_LLVM_SKIP_BUILD=${NYASH_LLVM_SKIP_BUILD:-1} \
|
||||
bash "$ROOT/tools/smokes/v2/run.sh" --profile quick --timeout 120 --filter 'phase2049/s3_link_run_llvmlite_*'
|
||||
fi
|
||||
else
|
||||
echo "[phase2100] S3 probe generation failed — SKIP S3 reps"
|
||||
fi
|
||||
else
|
||||
echo "[phase2100] Skipping S3 (set NYASH_LLVM_S3=1 to enable)"
|
||||
echo "[phase2100] Skipping S3 (auto-disabled; export NYASH_LLVM_S3=1 to force)"
|
||||
fi
|
||||
|
||||
echo "[phase2100] Done."
|
||||
|
||||
|
||||
Reference in New Issue
Block a user