Skip to content

Release/v0.3#618

Open
dannymeijer wants to merge 44 commits into
mainfrom
release/v0.3
Open

Release/v0.3#618
dannymeijer wants to merge 44 commits into
mainfrom
release/v0.3

Conversation

@dannymeijer
Copy link
Copy Markdown
Contributor

@dannymeijer dannymeijer commented May 21, 2026

Release 0.3

This PR promotes release/v0.3 into main. It contains the 0.3 language, stdlib, tooling, documentation, and stabilization work accumulated since the 0.2 release line.

The full user-facing release narrative lives in Release 0.3. This PR body is intentionally a reviewer-facing summary.

Highlights

  • Language surface: precise numeric annotations, loop: expressions with break <value>, if let / while let, union narrowing, value enums, enum-owned methods, enum trait adoption, Rust trait adoption from Incan source, trait-based operator overloading, and protocol hooks for core syntax.
  • Generated Rust and ownership: ownership/coercion emission now flows through an explicit argument-passing plan, reducing the previous duckborrower drift where local call emitters made competing borrow decisions.
  • Stdlib: new or expanded surfaces for std.collections, OrdinalMap, std.graph, std.datetime, std.encoding, std.hash, std.compression, std.regex, std.json, std.logging, temporary filesystem helpers, iterator adapters, and Result combinators.
  • Tooling and tests: deterministic incan.lock files, the RFC 053 formatter spacing contract, inline tests, fixtures, async fixtures, first-class test-runner behavior, generated reports, and faster release-gate organization.
  • Package/import-boundary hardening: fixes for decorator metadata, partial presets, public aliases, static imports, inline test batching, dependency-scoped script builds, generated helper qualification, and imported static initialization cycles.
  • Docs and RFCs: release notes, updated language/reference/how-to docs, RFC lifecycle cleanup, modernized RFC frontmatter, and documented known limitations.

Migration Notes

  • Ordinary int and float code does not require a source migration; those spellings remain valid and keep their i64 / f64 representations.
  • Projects that gate on incan fmt --check should expect one-time formatter diffs from the RFC 053 vertical-spacing contract.
  • Projects with local bare type names such as decimal or numeric should rename those local types or use the new parameterized numeric family forms.
  • Most language and stdlib additions are additive; known limitations and future follow-ups are documented in the release notes.

Verification

  • GitHub Actions CI for current head 6bcec3a1 completed successfully in CI run #860.
  • The release branch has repeatedly passed make pre-commit through the stabilization PRs.
  • Latest closeout left /Users/danny/Development/encero/incan clean on release/v0.3...origin/release/v0.3.

Release Links

@dannymeijer dannymeijer added this to the 0.3 Release milestone May 21, 2026
@dannymeijer dannymeijer self-assigned this May 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant