Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 53s
Brings the architecture branch (559 commits ahead — R7RS step 4-6, JIT expansion, host_error wrapping, bytecode compiler, etc.) into the loops/haskell line of work. Conflict in lib/haskell/conformance.sh: architecture replaced the inline driver with a thin wrapper delegating to lib/guest/conformance.sh + a config file. Resolved by taking the wrapper and extending lib/haskell/conformance.conf with all programs added under loops/haskell (caesar, runlength-str, showadt, showio, partial, statistics, newton, wordfreq, mapgraph, uniquewords, setops, shapes, person, config, counter, accumulate, safediv, trycatch) plus adding map.sx and set.sx to PRELOADS. plans/haskell-completeness.md gains three new follow-up phases: - Phase 17 — parser polish (`(x :: Int)` annotations, mid-file imports) - Phase 18 — one ambitious conformance program (lambda-calc / Dijkstra / JSON parser candidate list) - Phase 19 — conformance speed (batch all suites in one sx_server process to compress the 25-min run to single-digit minutes) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
97 lines
3.5 KiB
Plaintext
97 lines
3.5 KiB
Plaintext
# Haskell-on-SX conformance config — sourced by lib/guest/conformance.sh.
|
|
|
|
LANG_NAME=haskell
|
|
MODE=counters
|
|
COUNTERS_PASS=hk-test-pass
|
|
COUNTERS_FAIL=hk-test-fail
|
|
TIMEOUT_PER_SUITE=120
|
|
|
|
PRELOADS=(
|
|
lib/haskell/tokenizer.sx
|
|
lib/haskell/layout.sx
|
|
lib/haskell/parser.sx
|
|
lib/haskell/desugar.sx
|
|
lib/haskell/runtime.sx
|
|
lib/haskell/match.sx
|
|
lib/haskell/eval.sx
|
|
lib/haskell/map.sx
|
|
lib/haskell/set.sx
|
|
lib/haskell/testlib.sx
|
|
)
|
|
|
|
SUITES=(
|
|
"fib:lib/haskell/tests/program-fib.sx"
|
|
"sieve:lib/haskell/tests/program-sieve.sx"
|
|
"quicksort:lib/haskell/tests/program-quicksort.sx"
|
|
"nqueens:lib/haskell/tests/program-nqueens.sx"
|
|
"calculator:lib/haskell/tests/program-calculator.sx"
|
|
"collatz:lib/haskell/tests/program-collatz.sx"
|
|
"palindrome:lib/haskell/tests/program-palindrome.sx"
|
|
"maybe:lib/haskell/tests/program-maybe.sx"
|
|
"fizzbuzz:lib/haskell/tests/program-fizzbuzz.sx"
|
|
"anagram:lib/haskell/tests/program-anagram.sx"
|
|
"roman:lib/haskell/tests/program-roman.sx"
|
|
"binary:lib/haskell/tests/program-binary.sx"
|
|
"either:lib/haskell/tests/program-either.sx"
|
|
"primes:lib/haskell/tests/program-primes.sx"
|
|
"zipwith:lib/haskell/tests/program-zipwith.sx"
|
|
"matrix:lib/haskell/tests/program-matrix.sx"
|
|
"wordcount:lib/haskell/tests/program-wordcount.sx"
|
|
"powers:lib/haskell/tests/program-powers.sx"
|
|
"caesar:lib/haskell/tests/program-caesar.sx"
|
|
"runlength-str:lib/haskell/tests/program-runlength-str.sx"
|
|
"showadt:lib/haskell/tests/program-showadt.sx"
|
|
"showio:lib/haskell/tests/program-showio.sx"
|
|
"partial:lib/haskell/tests/program-partial.sx"
|
|
"statistics:lib/haskell/tests/program-statistics.sx"
|
|
"newton:lib/haskell/tests/program-newton.sx"
|
|
"wordfreq:lib/haskell/tests/program-wordfreq.sx"
|
|
"mapgraph:lib/haskell/tests/program-mapgraph.sx"
|
|
"uniquewords:lib/haskell/tests/program-uniquewords.sx"
|
|
"setops:lib/haskell/tests/program-setops.sx"
|
|
"shapes:lib/haskell/tests/program-shapes.sx"
|
|
"person:lib/haskell/tests/program-person.sx"
|
|
"config:lib/haskell/tests/program-config.sx"
|
|
"counter:lib/haskell/tests/program-counter.sx"
|
|
"accumulate:lib/haskell/tests/program-accumulate.sx"
|
|
"safediv:lib/haskell/tests/program-safediv.sx"
|
|
"trycatch:lib/haskell/tests/program-trycatch.sx"
|
|
)
|
|
|
|
emit_scoreboard_json() {
|
|
local n=${#GC_NAMES[@]} i sep date_only
|
|
date_only=$(date '+%Y-%m-%d')
|
|
printf '{\n'
|
|
printf ' "date": "%s",\n' "$date_only"
|
|
printf ' "total_pass": %d,\n' "$GC_TOTAL_PASS"
|
|
printf ' "total_fail": %d,\n' "$GC_TOTAL_FAIL"
|
|
printf ' "programs": {\n'
|
|
for ((i=0; i<n; i++)); do
|
|
sep=","; [ $i -eq $((n-1)) ] && sep=""
|
|
printf ' "%s": {"pass": %d, "fail": %d}%s\n' \
|
|
"${GC_NAMES[$i]}" "${GC_PASS[$i]}" "${GC_FAIL[$i]}" "$sep"
|
|
done
|
|
printf ' }\n'
|
|
printf '}\n'
|
|
}
|
|
|
|
emit_scoreboard_md() {
|
|
local n=${#GC_NAMES[@]}
|
|
local i status p f t prog_pass=0 prog_total=$n date_only
|
|
date_only=$(date '+%Y-%m-%d')
|
|
for ((i=0; i<n; i++)); do
|
|
[ "${GC_FAIL[$i]}" -eq 0 ] && prog_pass=$((prog_pass + 1))
|
|
done
|
|
printf '# Haskell-on-SX Scoreboard\n\n'
|
|
printf 'Updated %s · Phase 6 (prelude extras + 18 programs)\n\n' "$date_only"
|
|
printf '| Program | Tests | Status |\n'
|
|
printf '|---------|-------|--------|\n'
|
|
for ((i=0; i<n; i++)); do
|
|
p=${GC_PASS[$i]}; f=${GC_FAIL[$i]}; t=${GC_TOTAL_S[$i]}
|
|
[ "$f" -eq 0 ] && status="✓" || status="✗"
|
|
printf '| %s.hs | %d/%d | %s |\n' "${GC_NAMES[$i]}" "$p" "$t" "$status"
|
|
done
|
|
printf '| **Total** | **%d/%d** | **%d/%d programs** |\n' \
|
|
"$GC_TOTAL_PASS" "$GC_TOTAL" "$prog_pass" "$prog_total"
|
|
}
|