Releases: frostney/GocciaScript
Releases · frostney/GocciaScript
Nightly Build (2026-05-15)
Automated nightly build from main at cdfb411.
Built on 2026-05-15. This pre-release is replaced by each new nightly build.
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
0.2.0
Full Changelog: 0.1.0...0.2.0
What's Changed
- Switch to microsecond timing and improve benchmarks by @frostney in #1
- Promises by @frostney in #2
- Add Temporal API by @frostney in #3
- Update binary upload to exclude test files by @frostney in #4
- Fix test suites for further ECMAScript compatibility by @frostney in #5
- Add
queueMicrotaskfunctionality by @frostney in #6 - Refine code style guide and auto-fix files by @frostney in #7
- Add workspace settings and extensions for VSCode by @frostney in #8
- Add native tests for TestAssertions by @frostney in #9
- Fixes Temporal Duration total edge case and GC collection by @frostney in #10
- Fix edge cases for special values by @frostney in #11
- Add code convention on abbreviations by @frostney in #12
- Named exports modules by @frostney in #13
- Type annotations as comments by @frostney in #14
New Contributors
Full Changelog: 0.1.0...0.2.0