Skip to content

Sprig v0.2.0-alpha.1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 26 Sep 17:36
· 56 commits to main since this release
677429b

Sprig v0.2.0-alpha.1

Second public prerelease. Compiler 0.2.0-alpha.1, language 0.8-dev, JDK 17+.

Highlights

Explicit multi-parameter generics, local/Git dependency resolution, and an
Agent SDK with offline language/JVM discovery. This remains a Java stage-0
compiler that emits Java and invokes javac, not a self-hosted compiler.

Generics

generic K, V:
    class Entry:
        let key: K
        let value: V

One or more explicit type parameters, explicit generic calls/constructors,
generic variants, Practical Strict nullable arguments, invariant generics,
and a leading requires T: Equatable capability. JVM lowering is erased/boxed.
No type argument inference, variance, Comparable or user-defined capabilities.
See generics.

Projects and dependencies

[[dependency]]
name = "math"
git = "https://example.invalid/math.git"
branch = "main"
import "@math/vector.spr" as vector

sprig.toml, sprig resolve, schema-2 sprig.lock, package-local aliases,
local paths, Git branch intent locked to exact SHA, exports enforcement and
offline cached builds. This illustrative URL must be replaced with a real
Sprig package. See projects and dependencies.

Agent/JVM tooling

help, capabilities, api, doctor, structured explain, stable codes and
JSON diagnostics. Third-party JVM JARs use explicit --classpath on
api/check/build/run; Java reference results remain conservatively nullable.

Reliability fixes

Generic JVM lowering, numeric widening in generic/collection positions and
generic variant soundness; scoped lockfile edge identity, symlink confinement,
Git checkout byte/mode integrity checks and concurrent atomic cache installation.
Tests exercise the parser, static checker, generated Java and JVM execution separately.

Known limitations

Maven/JVM dependency resolution and project-aware Maven classpaths are not
implemented. The stage-1 frontend remains a probe. Comparable, inference,
variance, interfaces/traits, publishing/registry and LSP/IDE are not implemented.
Local locks use absolute paths; runtime/manifest diagnostic spans are limited.
Type safety does not guarantee numerical stability. See limitations.

Installation

Download sprig-v0.2.0-alpha.1-jdk.zip and its .sha256 from the
GitHub prerelease.
Verify SHA-256, extract, then run bin/sprig version, capabilities --json,
check examples/hello.spr and run examples/hello.spr. JDK 17+ is required;
the archive includes compiler/runtime and ANTLR, not a JDK. The package includes
LICENSE/NOTICE and third-party provenance. See the
validation record.

Verified release source and assets

Annotated tag: v0.2.0-alpha.1

Exact release SHA: 677429be905750b975d491f8a5c60e29d8ebaee2

JDK 17/26 and docs CI · Release build/test/package/smoke.

Published ZIP SHA-256: 66453a482b449969f95ef65dffea45b1f33a4abfdc7d02a163c83e23891b3433

Both uploaded assets were downloaded again; SHA-256 and full BUILD_INFO source revision matched. Fresh extraction passed version, capabilities JSON, hello check/run and SDK document links on JDK 17 and 26.