AI, networking, and vision — built in. Every release moves the stack forward.
v2026.6.4
- Multithreaded GC stability fix — fixed an intermittent crash (
0xC0000005) in the generational minor garbage collector during thread startup: a thread being spawned held itsselfand argument as untracked raw pointers, so a moving collection during the spawn handoff could relocate the object and leave the new thread a stale reference. These are now tracked and relocated across collection. Surfaced only under heavy multithreaded churn
v2026.6.3
- 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
FuncRefdirectly withv()(no explicit->Call()); write bare lambdas with an inferred return type (\(x) => x * 2) that auto-wrap intoFuncRef<R>when assigned, returned, passed as a method argument, or stored as a collection element; and give a lambda a block body (\(x) => { ... }). A multi-capture closure heap-corruption bug is fixed (captures now use closure-local ids) - New
System.Concurrencylibrary — structured concurrency withTaskScope,Task, andMonitor, plusruntime.*process/GC/CPU diagnostics (GC pause, promotion, allocation rate, lock contention, thread/STW/nursery counters) read throughRuntime->GetProperty
v2026.6.2
- Major JIT & GC performance work — the cooperative stop-the-world GC safepoint poll is now nearly free in JIT'd code: an inline flag test that calls the collector only when a collection is active, reading
&stw_activefrom a register cached at the prologue (R12/X19) and emitted only at loop back-edges.fannkuchreduxroughly halved (~59s → ~31s), recovering the full regression on AMD64 and ARM64. Closure / function-reference calls (DYN_MTHD_CALL) now auto-JIT on both architectures —spectralnormreachesnative-level speed once warm (43s interpreted → 0.46s at n=2000). Inline nursery allocation forNEW_OBJ_INST(AMD64) and an interpreter float fast-path - JIT correctness hardening — a sweep of float-codegen and tail-call bugs surfaced by forcing JIT (
OBJECK_JIT_THRESHOLD=1): AMD64Floor/Ceil/ArcTancodegen and two latentDYN_MTHD_CALLmiscompiles; ARM64 transcendental/round cached-local operands, dropped libc float result/argument, working-stack registers across inlined float calls, and animm19backpatch SIGILL; a TCO deferred-load corruption (return Gcd(b, a%b)) on both architectures; and an ARM64 negative-offset load crash when a JIT-compiled closure captured in a collection (Vector<FuncRef>) was invoked — its memory encoders couldn't represent a negative displacement and read the wrong stack slot, now routed through a signed-offsetLDUR/STURhelper (x64 was never affected). The full ARM64 suite is green atOBJECK_JIT_THRESHOLD=1 - UTF-8 in any locale —
obcreading UTF-8 source andobrloading/printing UTF-8 strings no longer break under aC/non-UTF-8 process locale;sys.hnow uses systemic locale-independent UTF-8 codecs instead ofmbstowcs/wcstombs - VM shutdown race — worker threads are quiesced before program teardown, removing a JIT-shutdown thread race;
Int->MinSize()now returnsINT64_MIN - Native cross-language perf gate (CI) — a non-Docker harness measures Objeck against Python/Ruby/LuaJIT/Java with committed baseline ratios, so performance regressions are caught automatically
v2026.6.1
- String interpolation —
"{$...}"now accepts arbitrary expressions ("{$i + 1}","{$a * b - c}","{$x > y}"), Python/.NET format specifiers for precision, width, alignment, and radix ("{$pi:.2}","{$n:05}","{$s:<10}","{$v:x}"), and a positionalString->Format("{0} = {1}", a, b)helper - Generics — bounds and variance — compound bounds (
T : A & B), F-bounded constraints (T : Compare<T>), and declaration-site variance (out Tcovariant,in Tcontravariant), checked soundly and preserved across the.obllibrary boundary; readable generic type-mismatch diagnostics - Multithreaded garbage collection — the generational collector is now cooperative stop-the-world: mutator threads park at safepoints (interpreter dispatch, JIT back-edges on AMD64/ARM64, allocation, and blocking
join/sleep/socket I/O) so the collector always marks a complete root set; fixes freed-live-object corruption and use-after-free under thread churn - Debugger overhaul — command line and VS Code —
obdgains frame navigation (frame/up/down) withlocals, live editing (set x = 5), method breakpoints (b Class->Method), temporary and conditional breakpoints with ignore counts, data breakpoints (watch), and run-to-line (until); the VS Code adapter (DAP) adds editing variables, function breakpoints, logpoints, in-process restart, and exception breakpoints - Secure sockets verify certificates by default — TLS and DTLS clients validate the certificate chain and hostname instead of accepting any certificate; set
OBJECK_TLS_INSECURE_SKIP_VERIFY=1for self-signed/dev servers - Serialization & memory-safety hardening — 64-bit
Int/Int[]values no longer truncate to 32 bits or drop half the array, and function-reference fields (de)serialize without desync (note: the integer wire format widened to 8 bytes); object deserializers bounds-check attacker-supplied sizes and aChar[]read-trap heap overflow is fixed - New
Web.Serverlibrary (-lib web_server) — a lightweight HTTP server bundle for simple request/response and multipart handling - Reproducible builds & ONNX — compiling unchanged library source now produces byte-identical
.obloutput; on macOS the compiled CoreML model is cached across runs (~35× faster warm starts)
v2026.6.0
- New
System.AIlibrary (-lib ai/@ai) — classic AI in the standard library: graph search (Dijkstra,AStar,BreadthFirst,DepthFirst), adversarial game search (Minimaxwith alpha-beta,MonteCarloTreeSearch), metaheuristics (GeneticAlgorithm,SimulatedAnnealing,HillClimbing), and tabular reinforcement learning (QLearning,Sarsa,MarkovDecisionProcess); all stochastic algorithms are seedable System.MLoverhaul — 13 new estimators (regularized regression, SVM, perceptron, PCA, Gaussian naive Bayes, AdaBoost, DBSCAN, Gaussian mixture, KD-tree, gradient-boosted trees); real recursiveDecisionTreeand votingRandomForest;NeuralNetworkbias vectors; seedableSystem.ML.Random; a uniformFit/Predict/Score/Store/LoadAPI. Breaking:RandomForest->Trainis nowFit; storedNeuralNetworkmodels must be regeneratedrecordtypes — generate constructor and accessors from field declarations;record : readonly :omits setters and rejects field assignment outside constructors; supports generics and inheritance- JIT & compiler fixes — frame-dependent traps stay interpreted past the auto-JIT threshold (AMD64 + ARM64); ARM64 stale-
selfreload after callbacks; float equality on array elements no longer mis-compiled; bool array literal-pool corruption fixed - Library improvements — library aliases (
@std/@ml/@ai/@game) documented; Data.XML rejects truncated documents, fixes'decoding, and addsEncodeText/SetEncodedContent/GetDecodedContent/GetDecodedValue
v2026.5.4
- Debugger test reliability — Windows CI debugger tests fixed;
.obe/.oblformat detection now correctly handles the edge case where a new-format size-header LSB collides with the0x78zlib CMF byte - LSP shell script permissions — all
tools/lsp/shell scripts now carry the execute bit in git, fixingPermission deniedin the LSP release CI job - Release workflow hardening —
git checkout -f masterprevents dirty-tree abort when committingapi.zipfrom a tag-based build
v2026.5.3
- JIT
selectdispatch — dense integerselect(6+ cases) emits a native O(1) jump table; small sets use a linear scan; sparse/string falls back to BST — best strategy chosen automatically on AMD64 and ARM64 - API documentation overhaul — bundle overview panels, 500+ inline code examples, global search index, two-column TOC, method badges, and anchor links across all 32 library pages
- ODBC improvements — live SQLite integration test; transaction support (
Commit/Rollback/SetAutoCommit) verified;GetColumnsmetadata - Bug fixes —
HttpRequestHandlerNil safety on dropped connections;String->Split(Char)trailing token fix;bench_spectralnorm_nativeJIT stack-balance fix - Performance —
bench_spectralnorm_native: incremental FP denominator eliminates per-elementI2Fconversions from the inner loop
v2026.5.2
- HTTP/2 client —
Http2Clientwith persistent TLS connections, GET/POST/PUT/DELETE/PATCH, andQuick*one-liners via nghttp2 + ALPN - HTTP/3 / QUIC client —
Http3Clientover UDP with connection reuse and the sameQuick*API (ngtcp2 + nghttp3 + GnuTLS) - HTTP/1.1 improvements — PATCH method, redirect handling fixes for POST/PUT, retry parity across
HttpClient/HttpsClient - OpenAI Moderation & Batch —
Moderation->Check()per-category flags/scores;Batch->Create()/Get()for async 50%-cost batch requests - Gemini Files, Cache, Grounding, BatchEmbed — upload/list/get/delete files; server-side prompt caching; Search Grounding; batch embeddings in one round-trip
- WebSocket hardening — 8 bug fixes + bulk
ReadBufferI/O replacing per-byte reads - MCP server fixes — hang on shutdown and crash-on-stop resolved
- Socket reliability —
SO_REUSEADDRonTCPSocketServer::Bind();IPSocket::Open()falls through to next address on failure - ARM64 Windows — OpenCV and ONNX now fully supported on ARM64 Windows
- Improved release process — self-contained Windows builds; CI verifies all binaries and API docs on all platforms before publishing
v2026.4.3
- DAP debugger hover — hovering an object shows
ClassName { field=val, ... }with one-level instance field expansion - DAP instance/class variable scopes — Variables pane shows separate Locals, Instance, and Class scopes
- DAP stepping + crash fixes — fixed step-into crash, step-over/out scoping, stdout corruption, disconnect access violation
- Editor setup refresh — updated VS Code, Sublime Text, and gvim DAP+LSP setup for Windows, Linux, and macOS
- LSP crash fixes — null guards for
textDocument/codeActionwith inferred locals, hover position fix - Configurable JIT threshold — auto-JIT invocation count can now be tuned
- Fixed JIT S2F callback param count causing segfault on
String:ToFloat - Hardened HTTPS client against null ReadLine on connection failures
v2026.4.2
- JIT local variable register cache (AMD64 + ARM64) — ~3x speedup across all benchmarks
- DTLS support — secure UDP via
DTLSSocketandDTLSSocketServer - AI libraries — Gemini 2.5, Ollama options/tools, OpenAI embeddings, ML fixes
- Hardened JSON/XML parsers, LTO, ARM64 native CPU tuning
v2026.4.1
- Debug Adapter Protocol (DAP) for VS Code with conditional breakpoints and ANSI colors
- 3.3x binarytrees speedup — young-gen bump allocator, direct JIT-to-JIT calling
- GC thread safety with memory barriers to fix intermittent threading segfaults
- macOS .pkg installer — signed and notarized with PATH auto-configuration
- Networking, ODBC, OpenCV, Phi-3 Vision improvements
v2026.2.1
- Added
try/otherwiseerror handling framework - 4.38x nbody speedup, CSE, dead code elimination
- 14 debugger and 16 runtime regression tests in CI
v2025.7.0
- Added
Hash->Dict(),Map->Dict(), andVector->Zip()to collections - Updated style (docs, logos); bug fixes
v2025.6.3
- Support for user-provided HTTPS PEM files
- Multi-statement pre/update support in
forloops
v2025.6.2
- New API documentation system
- OpenAI Responses API; improved JSON schema support
Quick Start — API Docs — All Releases — Rosetta Code — Report an Issue
Tested on Windows 10/11, Ubuntu 24.04 LTS, and macOS 15 (ARM64 + x64). Licensed under BSD-2-Clause. Source on GitHub.