Patches
Patch releases track focused fixes and improvements on top of the last tagged version.
v0.5.2
- expanded the
.valueproof system again so immutable bool aliases, composed&&/||guards, and result reassignment behave more like normal human control flow - made proof tracking binding-based so shadowing and reassignment do not leave stale proven-ok state behind
- added regression coverage for mutable-result reassignment, including the
r = ok ...re-establish case and the invalid stale-proof case
v0.5.1
- made
resulta contextual keyword in type positions so it can be reused as a normal identifier or import alias elsewhere - added targeted parse diagnostics for missing inner types after
result,ptr, andsliceprefixes - expanded the
.valueproof system to understand immutable bool aliases of.okand simple&&/||branch-proof patterns
v0.5.0
- added source-level
nulland pointer equality againstnull - allowed
mainto returnresult intandresult u8, which makes top-leveltryusable in normal CLI programs - added
std.strings.from_int(int)andstd.text.append_int(...)for direct integer-to-text formatting paths - reworked printing so
print(...)no longer appends a newline andprintln(...)is the newline form - expanded arrays with constant-expression sizes and
[value; N]repeat literals, and fixed theptr T[N]parsing ambiguity so it now meansarray[N] of ptr T - tightened result-guard handling for indexing and slicing after proven-ok flows
- added
zone { ... }andzalloc Tfor explicit temporary scoped allocations, including phase-2 escape checks for returns, outer storage, and ordinary function-call boundaries
v0.4.4
- reworked module loading around a clear search order: builtin
std.*, project root,vendor/, then legacy relative fallback - gave user modules canonical names from root-relative paths instead of plain basenames
- improved
E3017so missing-import diagnostics now show searched paths and canonical-name conflicts directly - added regression fixtures and smoke coverage for the new module rules
v0.4.3
- added compile-time memory diagnostics for invalid
addrandfreemisuse:E3035,E3036,E3037, andE3038 - hardened the tracked allocator with overflow checks, double-free detection, interior-pointer
freedetection, quarantine-backed use-after-free checks, and guard-based overflow/underflow reporting - added dedicated runtime memory tests for the main allocator failure modes
- updated the docs so the current ownership and memory-diagnostic rules are easier to find
v0.4.2-p
- fixed incorrect
deferlowering across nested blocks so outer-scope cleanup does not run at the end of each loop iteration - added regression coverage for that case with
valid_defer_loop.cneg - reduced compiler
checktime substantially by replacing the old allocator bookkeeping path with hashed tracked-allocation lookup - improved semantic-analysis lookup paths for scope bindings and module symbols
- kept the patch release focused on compiler/runtime fixes rather than new language surface changes
Notes
- Current tracked release:
v0.5.2 - Previous tracked release:
v0.5.1 - Main repo patch log:
patches.md