Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ tools, automation and application code. Agent-friendly should also mean
review-friendly: inspectable source, explicit signatures, compiler queries and
structured diagnostics help people verify what changed.

The latest published SDK is [v0.7.1-beta.1](https://github.com/ColinHouse/Sprig/releases/tag/v0.7.1-beta.1); it requires a separate JDK (17 or newer for that release; the source on `main` and the next release require JDK 21+). Linux and macOS are release-supported. Windows is an experimental preview. Sprig uses a Java stage-0 compiler and is not self-hosted. Check the [release status](docs/releases/validation.md) and installed `sprig capabilities --json` for the exact implemented feature set.
The latest published SDK is [v0.8.0-beta.1](https://github.com/ColinHouse/Sprig/releases/tag/v0.8.0-beta.1); it requires a separate JDK 21 or newer. Linux and macOS are release-supported. Windows is an experimental preview. Sprig uses a Java stage-0 compiler and is not self-hosted. Check the [release status](docs/releases/validation.md) and installed `sprig capabilities --json` for the exact implemented feature set.

## A first look

Expand Down Expand Up @@ -56,6 +56,7 @@ SPR-TYPE-NULLABLE [TYPE] unchecked.spr:4:12: Cannot access 'getDayOfWeek' on a v

## Start here

- [Install the SDK](https://colinhouse.github.io/Sprig/en/guide/getting-started) and the [VS Code extension](https://marketplace.visualstudio.com/items?itemName=ColinHouse.sprig-language)
- [Beginner tutorial](https://colinhouse.github.io/Sprig/en/tutorial/)
- [中文教程](https://colinhouse.github.io/Sprig/tutorial)
- [Try the local Task Tracker](examples/task-tracker/README.md)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ compilerVersion=0.8.0-beta.1
languageVersion=0.8-dev
jdkMinimum=21
license=Apache-2.0
releaseStatus=development; based on v0.8.0-beta.1; latest published v0.7.1-beta.1
releaseStatus=development; based on v0.8.0-beta.1; latest published v0.8.0-beta.1
commands=help,version,check,build,run,test,codes,explain,capabilities,api,wrap,doctor,init,resolve,add,remove,search,publish,project,deps,upgrade,fmt,lsp
nativeTypes=Int,Int32,BigInt,Float,Float32,Decimal,Bool,String,Unit
collectionTypes=List[T];MutableList[T];Map[K,V];MutableMap[K,V]
Expand Down
2 changes: 2 additions & 0 deletions docs/projects/install.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Sprig SDK install and upgrade

The current published SDK is [v0.8.0-beta.1](https://github.com/ColinHouse/Sprig/releases/tag/v0.8.0-beta.1). It includes the 0.8 tutorial features and requires a separate JDK 21+; building from source is optional. The language version remains `0.8-dev`, independently of the SDK release version.

The managed SDK installer supports Linux and macOS with JDK 21+ (`java` and
`javac`), `curl`, `unzip`, and `shasum` or `sha256sum`. Windows remains an
experimental preview. The installer does not require Maven.
Expand Down
4 changes: 2 additions & 2 deletions docs/releases/v0.8.0-beta.1.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Sprig v0.8.0-beta.1

> The release body is this file as of the tag. The latest published SDK is
> [v0.7.1-beta.1](https://github.com/ColinHouse/Sprig/releases/tag/v0.7.1-beta.1); the version number follows the
> Published SDK: [v0.8.0-beta.1](https://github.com/ColinHouse/Sprig/releases/tag/v0.8.0-beta.1).
> The GitHub release body preserves this file as of the tag; the version number follows the
> [release and versioning policy](https://github.com/ColinHouse/Sprig/blob/main/docs/releases/release-policy.md): a new MINOR, because the
> release requires JDK 21 and ships a large feature set.

Expand Down
65 changes: 65 additions & 0 deletions docs/releases/validation-v0.7.1-beta.1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Release validation — Sprig v0.7.1-beta.1

This is the validation authority for the published `v0.7.1-beta.1` snapshot.
Published experimental Beta: compiler **0.7.1-beta.1**, language version
**0.8-dev**, JDK 17+, Apache-2.0. Linux and macOS are release-supported;
Windows is an experimental, non-blocking preview. This is not a production
stability or API compatibility promise. It is the first release under the
[release and versioning policy](release-policy.md), as a PATCH release.

## Published artifact

- [GitHub prerelease](https://github.com/ColinHouse/Sprig/releases/tag/v0.7.1-beta.1),
published **2026-10-07 03:52:22 UTC**.
- Annotated tag `v0.7.1-beta.1` targets
`b7fe68eb1cc98cb018f1d07e472d69d73acf4328`, the merge commit of #119.
- ZIP: [`sprig-v0.7.1-beta.1-jdk.zip`](https://github.com/ColinHouse/Sprig/releases/download/v0.7.1-beta.1/sprig-v0.7.1-beta.1-jdk.zip),
**6,189,534 bytes**.
- SHA-256: `be8b43520750870f4fdf080b119ac5fe3159e6a1adf8f0d8abd5e61bc334b81f`;
this matches the GitHub asset digest and the published
[`.sha256` file](https://github.com/ColinHouse/Sprig/releases/download/v0.7.1-beta.1/sprig-v0.7.1-beta.1-jdk.zip.sha256).
- Release workflow [run 37564884616](https://github.com/ColinHouse/Sprig/actions/runs/37564884616)
completed successfully. It built the exact tagged source, ran the tagged test
suite, then downloaded and smoke-tested the same release ZIP on four Linux/
macOS × JDK 17/26 jobs before publishing the prerelease.

## Verification evidence

| Evidence | Result |
|---|---|
| Release-preparation archive and integration checks | On the #119 branch, `package-alpha.py --skip-build` followed by `check-sdk-archive.py` passed (offline help, api, doctor, check, run, probe, init, resolve and project commands and the showcases; 53 Markdown files, 59 local links), and `tests/fabric/check_template.py` reported "Fabric/Loom starter integration: passed". |
| Full contributor gate | Not rerun locally on #119. An independent review ran the full `./scripts/verify.sh` on the head of #112, which carries the release's main changes, with every stage green; its findings were fixed in #116. The required CI matrix ran the full gate on #119. |
| Required CI | #119 passed every check, including the non-blocking Windows preview (11 checks). |
| Tagged-source preflight | Before the tag was pushed, a clean checkout of `b7fe68e` reported `releaseStatus` `prerelease; v0.7.1-beta.1`; `package-alpha.py` with `SPRIG_PACKAGE_VERSION=v0.7.1-beta.1` accepted it, and `check-sdk-archive.py --archive` passed on the resulting ZIP. |
| Tagged-source release workflow | Build and full `scripts/test.py` completed successfully on the tag before packaging was handed to validation (package job 03:03:57–03:21:54 UTC). |
| Downloaded ZIP smoke matrix | Passed on Ubuntu and macOS with JDK 17 and JDK 26 (03:28–03:45 UTC); each job tested the actual release ZIP outside the source checkout. |
| Release notes | The GitHub release body is `docs/releases/v0.7.1-beta.1.md` as of the tag. |
| Public asset checksum | Passed after downloading the published ZIP (6,189,534 bytes): `shasum -a 256 -c sprig-v0.7.1-beta.1-jdk.zip.sha256`. The value equals the GitHub asset digest. |
| Managed SDK upgrade | In an isolated `HOME`, `install-sprig.sh --version v0.7.0-beta.1` installed the previous Beta; `sprig upgrade --check` reported v0.7.1-beta.1 as available; `sprig upgrade` switched to it and retained the previous SDK directory; `sprig capabilities --json` then reported compiler `0.7.1-beta.1`, language `0.8-dev` and `releaseStatus` `prerelease; v0.7.1-beta.1`, and a second check reported it as the latest published SDK. The upgraded SDK rejected a nullable join with `SPR-TYPE-NULLABLE`, printed an `Error`'s message from `toString()`, returned `1` from `"b".compareTo("a")` and ran a 3,000,000-iteration `for` over `range`. |

#118 (quick fixes in `sprig lsp`) merged into `main` 34 seconds after #119.
The tag was created on the #119 merge commit, so #118 is not part of this
release, and the tag was not moved.

## Scope and limits

The Beta SDK packages the compiler and runtime, the `sprig lsp` language
server, the bundled `@std` modules, schema-5 dependency locks, the project test
runner, the Java wrapper generator, explicit Java interoperability including
functional interfaces, varargs, `Int` arguments for `int` parameters and
wildcard bounds, the first-party CLI, HTTP, JSON, SQLite and Web packages, and
the `dev.sprig` Gradle plugin with its Fabric/Loom starter, as described in the
release notes. Query an installed SDK with `sprig capabilities --json` and
inspect the asset contents for the exact shipped surface.

Windows remains experimental and non-blocking; no Windows support claim is
made. Sprig has no central package registry and is not self-hosted. The VS Code
extension is built from `editors/vscode` and is not part of the SDK archive.
Java interop is intentionally bounded. Types and checked integer operations do
not prove numerical stability, algorithmic correctness, or production
readiness. See [`v0.7.1-beta.1.md`](v0.7.1-beta.1.md) and
[`known limitations`](../language/known-limitations.md).

The previous published Beta validation record is preserved at
[`validation-v0.7.0-beta.1.md`](validation-v0.7.0-beta.1.md); the versioned
release history remains in [`v0.7.0-beta.1.md`](v0.7.0-beta.1.md).
94 changes: 44 additions & 50 deletions docs/releases/validation.md
Original file line number Diff line number Diff line change
@@ -1,65 +1,59 @@
# Release validation — Sprig v0.7.1-beta.1
# Release validation — Sprig v0.8.0-beta.1

This is the validation authority for the published `v0.7.1-beta.1` snapshot.
Published experimental Beta: compiler **0.7.1-beta.1**, language version
**0.8-dev**, JDK 17+, Apache-2.0. Linux and macOS are release-supported;
Windows is an experimental, non-blocking preview. This is not a production
stability or API compatibility promise. It is the first release under the
[release and versioning policy](release-policy.md), as a PATCH release.
This is the validation authority for the published `v0.8.0-beta.1` snapshot.
Published experimental Beta: compiler **0.8.0-beta.1**, language version
**0.8-dev**, separate JDK **21+**, Apache-2.0. Linux and macOS are
release-supported; Windows remains an experimental, non-blocking preview.
This is not a production-stability or frozen-language promise.

## Published artifact

- [GitHub prerelease](https://github.com/ColinHouse/Sprig/releases/tag/v0.7.1-beta.1),
published **2026-10-07 03:52:22 UTC**.
- Annotated tag `v0.7.1-beta.1` targets
`b7fe68eb1cc98cb018f1d07e472d69d73acf4328`, the merge commit of #119.
- ZIP: [`sprig-v0.7.1-beta.1-jdk.zip`](https://github.com/ColinHouse/Sprig/releases/download/v0.7.1-beta.1/sprig-v0.7.1-beta.1-jdk.zip),
**6,189,534 bytes**.
- SHA-256: `be8b43520750870f4fdf080b119ac5fe3159e6a1adf8f0d8abd5e61bc334b81f`;
this matches the GitHub asset digest and the published
[`.sha256` file](https://github.com/ColinHouse/Sprig/releases/download/v0.7.1-beta.1/sprig-v0.7.1-beta.1-jdk.zip.sha256).
- Release workflow [run 37564884616](https://github.com/ColinHouse/Sprig/actions/runs/37564884616)
completed successfully. It built the exact tagged source, ran the tagged test
suite, then downloaded and smoke-tested the same release ZIP on four Linux/
macOS × JDK 17/26 jobs before publishing the prerelease.
- [GitHub prerelease](https://github.com/ColinHouse/Sprig/releases/tag/v0.8.0-beta.1),
published **2026-10-08 16:25:30 UTC**.
- Tag `v0.8.0-beta.1` targets `13526327975e8ec8adf02a1cdf35419d235f1dd0`,
the merge commit of #230. The published tag has not been moved.
- ZIP: [`sprig-v0.8.0-beta.1-jdk.zip`](https://github.com/ColinHouse/Sprig/releases/download/v0.8.0-beta.1/sprig-v0.8.0-beta.1-jdk.zip),
**6,925,087 bytes**.
- SHA-256: `9c926aa10c7ec915deb76f5782be11137988a29a68d379bc194a11f8e3c08bab`.
A fresh download matched both the GitHub asset digest and the published
[`.sha256` file](https://github.com/ColinHouse/Sprig/releases/download/v0.8.0-beta.1/sprig-v0.8.0-beta.1-jdk.zip.sha256).
- Release workflow [run 37806498884](https://github.com/ColinHouse/Sprig/actions/runs/37806498884)
completed successfully on the tagged commit.

## Verification evidence

| Evidence | Result |
|---|---|
| Release-preparation archive and integration checks | On the #119 branch, `package-alpha.py --skip-build` followed by `check-sdk-archive.py` passed (offline help, api, doctor, check, run, probe, init, resolve and project commands and the showcases; 53 Markdown files, 59 local links), and `tests/fabric/check_template.py` reported "Fabric/Loom starter integration: passed". |
| Full contributor gate | Not rerun locally on #119. An independent review ran the full `./scripts/verify.sh` on the head of #112, which carries the release's main changes, with every stage green; its findings were fixed in #116. The required CI matrix ran the full gate on #119. |
| Required CI | #119 passed every check, including the non-blocking Windows preview (11 checks). |
| Tagged-source preflight | Before the tag was pushed, a clean checkout of `b7fe68e` reported `releaseStatus` `prerelease; v0.7.1-beta.1`; `package-alpha.py` with `SPRIG_PACKAGE_VERSION=v0.7.1-beta.1` accepted it, and `check-sdk-archive.py --archive` passed on the resulting ZIP. |
| Tagged-source release workflow | Build and full `scripts/test.py` completed successfully on the tag before packaging was handed to validation (package job 03:03:57–03:21:54 UTC). |
| Downloaded ZIP smoke matrix | Passed on Ubuntu and macOS with JDK 17 and JDK 26 (03:28–03:45 UTC); each job tested the actual release ZIP outside the source checkout. |
| Release notes | The GitHub release body is `docs/releases/v0.7.1-beta.1.md` as of the tag. |
| Public asset checksum | Passed after downloading the published ZIP (6,189,534 bytes): `shasum -a 256 -c sprig-v0.7.1-beta.1-jdk.zip.sha256`. The value equals the GitHub asset digest. |
| Managed SDK upgrade | In an isolated `HOME`, `install-sprig.sh --version v0.7.0-beta.1` installed the previous Beta; `sprig upgrade --check` reported v0.7.1-beta.1 as available; `sprig upgrade` switched to it and retained the previous SDK directory; `sprig capabilities --json` then reported compiler `0.7.1-beta.1`, language `0.8-dev` and `releaseStatus` `prerelease; v0.7.1-beta.1`, and a second check reported it as the latest published SDK. The upgraded SDK rejected a nullable join with `SPR-TYPE-NULLABLE`, printed an `Error`'s message from `toString()`, returned `1` from `"b".compareTo("a")` and ran a 3,000,000-iteration `for` over `range`. |
| Tagged-source packaging | The release workflow's `package` job completed successfully. See the workflow run for its individual build, test and archive steps. |
| Downloaded ZIP smoke matrix | All four release jobs passed: Ubuntu and macOS, each with JDK 21 and JDK 26. These jobs test the downloaded SDK, not only the source checkout. |
| Publication | The release job passed; the public prerelease contains the ZIP and its checksum asset. |
| Local onboarding, 2026-10-09 | A fresh official ZIP was downloaded, its SHA-256 verified, and extracted in a temporary directory on macOS with JDK 26.0.1. `sprig version` printed `sprig-compiler 0.8.0-beta.1`; `sprig doctor --json` reported `jdkMinimum: 21` and `javacAvailable: true`. `sprig init hello`, `sprig resolve` and `sprig run` each exited 0; the program printed `Hello, Sprig!`. |
| Installed identity | The same extracted SDK's `sprig capabilities --json` reported compiler `0.8.0-beta.1`, language `0.8-dev` and `releaseStatus` `prerelease; v0.8.0-beta.1`. |

#118 (quick fixes in `sprig lsp`) merged into `main` 34 seconds after #119.
The tag was created on the #119 merge commit, so #118 is not part of this
release, and the tag was not moved.
The local check used the manually extracted ZIP, not the managed installer or
an upgrade from an older SDK. It did not run Windows or manually exercise every
editor command. Those results are not inferred from the onboarding smoke check.

## Scope and limits

The Beta SDK packages the compiler and runtime, the `sprig lsp` language
server, the bundled `@std` modules, schema-5 dependency locks, the project test
runner, the Java wrapper generator, explicit Java interoperability including
functional interfaces, varargs, `Int` arguments for `int` parameters and
wildcard bounds, the first-party CLI, HTTP, JSON, SQLite and Web packages, and
the `dev.sprig` Gradle plugin with its Fabric/Loom starter, as described in the
release notes. Query an installed SDK with `sprig capabilities --json` and
inspect the asset contents for the exact shipped surface.
The SDK includes the tutorial's 0.8 syntax and standard modules, Java
interoperability, the language server, project/dependency tools, Gradle/JVM
integration and the Fabric starter. See the [release notes](v0.8.0-beta.1.md)
for additions, incompatible changes and library limits; query an installed SDK
with `sprig capabilities --json` for its actual surface.

Windows remains experimental and non-blocking; no Windows support claim is
made. Sprig has no central package registry and is not self-hosted. The VS Code
extension is built from `editors/vscode` and is not part of the SDK archive.
Java interop is intentionally bounded. Types and checked integer operations do
not prove numerical stability, algorithmic correctness, or production
readiness. See [`v0.7.1-beta.1.md`](v0.7.1-beta.1.md) and
[`known limitations`](../language/known-limitations.md).
The [VS Code extension](https://marketplace.visualstudio.com/items?itemName=ColinHouse.sprig-language)
is published separately as `ColinHouse.sprig-language`; its current version is
**0.3.1**, independent of the SDK and language versions. The Marketplace listing
was checked on 2026-10-09. The SDK ZIP does not install the extension or a JDK.

The previous published Beta validation record is preserved at
[`validation-v0.7.0-beta.1.md`](validation-v0.7.0-beta.1.md); the versioned
release history remains in [`v0.7.0-beta.1.md`](v0.7.0-beta.1.md).
Windows remains experimental. Java interoperability is bounded, the compiler
is not self-hosted, and type checking does not prove numerical stability or
application correctness. See [known limitations](../language/known-limitations.md).

## Previous releases

The preceding published SDK's evidence is preserved unchanged in
[validation-v0.7.1-beta.1.md](validation-v0.7.1-beta.1.md); its release notes
are [v0.7.1-beta.1.md](v0.7.1-beta.1.md). Earlier evidence remains in
[validation-v0.7.0-beta.1.md](validation-v0.7.0-beta.1.md).
15 changes: 10 additions & 5 deletions editors/vscode/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,20 @@ Extension version **0.3.1** is independent of the compiler version.

## Install / 安装

Install **Sprig** (`ColinHouse.sprig-language`) from the Extensions view. The
Visual Studio Marketplace serves VS Code; Open VSX serves VSCodium and other
compatible editors. To build the extension yourself, see
[Development](#development--开发).
Install **Sprig** (`ColinHouse.sprig-language`, publisher **ColinHouse**) from the
[Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=ColinHouse.sprig-language), or run:

```sh
code --install-extension ColinHouse.sprig-language
```

The extension and SDK are installed separately. To build a local VSIX for
extension development or compatible editors, see [Development](#development--开发).

Highlighting, the outline and snippets work immediately, without Java or the
compiler. Everything else needs JDK 21+ and the
[Sprig SDK](https://colinhouse.github.io/Sprig/en/guide/getting-started). Set
**Sprig: Compiler Path** to the SDK's `bin/sprig` launcher, or put the SDK's
**Sprig: Compiler Path** to the SDK's `bin/sprig` launcher (`bin\sprig.cmd` on Windows), or put the SDK's
`bin` on PATH. A built Sprig source checkout is found by searching parent
directories for `bin/sprig` after PATH.

Expand Down
Loading
Loading