Skip to content

Releases: frostney/GocciaScript

Nightly Build (2026-06-28)

28 Jun 07:00
f1590b7

Choose a tag to compare

Pre-release

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

26 Jun 23:19
8da9563

Choose a tag to compare

[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.gc safe 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 new on 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 -000000 as 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...
Read more

0.7.1

29 Apr 22:18
ce0c237

Choose a tag to compare

[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

29 Apr 15:29
fa82914

Choose a tag to compare

[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 continue raising 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.slice for 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 function keyword support (--compat-function) (#390)
  • Add unsafe Function constructor support (#386)
  • Add void operator 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-ffi CLI 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 atob and btoa global 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

09 Apr 15:38
4565a79

Choose a tag to compare

[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

  • Add automated changelog generation with git-cliff (#248)
  • Add Error.cause support (#249)
  • Support array-like arguments for apply and Reflect (#244)

0.6.0

09 Apr 08:56
1126fb9

Choose a tag to compare

What's Changed

  • Add public Goccia.semver API namespace by @frostney in #192
  • Add coverage reporting to ScriptLoader and TestRunner by @frostney in #201
  • Merge GocciaScript metadata into Goccia global 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 multihelpers mode 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 onTestFinished cleanup 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

07 Apr 18:12
23c908a

Choose a tag to compare

What's Changed

Full Changelog: 0.5.0...0.5.1

0.5.0

06 Apr 21:47
d16da08

Choose a tag to compare

What's Changed

Full Changelog: 0.4.0...0.5.0

0.4.0

02 Apr 20:37
2a86d92

Choose a tag to compare

What's Changed

  • Add async, await and for [await] ... of by @frostney in #36
  • Add [Shared]ArrayBuffer and TypedArray implementations 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

23 Feb 09:22
7f20e4a

Choose a tag to compare

What's Changed

Full Changelog: 0.2.0...0.3.0