1.21.2
Release Notes
Bugfix + release-process hardening.
Fixed
- Special-form names are bindable again. A change in 1.20.4 reserved special-form names (
if,fn,let,and,message, …) and rejected binding any of them — but that also rejected correct value-position use, like a function parameter namedmessageor a variable namedfn, because the scope-free lowerer can't distinguish value use from operator use. It broke real code (5 bundled examples) and slipped a CI regression past four releases. The reservation is removed: special-form names shadow correctly in value position again. In operator/head position the special form still wins (a documented, accepted footgun —docs/limitations.md#36); the proper fix (full lexical shadowing) is future work.
CI / release process
- Publishing now requires the test suite to pass. The crates.io and npm publish workflows triggered on a version tag with no dependency on CI, so a red test suite never blocked a release — which is how the reserved-name regression shipped. They now gate on a reusable
verifyworkflow that runs the full CI-equivalent suite (fmt, clippy, doc check,cargo test, example + bytecode smoke tests) before any publish. The local release runbook was updated to run the example/bytecode smoke tests too (plaincargo testskips them).
Install sema-lang 1.21.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HelgeSverre/sema/releases/download/v1.21.2/sema-lang-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/HelgeSverre/sema/releases/download/v1.21.2/sema-lang-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install helgesverre/tap/sema-langDownload sema-lang 1.21.2
| File | Platform | Checksum |
|---|---|---|
| sema-lang-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| sema-lang-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| sema-lang-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| sema-lang-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| sema-lang-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |