Releases: limaformat/lima
Release list
Lima 0.5.0 — References 1.0 resolver dropped from published packages
All three implementations ship 0.5.0 from this tag:
| npm | @limaformat/lima@0.5.0 |
| crates.io | lima = "0.5.0" |
| Go | go get github.com/limaformat/lima/go@v0.5.0 |
Package versions are independent of the Lima specification version; the
Lima Core 1.0 and References 2.0 specs are unchanged from 0.4.0.
What's in it
Scope cleanup, not a language change. References 1.0 was published briefly
in mid-2026 and superseded almost immediately by References 2.0, which is
not syntax-compatible with it. Its frozen resolver was still being shipped
to consumers of all three packages for no reason.
- The frozen References 1.0 resolver is no longer bundled in any
published package. It was never a public entry point (parseReferences
andparseare References 2.0) — it only existed to run the frozen 1.0
conformance corpus, which now does so against the repository source
instead. The 1.0 spec and its 101-case corpus stay in the repo as a
frozen regression target. - No changes to Core 1.0 or References 2.0 syntax, semantics, or public
API in any of the three implementations. - Packed npm tarball: 59.3 KB → 53.4 KB (verified with
npm pack --dry-run). Ratio vs js-yaml 5.2.3 is now ~6.3× (was ~5.7×). js/distis no longer tracked in git — it's pure build output,
reproduced byprepack/pretest/pretypecheckbefore every build,
test, or publish.
Full changelogs
The rust/v0.5.0 and go/v0.5.0 tags point at the same commit and exist
for the crates.io and Go module tooling; this is the single release for
all three.
Lima 0.4.0 — the 2026-09 review campaign
All three implementations ship 0.4.0 from this tag:
| npm | @limaformat/lima@0.4.0 |
| crates.io | lima = "0.4.0" |
| Go | go get github.com/limaformat/lima/go@v0.4.0 |
Package versions are independent of the Lima specification version; the
Lima Core 1.0 and References 2.0 specs stay Final, gaining only
non-normative clarifications (§5, §5.2, §6.1.3, error-api).
What's in it
0.4.0 is the result of the first independent whole-repo review of Lima, a
second review of the consolidated result, a delta review of the final fix
batch, and four intermediate re-review rounds.
- Nine rounds of Core 1.0 errata (
1.0.1–1.0.9) — block scalars,
escape-aware key and quoted-string lexing, comment-line lookahead, the
§5.1 unquoted-key grammar enforced in every context, sibling-key column
alignment, int/float corpus assertions, raw line terminators and
U+2028/U+2029 in quoted keys,\#handling in and out of quotes, and the
comment-boundary whitespace set — all fixing behaviour the specs already
required. - Cross-implementation References 2.0 error positions — every token
now reports its physical(line, column)in the original source,
counted in Unicode code points, byte-identical across TypeScript,
Rust, and Go (including inside flow[...]/{...}and across
\#collapses). Ordering follows the earliest participating token. - Corpus — 149 → 211 Core and 119 → 136 References 2.0 cases.
The frozen 1.0.0 baseline (149 Core cases) is byte-identical and
cryptographically anchored. CI now runs all three implementations.
Accepted cost: parseCore in Rust and Go carries a ~10–20 % regression
from the §5.1 per-key validation and the physical-position token scan.
Realistic frontmatter still parses several times faster than the
corresponding YAML library.
Full changelogs
js/CHANGELOG.mdrust/CHANGELOG.mdgo/CHANGELOG.mddocs/review-2026-09-followups.md— the full review record
The rust/v0.4.0 and go/v0.4.0 tags point at the same commit and exist
for the crates.io and Go module tooling; this is the single release for
all three.
Rust v0.3.0 — References 2.0
Rust 0.3.0 brings the Rust crate to Lima References 2.0 parity with TypeScript.
Highlights:
- dotted document and partial paths
- bounded three-edge transitive resolution and cycle handling
- structural copies, canonical interpolation, and ordered diagnostics
- final resource validation and duplicate-key warning callbacks
- all 369 shared conformance cases pass
- Core performance remains within the release regression gates
The primary entry point is parse with ParseOptions; parse_references remains as a deprecated References 2.0 alias.
See rust/CHANGELOG.md for the complete release notes.
Go v0.3.0 — References 2.0
Go 0.3.0 brings the Go module to Lima References 2.0 parity with TypeScript and Rust.
Highlights:
- dotted document and partial paths
- bounded three-edge transitive resolution and cycle handling
- structural copies, canonical interpolation, and ordered diagnostics
- final resource validation and duplicate-key warning callbacks
- structured LimaError diagnostics through errors.As
- all 369 shared conformance cases pass
- Core performance remains within the release regression gates
The primary entry point is Parse with ParseOptions; ParseReferences remains as a deprecated References 2.0 alias.
See go/CHANGELOG.md for the complete release notes.
@limaformat/lima 0.3.1
Fixed
- References 2.0 document references now resolve correctly when the source and target share a top-level mapping, including sibling fields and separate nested branches. Genuine self-references and dependency cycles remain unresolved.
Published as @limaformat/lima@0.3.1.
Lima 0.3.0 — References 2.0 syntax correction
Changed
- Breaking: References 2.0 document references now use
${key}. - Partial references now use
$(key). - The briefly published
$(key)document syntax is interpreted as a partial reference;$(:key)is literal text. - Updated the normative specification, documentation, JavaScript implementation, and 118-case References 2.0 corpus.
Lima 0.2.0 — References 2.0
Lima References 2.0 is final and is now the public References implementation in @limaformat/lima.
Install
npm install @limaformat/lima@0.2.0Highlights
- New document-reference syntax:
$(path) - New partial-reference syntax:
$(:partial.path) - Partial namespaces with
/and mapping traversal with. - Bounded transitive resolution with at most three reference edges
parse()is the primary References 2.0 APIparseReferences()remains as a deprecated exact alias with identical 2.0 behavior and diagnosticsparse(input, { mode: "core" })selects the same reference-unaware path asparseCore()- The complete TypeScript implementation passes all 117 References 2.0 conformance cases
Breaking changes
References 1.0 tokens such as ($key) and (%key) are literal text in the public 2.0 API; they are not deprecated syntax aliases. Existing documents must migrate to $(key) and $(:key).
See the References 1.0 → 2.0 migration guide and the final References 2.0 specification.
Rust and Go currently continue to implement Lima References 1.0. Lima Core 1.0 is unchanged across all bindings.
For the complete change list, see the 0.2.0 changelog.
Go v0.1.0
Initial release of the Go implementation, github.com/limaformat/lima/go.
Added
ParseCore(input, strict)— Lima Core 1.0 only, no reference resolution.ParseReferences(input, options)— Core plus the References 1.0 extension (($key)document references,(%key)external partials).- Zero runtime dependencies.
- Verified against the shared, implementation-independent conformance corpus (250 cases; count pinned by
corpus_test.go) — seedocs/guide.mdanddocs/corpus-design/.
Install
go get github.com/limaformat/lima/goSee go/README.md for a quickstart and go/CHANGELOG.md for future changes.