Releases: frostney/GocciaScript
Releases · frostney/GocciaScript
Nightly Build (2026-06-28)
Automated nightly build from main at f1590b77.
Built on 2026-06-28. This pre-release is replaced by each new nightly build.
0.8.0
[0.8.0] - 2026-06-26
⚡ Performance
- perf(regexp): memoize the decoded subject across regex VM calls (#805)
- perf(engine): elide unused arguments objects and speed typed-array element-set (#818)
- perf(interpreter): skip redundant per-call hoisting work for function bodies (#804)
- perf(engine): skip GC weak-reference passes when no weak container holds data (#803)
- perf(vm): reduce bytecode-VM per-call overhead (argument arena + deferred stack frames) (#802)
- perf(regexp): optimize VM scan path (#763)
- Shape-validated inline caches for VM property reads (#757)
- Speed up global reads, lex regexes in template interpolations, make --timeout a hard deadline (#744)
- Cache bytecode RegExp literal programs (#731)
- Cache compiled RegExp programs (#677)
- Replace TRegExpr with purpose-built backtracking bytecode VM regex engine (#585)
- Optimize parser hot token dispatch (#466)
- Optimize compiler local lookup (#484)
- Optimize lexer hot paths (#458)
✨ Improved
- Improve test262 language feature coverage (#732)
- Improve test262 eval and resource conformance (#725)
- Make destructuring parameter binding spec-compliant (#722)
- Improve test262 high-pass built-in coverage (#716)
- Improve test262 stock harness compliance (#713)
- Make TGocciaLexerError inherit from TGocciaSyntaxError (#627)
- Make ToNumberLiteral ES2026-compliant for objects (#547)
- Make ToStringLiteral ES2026-compliant; add ToPropertyKey (#527)
- Make CLI test substring matches CRLF-tolerant on Windows (#512)
- Make
Goccia.gcsafe during active execution (#497) - Make strict-types runtime enforcement an opt-in --strict-types flag (#479)
🌐 Website
- fix(website): patch Next.js and Mermaid advisories (#789)
- feat(ci): publish profile reports from main (#774)
- feat(sandbox): add GocciaSandboxRunner (#772)
- feat(website): improve seo and social metadata (#771)
- fix(website): expand test262 chart tooltips (#764)
- Update skills and documentation (#767)
- fix(website): serve test262 dashboard from blob at request time (#759)
- fix(website): unbreak test262 blob publish on public stores (#746)
- fix(website): refresh test262 blob manifest before publish (#742)
- feat(website): add test262 compatibility dashboard (#741)
- Clean up logo artifacts (#684)
- Centralize source pipeline parser policy (#682)
- Support default module imports and exports (#659)
- Sync playground gutter scroll with textarea (#481)
- Show script memory usage on the playground tail line (#478)
- Add Report issue button to playground (#477)
- Add resource management example to playground (#472)
- Cache playground runner responses (#464)
🏗️ Internal
- ci(workflows): scope GitHub Actions token permissions to jobs that need them (#791)
- refactor(runtime): share indexed data module loading (#781)
- test(benchmarks): add temporal intl atomics coverage (#783)
- docs: consolidate command reference (#782)
- docs(agents): document source layout search paths (#779)
- chore(test262): bump pin to de8e621c (#766)
- refactor(runtime): simplify runtime surface (#765)
- chore(test262): bump pin to 05bb0329 (#737)
- chore(ci): upgrade workflow actions to Node 24 (#736)
- chore(tc39-mcp): bump pin to v0.4.0 (#734)
- Extract shared resource container infrastructure (#715)
- chore(tc39-mcp): add project MCP config (#719)
- Update skills (#701)
- chore(agent): add tc39-mcp spec lookup workflow (#695)
- chore(toml-test): bump pin to af5f8052 (#683)
- Centralize CLI source pipeline handling (#685)
- Unify runtime terminology and executor units (#681)
- Simplify and harden lexer internals (#674)
- Split runtime globals into installable extensions (#666)
- Extract shared spawn helper from CLI test harnesses (#629)
- Centralize FExecuting re-entrancy guard into TGocciaIteratorHelperValue (#581) (#589)
- Consolidate engine semantics and test262 roadmap (#494)
- Split engine and runtime surfaces (#493)
🐛 Fixed
- fix(modules): reject missing named imports in bytecode mode (#799)
- fix(engine): eliminate test262 timeouts (tail calls, recursion bound, perf) (#797)
- fix(sandbox): reject host symlinks during seed imports (#793)
- fix(engine): deduplicate string-to-number across runtime and compiler (#792)
- fix(test262): close intl402 and date conformance gaps (#778)
- fix(ci): restore parallel benchmark stability (#780)
- fix(test262): close built-ins conformance clusters (#776)
- fix(test262): reach supported language conformance (#770)
- fix(sandbox): normalize Windows-style virtual paths (#773)
- fix(parser): drive slash lexing from parser context (#760)
- fix(bytecode): isolate cross-realm shape ownership (#762)
- fix(engine): remove class method fallback (#761)
- fix(json): align stringify root and array semantics (#758)
- fix(builtins): guard script-controlled Trunc sites per spec integer coercions (#750)
- fix(json): conform JSON.stringify array replacer to ES2026 §25.5.4 step 5 (#754)
- fix(json): spec-conformant boxed Number/String coercion during stringify serialization (#756)
- fix(json5): coerce boxed space, quote, and allow-list arguments in JSON5.stringify (#753)
- fix(scripts): avoid FPC ICE 200611011 in run_json5_test_suite.py builds (#755)
- fix(vm): resolve computed property access on primitive receivers (#748)
- fix(json): spec-conformant space argument coercion in JSON.stringify (#749)
- fix(test262): close language conformance gaps (#739)
- fix(test262): pin suite outside workflows (#735)
- Fix Windows CLI multiline output checks (#733)
- Fix Annex B labelled function compatibility (#730)
- fix(intl): cache supported locale resolution (#728)
- Fix concrete iterator prototype ancestry (#723)
- Fix class method destructuring params in bytecode (#718)
- fix(interpreter): collect under memory pressure (#714)
- Fix private elements on constructor return overrides (#708)
- fix(intl): format BigInt locale strings (#711)
- fix(builtins): reject nullish prototype receivers (#712)
- fix(interpreter): root loop scopes during explicit gc (#710)
- fix(typedarray): use spec descriptors for built-ins (#706)
- fix(bytecode): preserve VM roots during explicit GC (#705)
- Fix detached buffer revalidation in binary data methods (#707)
- fix(intl): delegate locale prototype methods (#700)
- fix(intl): parse Locale unicode extension keys (#696)
- fix(intl): apply Collator comparison options (#694)
- fix(intl): localize DisplayNames currency codes (#693)
- fix(intl): repair RelativeTimeFormat output (#692)
- fix(regexp): guard huge replace expansions (#691)
- Fix Intl format and compare accessors (#686)
- Fix GC roots for VM saved state and native callbacks (#680)
- Fix NumberFormat digit option resolution (#679)
- Fix bytecode top-level lexical binding semantics (#675)
- Fix for-loop update closure environments (#676)
- Fix computed class field yield evaluation (#672)
- Fix RegExp lookbehind direction (#673)
- Fix bytecode object literal define semantics (#669)
- Fix RegExp modifier word escapes (#671)
- Fix Goccia.gc test runner result rooting (#667)
- Fix static class setter assignment (#662)
- Fix TypedArray detach-safe element access (#661)
- Fix defineProperty descriptor semantics (#657)
- Fix generator loop closure resumes (#644)
- Preserve flatMap TypeError when source iterator Close throws (#628)
- Fix for-await-of IteratorClose on abrupt completion (#620)
- Fix bytecode VM Range-check error draining top-level Promise.then continuation (#588)
- Fix Function() constructor this-binding and strict-mode delete gaps (#584)
- Fix object literal accessor register clobber in bytecode compiler (#583)
- Fix console.log TypeError on prototype-less objects, add --inspect-depth (#578)
- Fix iterator helper SIGSEGV: re-entrancy guard, generator Close, AcquireExceptionObject (#514) (#579)
- Fix TOML compliance and pin TOML/YAML test suites to specific SHAs (#576)
- Fix arrow function this binding in module mode (#574)
- Route array length setter through ArraySetLength (#566)
- Handle iterable and array-like arguments in TypedArray constructor, from(), and set() (#558)
- Fix use-after-free in class field initializer scopes (#560)
- Fix ++/-- on BigInt operands; add OP_INC, OP_DEC, OP_TO_NUMERIC (#548)
- Fix performance regressions from #496 (#508)
- Fix language/types Test262 coverage (#491)
- Fix
newon compat-function constructors (#501, #502) (#505) - Fix built-ins Symbol test262 coverage (#490)
- Fix Test262 line terminator handling (#492)
- Fix IteratorClose for abrupt for-of completion (#488)
- Fix statementList comma expression parsing (#489)
- Fix if condition double evaluation (#487)
- Fix test262 literal conformance (#486)
- Fix benchmark failure JSON output (#485)
- Fix WeakMap/WeakSet test262 edge cases (#470)
📖 Other
- Skill updates (#738)
- Validate RegExp named group identifiers (#668)
- Intl: implement formatRange support (#658)
- Intl: return all ECMA-402 required fields from resolvedOptions() (#631)
- Persist for-loop iteration state across generator resumes (#633)
- Generate full Unicode property tables for regex \p{} escapes (#630)
- Reject unescaped line terminators in string literals (#623)
- Close source iterator when take limit is reached (#591) (#593)
- Emit OP_CLOSE_UPVALUE on break so closures pin per-iteration values (#573)
- Sync upvalue cell after increment/decrement on captured locals (#570)
- Honor explicit object returns from class constructors in Instantiate (#571)
- Clarify implement-issue skill to invoke /create-pr skill (#568)
- Reject
-000000as an invalid extended year in ISO date parser (#564) - Define prototype.constructor on native Error hierarchy (#565)
- Stop Find* scope walks at ordinary function boundaries (#559)
- Propagate newTarget through native constructors for Reflect.construct (#556)
- Propagate newTarget through class [[Construct]] for new.target (#549)
- Throw TypeError on delete with null/undefined base (#546)
- Accept all constructable function forms in Reflect.construct (#528)
- Block PR merge on test262 regre...
0.7.1
[0.7.1] - 2026-04-29
🌐 Website
- Add version dispatch to playground engine (#467)
- Use static Vercel ignore config (#462)
- Refresh docs and website to match recent feature set (#460)
- Add website agent discovery metadata (#453)
- Scope Vercel builds to website changes (#455)
🏗️ Internal
- Update CHANGELOG.md for 0.7.0 (#457)
🐛 Fixed
- Fix microtask drain re-entrancy crashing async-generator yield rejection (#465)
- Fix generator loop resume and async iterator lookup (#456)
- Fix changelog website grouping (#459)
📖 Other
- Unify stdin handling across all three runners (#461)
0.7.0
[0.7.0] - 2026-04-29
✨ Improved
- Make fetch asynchronous with fetch manager (#396)
- Expand Test262 support for classes, functions, and typed arrays (#378)
- Expand typed array coverage across core methods (#367)
- Improve Temporal conformance and enable BigInt in test262 (#354)
- Include tests, benchmarks, and examples in nightly archives (#355)
- Report wall-clock timing for parallel runs (#318)
- Improve REPL object previews with depth-aware formatting (#296)
- Make import.meta tests account for Windows drive letters (#274)
🌐 Website
- Fix CSV and TSV header option examples (#452)
- Add agent discovery Link headers (#450)
- Declare Content Signals in robots.txt (#449)
- Enable markdown negotiation for agents (#451)
- Update playground examples and controls (#447)
- Add website Browserslist config (#446)
- Refine website landing and sandbox copy (#445)
- Update website API execution endpoints (#444)
- Fix Vercel ignore diff for shallow clones (#443)
- Fix website labels, hero console alignment, and example file extensions (#423)
- Unify website console output with shared ConsolePanel (#418)
- Skip Vercel preview builds for non-website changes (#414)
- Add Next.js 16 website (docs, playground, sandbox, install) (#407)
🏗️ Internal
- Extract shared text semantics utilities (#439)
- Update copyright year in LICENSE file (#384)
- Refactor engine around pluggable executors (#332)
- Update ECMAScript edition references to 2027 (#323)
- Refactor CLIs onto shared application framework (#299)
- Update docs (#302)
- Update CHANGELOG.md for 0.6.1 (#293)
- Refactor GC into
Goccia.GarbageCollector(#254)
🐛 Fixed
- Fix generator continuation replay (#448)
- Fix CI cross toolchain resource compiler (#442)
- Fix ZonedDateTime DST-aware diff rounding (#435)
- Fix Temporal BigInt duration overflow (#431)
- Fix Windows parser CLI output assertions (#430)
- Fix unsupported var recovery before block close (#427)
- Fix for-of
continueraising ReferenceError instead of skipping iteration (#425) - Thread options through Temporal *.until / *.since methods (#417)
- Fix Number toString scientific notation threshold and format (#415)
- Fix decorator wrapper this-binding test gap and misdirecting warning (#416)
- Fix
Array.prototype.slicefor high-index array-like values (#411) - Fix Object.isFrozen and Object.isSealed integrity checks (#412)
- Fix spyOn restore descriptor for re-spying (#397)
- Fix async parser scoping for default-parameter await (#393)
- Fix property redefinition rules for objects and arrays (#381)
- Handle EOF before REPL prompt on Windows (#385)
- Fix global descriptors for NaN, Infinity, and undefined (#380)
- Fix version constant propagation in CI build (#363)
- Fix BigInt Test262 compliance gaps (#361)
- Fix implicit Symbol→string coercion gap in ToStringLiteral (#357) (#359)
- Fix trailing-dot numeric literals and spread tokenization (#345)
- Handle Infinity in Number parsing tests (#331)
- Fix Temporal invalid-input errors to RangeError (#319)
- Fix lexically aware template boundaries and line terminators (#287)
- Fix nested backtick formatting in template literal docs (#284)
- Fix template escaping at interpolation boundaries (#278)
- Fixes tagged template object identity (#275)
📖 Other
- Embed IANA timezone data for Temporal (#440)
- Unify CLI JSON reporting (#433)
- Strengthen test262 runner and ECMAScript edge-case coverage (#402)
- Skip unsupported generator methods during parsing (#388)
- Infer names for anonymous classes and object functions (#387)
- Honor root config precedence for per-file CLI options (#382)
- Apply per-file config across all CLI apps (#373)
- Integrate REPL with CLI application framework (#372)
- Integrate JSX source map for coverage branch hit positions (#202) (#364)
- Recompute ZonedDateTime UTC offset after rounding (#358) (#362)
- Expose build date in version metadata (#360)
- Require BigInt for Temporal epoch nanoseconds (#346)
- Simplify hasOwnProperty shim binding (#347)
- Reject mixed stdout benchmark report formats (#340)
- Suppress progress output in structured and worker paths (#334)
- Restructure sources under source/ and rename build artifacts (#333)
- Validate Temporal.Duration field magnitudes (#328)
- Use shared Temporal property names in PlainDate parsing (#315)
- Use ConstructorToIndex for ArrayBuffer length (#316)
- Align error suggestions across builtins and runners (#308)
- Suppress CLI output from worker threads (#307)
- Deduplicate JSON string escaping helpers (#305)
- Docs, compiler type rules, and VM OP_CHECK_TYPE helper (#300)
- await-using tests: add microtask-boundary ordering assertions (#298)
- Recognize LS/PS as line terminators in lexer (ES2026 §12.3) (#285)
- Restructure built-in registration (#286)
🚀 Added
- Implement WeakMap and WeakSet built-ins (#437)
- Implement TC39 pattern matching (#438)
- Add generator and async generator support (#432)
- Add generated sources to CI FPC search path (#441)
- Add native TLS transport backends (#428)
- Support set-like operands for Set methods (#429)
- Implement smallestUnit, roundingMode, roundingIncrement for Temporal until/since (#424)
- Add receiver brand checks to Set/Map prototype methods (#421)
- Support destructuring into member expression targets (#413)
- Add fetch host allowlist support (#395)
- Add fetch host allowlist support (#391)
- Add opt-in
functionkeyword support (--compat-function) (#390) - Add unsafe Function constructor support (#386)
- Add
voidoperator support (#389) - Support array methods on array-like receivers (#383)
- Add compat var declarations (#368)
- Add Function.prototype.constructor per ES spec (#370)
- Implement Function.prototype.toString (#366)
- Add BigInt64Array and BigUint64Array support (#365)
- Add call stack depth limit with bytecode VM trampoline (#356)
- Add config file discovery for CLI apps (#353)
- Add GC memory ceiling and exposed counters (#351)
- Add nightly release and update artifact actions to v7 (#352)
- Add console output callback and remove Silence() anti-pattern (#350)
- Add instruction counter / interrupt handler with configurable limit (#349)
- Add
--unsafe-ffiCLI toggle for FFI (#348) - Implement BigInt spec support (#343)
- Add Object.hasOwn-backed hasOwnProperty shim (#344)
- Add Test262 bytecode support gaps (#341)
- Add Goccia.gc manual garbage collection hook (#342)
- Add fcl-net and OpenSSL to cross-build toolchain (#339)
- Add native fetch, Headers, and Response support (#338)
- Add CSV and TSV built-ins with module imports (#337)
- Enable strict types by default for bytecode executor (#336)
- Add default builtin shims for legacy globals (#330)
- Support ZonedDateTime relativeTo in Temporal duration ops (#329)
- Add Temporal.Duration.round support for relativeTo (#327)
- Add Temporal.Duration.prototype.total relativeTo support (#324)
- Add standalone GocciaBundler build target and CLI (#322)
- Support iterable inputs in Map.groupBy (#317)
- Add watchdog timeout to worker-thread test runs (#314)
- Add parallel execution for multi-file runners (#306)
- Add JSONC support for structured module globals (#304)
- Add explicit resource management support (#290)
- Add per-file timeouts and test262 harness updates (#297)
- Add support for RegExp modifier groups (#295)
- Implement Source Maps (TC39 Source Map v3) (#289)
- Support regex duplicate named capture groups (#291)
- Add JSON.rawJSON and JSON.isRawJSON (#288)
- Add dynamic import support to the runtime (#282)
- Implement TC39 Template Literal Revision for tagged templates (#281)
- Add encodeURI / decodeURI / encodeURIComponent / decodeURIComponent (#280)
- Add missing Temporal built-ins and options support (#277)
- Add URL and URLSearchParams built-ins (#273)
- Add ToObject coercion for primitives across all Object.* static methods (#271)
- Add Goccia.build platform metadata (#276)
- Add TextEncoder and TextDecoder built-ins (#272)
- Implement import.meta support (#265)
- Add tagged template literal support (#267)
- Add Float16Array and Math.f16round (ES2025) (#262)
- Add resizable ArrayBuffer support and transfer APIs (#266)
- Add support for class static blocks (#264)
- Add Object.getOwnPropertyDescriptors support (#261)
- Add logical assignment operators (#259)
- Add numeric separator support in number literals (#258)
- Add Uint8Array Base64 and Hex APIs (#260)
- Add Iterator.zip and zipKeyed helpers (#257)
- Add
atobandbtoaglobal functions (#256) - Add reviver source context to JSON.parse and JSON5.parse (#255)
- Add Iterator.concat support (#253)
- Add RegExp.escape support (#252)
- Add top-level await and for-await-of support (#251)
0.6.1
[0.6.1] - 2026-04-09
🏗️ Internal
- Strip symbols before staging build artifacts (#245)
- Extract shared ToPropertyDescriptor helper (#239)
🐛 Fixed
- Route Reflect.set receiver [[DefineOwnProperty]] through TryDefineProperty (#247)
- Thread optional receiver through Reflect.get and Reflect.set (#243)
- Fix Reflect.construct prototype setup (#241)
📖 Other
- Streamline project docs and contributor guidance (#250)
- VM improvements including fixing AArch64 Int64-to-Double conversion paths (#242)
🚀 Added
0.6.0
What's Changed
- Add public
Goccia.semverAPI namespace by @frostney in #192 - Add coverage reporting to ScriptLoader and TestRunner by @frostney in #201
- Merge GocciaScript metadata into
Gocciaglobal by @frostney in #204 - Make String.prototype.matchAll return a lazy iterator by @frostney in #206
- Add named capture groups and Unicode sets flag for RegExp by @frostney in #207
- Improve parser error context and diagnostics by @frostney in #205
- Implement full ECMAScript Unicode RegExp semantics by @frostney in #208
- Strip release artifacts and bake production version info by @frostney in #211
- Remove obsolete
multihelpersmode switch by @frostney in #213 - Remove dead code and unused imports by @frostney in #212
- Fix YAML harness cleanup on parse failure by @frostney in #218
- Include zero-hit executable lines in coverage reports by @frostney in #219
- Add opt-in automatic semicolon insertion by @frostney in #220
- Add mock() and spyOn() test APIs by @frostney in #210
- Add
onTestFinishedcleanup hook to test framework by @frostney in #223 - Add explicit FFI support for native shared libraries by @frostney in #209
- Build 32-bit FFI fixture DLL on Windows CI by @frostney in #227
- Add a test262 conformance harness by @frostney in #222
- Add test262 conformance harness and CI support by @frostney in #234
- Implement Proxy builtin and traps by @frostney in #226
- Add Reflect API by @frostney in #228
- Replace VM register arrays with contiguous stack (+28% bytecode throughput) by @frostney in #235
- Update unsupported CPU target case in CI workflow by @frostney in #217
- Add bytecode VM profiling support by @frostney in #237
Full Changelog: 0.5.1...0.6.0
0.5.1
What's Changed
- Unify newline handling for text file inputs by @frostney in #193
- Add default GitHub issue template by @frostney in #195
- Handle mixed type-only imports and exports by @frostney in #194
- Add pull request template checklist by @frostney in #196
- Add CLAUDE.md symlink to AGENTS.md by @frostney in #197
- Update repository skills by @frostney in #199
- Report bytecode timing phases separately by @frostney in #198
- Add bytecode REPL timing mode by @frostney in #200
Full Changelog: 0.5.0...0.5.1
0.5.0
What's Changed
- Add YAML parsing and module imports by @frostney in #166
- Fix cross builds for fcl-base units by @frostney in #171
- Enforce private static brand checks by @frostney in #168
- Stage CI and release artifacts from top-level dpr binaries by @frostney in #169
- Add RegExp support and regex-aware expect.toMatch by @frostney in #172
- Fix cross-build linking for RegExpr units by @frostney in #180
- Allow string-literal module export names by @frostney in #181
- Add JSONL runtime parsing and module imports by @frostney in #182
- Add Vitest lifecycle and structure APIs by @frostney in #184
- Add TOML parsing, globals, and compliance checks by @frostney in #183
- Normalize TOML multiline strings to LF across platforms by @frostney in #186
- Add namespace imports for script and data modules by @frostney in #185
- Preserve UTF-8 parser inputs on Windows by @frostney in #188
- Add JSON5 parsing and stringify support by @frostney in #189
- Ignore leading shebang lines in the lexer by @frostney in #191
- Add
.txtand.mdtext asset imports by @frostney in #190
Full Changelog: 0.4.0...0.5.0
0.4.0
What's Changed
- Add
async,awaitandfor [await] ... ofby @frostney in #36 - Add
[Shared]ArrayBufferandTypedArrayimplementations by @frostney in #37 - Add bytecode and vm by @frostney in #38
- Feature parity between bytecode mode and interpreter mode by @frostney in #39
- More bytecode optimisation by @frostney in #40
- Remove type annotations on enum field level by @frostney in #41
- Strict types in bytecode VM by @frostney in #42
- Inline paths where possible by @frostney in #43
- Update documentation by @frostney in #44
- Fix switch default clause not participating in fallthrough by @frostney in #47
- Environment specific test failure by @frostney in #48
- De-couple control flow from exception flow by @frostney in #45
- Allow to suppress console output on native tests by @frostney in #49
- Refactor dispatch evaluator by @frostney in #51
- Fix increment/decrement for computed member expressions by @frostney in #54
- GocciaScript bytecode benchmarks in PRs by @frostney in #55
- First draft of WAM output through Souffle VM by @frostney in #53
- Fix class expression super() bytecode crash in decorator wrapping benchmark by @frostney in #56
- Fix to resolve Windows 32-bit Out Of Memory benchmark tests by @frostney in #57
- CI job independence by @frostney in #59
- Promise and iterator optimisations by @frostney in #58
- Unify garbage collector by @frostney in #60
- Change wasm-tests CI to run Node harness instead of Pascal harness by @frostney in #61
- Potential Windows BenchmarkRunner fixes by @frostney in #62
- Add Performance built-in API by @frostney in #63
- for of array fast path by @frostney in #64
- Replace TStringBuilder with TStringBuffer by @frostney in #65
- Garbage collector memory optimization by @frostney in #67
- Update Github action steps to include test matrix for bytecode and interpreter by @frostney in #68
- Enable autoInline optimization by @frostney in #70
- Bytecode endianness portability by @frostney in #72
- High benchmark variance by @frostney in #69
- Mark SouffleIsTrue as inline for hot-path branch elimination by @frostney in #73
- Remove dead decorator class bridge code by @frostney in #75
- Replace double-negation unary + with OP_RT_TO_NUMBER by @frostney in #80
- Pre-materialize constant pool into TSouffleValue array on template load by @frostney in #82
- Extend constant folding with boolean NOT, typeof, and logical operators by @frostney in #85
- Benchmark tests regression by @frostney in #92
- Benchmark runner exit codes by @frostney in #90
- Remove unused typed local opcodes from compiler and VM by @frostney in #74
- Promote 10 hot opcodes into main VM dispatch loop by @frostney in #81
- Eliminate redundant OP_MOVE in plain function call compilation by @frostney in #86
- Optimize bridge cache: dirty flag and single-lookup reverse map by @frostney in #89
- Add Tier 1 OP_NOT and OP_TO_BOOL opcodes for inline boolean coercion by @frostney in #76
- Add record/delegate fast path for OP_RT_GET_PROP in VM by @frostney in #83
- Experiment: SOUFFLE_INLINE_STRING_MAX = 13 by @frostney in #96
- Fix FPC 3.2.2 internal error on CI prod builds by @frostney in #98
- Bypass interpreter bridge for blueprint-backed class construction by @frostney in #87
- Unify blueprint bridge on ConvertBlueprintToClassValue by @frostney in #100
- Set prototype.constructor on native blueprint construct path by @frostney in #102
- Update hashmap hierarchy to improve performance by @frostney in #66
- Convert spike PDFs to Markdown, update VM docs, add optimization log by @frostney in #105
- Add cross-compilation toolchain workflow by @frostney in #93
- Fix Failed Tests summary missing assertion failures by @frostney in #111
- Eliminate interpreter bridge for async/await in bytecode mode by @frostney in #110
- Add record fast path for OP_RT_SET_PROP in VM dispatch by @frostney in #108
- Eliminate interpreter bridge for module loading in bytecode mode by @frostney in #107
- Add Souffle-value-backed Map/Set types and native callback fast paths by @frostney in #109
- Refactor built-in object model registration by @frostney in #136
- Fold Souffle VM directly into GocciaScript by @frostney in #137
- Support reading ScriptLoader source from stdin by @frostney in #138
- Add structured JSON output to ScriptLoader by @frostney in #139
- Test JSON output via public CLI surface by @frostney in #142
- Allow Windows CRLF in ScriptLoader CLI checks by @frostney in #143
- Add ScriptLoader CLI globals injection by @frostney in #140
- Add ScriptLoader execution timeout support by @frostney in #141
- Use range-based benchmark comparison in PR comments by @frostney in #144
- Expand JSON.stringify error coverage by @frostney in #145
- Add nullish coalescing assignment operator by @frostney in #146
- Harden OrderedStringMap tombstone compaction by @frostney in #148
- Refresh JS conformance suite and tighten runtime parity by @frostney in #147
- Fix ModuleResolver alias segment boundary matching by @frostney in #149
- Add ScriptLoader import maps and goccia.json discovery by @frostney in #151
- Fix JSON stringify round-trip precision by @frostney in #163
- Extract standalone module loader for module content providers by @frostney in #162
- Add Vitest-style matcher support for test assertions by @frostney in #164
Full Changelog: 0.3.0...0.4.0
0.3.0
What's Changed
- Warning when using unsupported features by @frostney in #15
- JSX parsing as source-to-source pre-pass by @frostney in #16
- fix import clauses (remove or move from
interfacetoimplementation) by @frostney in #18 - Add module resolver by @frostney in #17
- REPL History + Color formatting by @frostney in #19
- Add iterators by @frostney in #20
- Remove the usage of interfaces by @frostney in #21
- Print LOC and SLOC as part of the build process by @frostney in #22
- Add stack property for errors by @frostney in #23
- Add tests for nested loops by @frostney in #26
- Refactor: Split constants by @frostney in #25
- Add
stucturedCloneby @frostney in #24 - Fix windows build on line breaks by @frostney in #27
- Disable runtime checks for production builds by @frostney in #28
- Create BindingMap for Scope and pre-typed array callbacks by @frostney in #29
- First draft of re-ordering maps functionality by @frostney in #30
- Add command-line flags to TestRunner by @frostney in #31
- Add wildcard, function, loose equality and label to unsupported features by @frostney in #32
- Enum support by @frostney in #33
- Add
Map#getOrInsert[Computed],Error.isError,Math.sumPreciseby @frostney in #34 - Add decorators by @frostney in #35
Full Changelog: 0.2.0...0.3.0