Skip to content

v2026.6.3

Choose a tag to compare

@github-actions github-actions released this 27 Jun 20:05

Objeck Language v2026.6.3

Generational minor garbage collection, closure ergonomics, and a new System.Concurrency library.

✨ What's New

  • Generational minor garbage collection — minor (nursery) collection is now enabled: a nursery-full collection scans only the remembered set plus roots and recycles the young generation without sweeping the old generation, falling back to a full major GC under old-gen pressure. JIT and interpreter reference stores emit the write barrier on AMD64 and ARM64, and the nursery is zeroed at allocation time instead of inside the stop-the-world pause.
  • Closure ergonomics — call a FuncRef directly with v() (no explicit ->Call()); write bare lambdas with an inferred return type (\(x) => x * 2) that auto-wrap into FuncRef<R> when assigned, returned, passed as a method argument, or stored as a collection element; and give a lambda a block body (\(x) => { ... }).
  • New System.Concurrency library — structured concurrency with TaskScope, Task, and Monitor, plus runtime.* process/GC/CPU diagnostics (GC pause, promotion, allocation rate, lock contention, thread/STW/nursery counters) read through Runtime->GetProperty.
  • Fixes — multi-capture closure heap corruption (captures now use closure-local ids), re-analyzed/repeated FuncRef direct calls, and a spurious "unreferenced variable" warning for closure-captured variables.
  • Performance — SDL2 Renderer 2D draws pool the boxing buffer and cache proxy/method names.

🔀 Changes (pull requests)

  • feat(gc): enable generational minor GC (+ JIT write barriers, 2026.6.3) (#574) @objeck
  • feat(compiler): auto-wrap bare lambda passed as a FuncRef<R> argument (#573) @objeck
  • feat(compiler): bare lambdas + FuncRef auto-wrap (closure ergonomics 2/3) (#572) @objeck
  • feat(compiler): lambda block bodies (closure ergonomics 3/3) (#571) @objeck
  • fix(compiler): closure captures use closure-local ids (multi-lambda heap corruption) (#570) @objeck
  • feat(compiler): direct FuncRef callability v() + functional-chaining fix (closure ergonomics 1/3) (#569) @objeck
  • fix(compiler): don't warn 'unreferenced' for closure-captured variables (#568) @objeck
  • docs(gc): CollectMinor stop-the-world note + JSON-stream & Boing Ball examples (#575) @objeck

📦 Installation

Windows

  • x64: objeck-windows-x64_2026.6.3.msi (signed installer) — or the .zip for a portable install
  • ARM64: objeck-windows-arm64_2026.6.3.msi (signed installer) — or the .zip

Linux

  • x64: tar -xzf objeck-linux-x64_2026.6.3.tgz
  • ARM64: tar -xzf objeck-linux-arm64_2026.6.3.tgz

macOS (Apple Silicon)

  • Installer: objeck-macos-arm64_2026.6.3.pkg (signed + notarized)
  • Archive: tar -xzf objeck-macos-arm64_2026.6.3.tgz

LSP (editor integration)

  • objeck-lsp_2026.6.3.zip — VS Code, Sublime, Kate, Neovim, and more

📚 Documentation

🔐 Verification

Windows MSI installers are digitally signed; the macOS .pkg is signed and notarized by Apple.


Full Changelog: v2026.6.2...v2026.6.3