Skip to content

Implement Iterator.prototype.chunks and Iterator.prototype.windows #1020

Description

@frostney

Summary

Implement the Stage 3 TC39 proposal: https://github.com/tc39/proposal-iterator-chunking

Add both lazy helpers with current size/options validation, partial-chunk, overlapping-window, exhaustion, return, and abrupt-completion semantics.

Why

This proposal fits GocciaScript's modern ECMAScript surface and the 0.13.0 proposal roadmap. It should extend the engine's existing architecture rather than arrive as a userland shim.

Current behavior

Lazy Iterator Helper infrastructure exists, but chunks and windows are absent.

Expected behavior

Add both lazy helpers with current size/options validation, partial-chunk, overlapping-window, exhaustion, return, and abrupt-completion semantics.

Scope notes

Reuse Iterator.Lazy and established re-entrancy/GC patterns; infinite inputs must stay lazy. Add proposal tests, docs, and inventory. Additive API: no feature flag.

Related bytecode roadmap: #871 and #875. Update relevant documentation and the Goccia proposal inventory. Use the current proposal specification at implementation time; add focused project tests and matching pinned Test262/proposal coverage without regressions.

Acceptance criteria

  • Parser/API surface, descriptors, evaluation order, errors, and protocol behavior match the current proposal.
  • Implementation uses the identified shared engine seam without a duplicate compatibility shim.
  • Focused positive, negative, abrupt-completion, and edge-case tests cover the proposal.
  • Relevant project suites, pinned Test262 cases, formatting, and documentation checks pass.

Metadata

Metadata

Assignees

No one assigned

    Labels

    engineTGocciaEngine: language semantics, ECMAScript built-ins, parser, interpreter, bytecode VMnew featureNew feature or requestspec complianceMismatch against official JavaScript/TypeScript specification

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions