Skip to content

loop sweep >600: closes #656 + #653 + refs #650 + refs #645 followup (v0.5.790) - #659

Merged
proggeramlug merged 1 commit into
mainfrom
loop/issues-gt-600
May 10, 2026
Merged

loop sweep >600: closes #656 + #653 + refs #650 + refs #645 followup (v0.5.790)#659
proggeramlug merged 1 commit into
mainfrom
loop/issues-gt-600

Conversation

@proggeramlug

Copy link
Copy Markdown
Contributor

Summary

Three issues from the >600 sweep land together (consolidated into a single v0.5.790 bump because main shipped concurrent v0.5.787-789 fixes).

Triaged closed (no code changes)

Remaining open (deferred)

Test plan

  • All 3 new regression tests byte-identical to Node:
    • test-files/test_issue_656_unshift_returns_length.ts
    • test-files/test_issue_653_spread_typed.ts
    • test-files/test_issue_650_url_static.ts
  • 7 representative sanity tests pass byte-identical to Node:
    test_simple_class / test_inheritance / test_break_continue / test_array_methods / test_async / test_rest_params / test_issue_645_default_fill_positional

…(v0.5.790)

Three issues from the >600 sweep land together (squashed from the
loop/issues-gt-600 branch and rebased onto main, since main shipped
concurrent v0.5.787-789 fixes that collided with the per-fix bumps).

- closes #656 — Array.prototype.unshift returns the new length, not
  the array (HIR Expr::ArrayUnshift + lower_array_method "unshift"
  arm both consult js_array_length on the new handle).

- closes #653 — AOT spread of non-empty array no longer passes
  denormal placeholders to rest-param callees. Three coordinated
  fixes: register __perry_wrap_<name> wrappers with
  js_register_closure_rest; fix CallSpread FuncRef arm to pass the
  spread source array directly when the callee has rest at index 0;
  route js_closure_call_array through dispatch_rest_bundled to fix
  the 7+-arg dispatch gap.

- refs #650 — URL.canParse(s) and URL.parse(s) static methods
  (Node 18 / 22). Adds Expr::UrlCanParse / Expr::UrlParse HIR
  variants; mirrors the Date.now/parse/UTC arm in HIR detection;
  shared is_valid_absolute_url() validator for both. Closes 2 of
  7 sub-issues in #650.

- refs #645 followup — fill loop in lower_expr_call now stops at
  the rest-param slot. Pre-fix `function f(name, ...args)` called
  as `f('a')` got `args = [undefined]` instead of `[]`. Surfaced
  as a regression in #653's repro. Extends func_defaults to a
  4-tuple including Option<rest_idx>.

Sanity: 7 representative tests + the v0.5.789 test_issue_645
regression test all byte-identical to Node.
@proggeramlug
proggeramlug merged commit 7c8f8fa into main May 10, 2026
2 of 10 checks passed
@TheHypnoo
TheHypnoo deleted the loop/issues-gt-600 branch May 16, 2026 12:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

AOT: Array.prototype.unshift returns the array instead of the new length AOT: spread of non-empty typed array passes denormal placeholders to callee

1 participant