Changelog
All notable user-facing releases of SparkLang (the Spark programming
language) are listed here. Site and installers track
website/downloads/manifest.json.
Site — 2026-09-04
- Homepage generated from
spark --status(python/sparklang/status.py). Agent contract: /llms.txt, /agent.md. - CI job
site-homepagedry-runs every snippet and runs the llms.txt-only fixture. Deploy:wrangler pages deploy website --project-name=sparklang-dev.
0.6.22 — 2026-09-02
--allow-shell:
./spark --live --allow-shell forks
./spark-shell, which execves allowlisted
echo / true / false only.
Never system(), never /bin/sh -c.
Gate: make test-shell.js/sparklang and host/c/sparklang.h.
./spark --embed advertises
api=python,js,c. Gate:
make test-host-embed.latency_ms; run-level
[accounting-run] via
spark-ask-http --rollup. Dry zeros.
Gate: make test-ask-gateway.0.6.17 — 2026-09-02
- Abstain held-out eval + continue-SAMPLE:
./spark-abstain --live evalstratified train/held-out, precision/recall/F1 (not production SOTA). Continue path: HF generate, SAMPLE_URL, or honest deferred. See Abstain heads.
0.6.16 — 2026-09-02
- Abstain real-dim corpus path: curated
corpus_seed.jsonl,validate-corpus, synthetic backbone export (dim 768) for dim-matched train/ask, optional env-gated HF smoke (local only, no CI downloads). See Abstain heads.
0.6.15 — 2026-09-02
- Abstain
/spark_hiddensidecar: HF FastAPI export beside stock vLLM (spark_hidden_sidecar.py), shared contract + client envSPARK_ABSTAIN_VLLM_URL/TIMEOUT/TOKEN. Stub kept for CI. See Abstain heads.
0.6.14 — 2026-09-02
- Abstain export→train (dim-matched):
./spark-abstain --live exportwrites JSONL hiddens from an explicit HF backbone or a CPU toy backbone. Fixtureslabels_text.jsonl/labels_exported.jsonl. Docs: Abstain heads. Gate:make test-abstain.
0.6.13 — 2026-09-02
- No Bifrost-style model alias pick: dry-run /
use autokeeps the prior configured model; live refuses--model auto. Explicit HF path /org/nameonly.
0.6.12 — 2026-09-02
- Abstain HF hooks: live
head askSELECT-before-SAMPLE from last-token hidden (file / HF / optional/spark_hidden). See Abstain heads.
0.6.11 — 2026-09-02
- Abstain / IDK heads:
head abstain|train|attach|ask+./spark-abstain. Not LoRA.
0.6.10 — 2026-09-02
- Python host embed:
from sparklang import rununderpython/sparklang/runs a.sparkpath or source string via thesparkCLI (dry-run default;live=Trueopt-in). Returns stdout / stderr / exit code; missing binary or path fails loud. ./spark --embedhandshake advertisesapi=python(JS / C FFI remain[next]).- Example:
examples/python/host_embed.py. Gate:make test-host-embed.
0.6.9 — 2026-09-02
- Language
method "…"onmodel train/model build(includesspark_faq_index). - Live GAS forwards the statement via
./spark-train-http --spark-line. - Live
model status "job-id"polls that job id — not hardcodedjob-dry-001. - Dry fixtures fail loud on unknown method or unknown status job id.
0.6.8 — 2026-09-02
- Fourth CPU train method:
spark_faq_index— FAQ corpus + dual-encoder retriever →faq_index.json+encoder.pt. Not LoRA / not a marker stub. Same HTTPmethodfield. - Example:
examples/model_train_faq.spark. - Docs / hero list four methods honestly.
0.6.7 — 2026-09-02
http get/http postauth + retries:bearer "TOKEN",header "Name: value",retries N,backoff MS(keep existingtimeout). Live curl sends real headers; retries only on documented transport exits (7/28/35/52/56) and HTTP 408/429/5xx subset. Dry-run still fixtures-only (missing fixture → exit 1; no fake network).- Examples:
http_get_auth.spark,http_get_auth_live.spark,http_get_retries_live.spark. - Gate:
make test-http/SPARK_HTTP_LIVE=1covers bearer + 503 retry proof.
0.6.6 — 2026-09-02
- Three CPU train methods (not LoRA) behind the same HTTP contract:
spark_distill_cpu→weights.pt;spark_pref_pack→pref_pack.json+ranker.pt;spark_playbook_fit→playbooks.json+router.pt. - Select via POST
method, companion--method, orSPARK_TRAIN_METHOD. - Live captures:
live-train-capture.txt,live-train-methods-capture.txt. - Hero / What's real today list the three methods honestly.
0.6.5 — 2026-09-02
- Custom train proof: reference trainer runs
spark_distill_cpu— tiny PyTorch student on CPU that mimics teacher replies from chat JSONL. Writes realweights.pt. Not LoRA / not HF PEFT / no voice GPU. Live capture via./spark --live examples/model_train.spark. - Hero: “Train specialists — CPU distill, not LoRA” (honest about what the reference path trains).
- One expect form on homepage / Learn / flagship examples:
expect contains NAME fixture "PATH". expect equal/expect contains: assert a bound name against a literal orfixture "PATH". Pass exits 0; fail exits 1 with the reason. Gate:make test-expect.- Flagship train→status→expect:
model train/model statusbind->names in dry-run soexpectcan assert. Homepage / Learn useexamples/train_eval.spark(exit 0); fail pathexamples/train_eval_fail.spark(exit 1). - Reference trainer:
tools/spark-train-ref(server.py+distill_cpu.py).
0.6.4 — 2026-09-02
- Landing thesis: homepage leads with train + dry-run CI (why a language:
reviewable
.spark+ fixtures without keys). Voice / network / browser demoted to “also”. Trust strip: MIT · v0.6.3+ · Sparklang naming; no broken personal GitHub CTA. model train/model build= real jobs;model plan= plan only.
0.6.1 — 2026-09-02
Status / feature pass:
- First-class
embed/retrieve+ dry fixtures +spark-rag-http(also #21). - Shell/run dry-run:
shell/runallowlist;./spark --embedstub. - Per-
ask[accounting](dry zeros; live prints gatewayusagewhen present). - Docs: ADOPTION_BAR, ROADMAP, RELEASE; receptionist
[goal]example. - Site: SparkLang searchability; de-emphasize MITM/pcap/IDE/voice-as-prod.
0.6.3 — 2026-09-02
- Model training pillar:
model train/model buildsubmit real training jobs;model statuspolls artifacts. Dry fixtures underexamples/fixtures/train/. Live companion./spark-train-http(SPARK_TRAIN_BACKEND=http|local-yield). Docs: Model training. model planreplaces blueprint-only markdown export.- Analyze / compare / improve stay eval helpers.
0.6.2 — 2026-09-02
- Product rename: public identity is SparkLang at https://sparklang.dev/ (site, docs, About, status). Public org source when ready.
- CLI: binary / bootstrap names stay
sparkand./spark-bootstrap(no overnight break). - IDE: language
ideops kept; editor story prefers LSP + highlighting. - Installer kit filenames / hashes remain 0.6.0 until the next packaging pass.
0.6.0 — 2026-09-02
- Runtime / installer kit 0.6.0 (see Downloads manifest).
- Language + dry-run runtime:
.sparkprograms, fixtures, compile/BC path, IDE language ops, playbooks. - Optional live
askvia any OpenAI-compatibleAI_GATEWAY_URL(not required for the default dry-run story). - Optional surfaces: voice/PSTN (gated), browser/MITM, network capture.
model analyze/compare/improve= eval helpers; train/build/status arrived in 0.6.3.
Earlier
Prior notes stay on this page and in the installer
manifest.json history. Binary downloads remain on
Downloads (Pages-hosted), not a public git forge.