Skip to content

Update dependency Jint to 4.16.2 - #2370

Merged
renovate[bot] merged 1 commit into
mainfrom
renovate/jint-4.x
Sep 9, 2026
Merged

renovate[bot] merged 1 commit into
mainfrom
renovate/jint-4.x

Conversation

@renovate

@renovate renovate Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
Jint 4.16.14.16.2 age confidence

Release Notes

sebastienros/jint (Jint)

v4.16.2

Jint 4.16.2 is a maintenance release from the 4.x branch: correctness and conformance fixes backported from main, and nothing that changes an existing API or an existing default. If you are on 4.16.1 it is a drop-in update — every public signature is the one 4.16.0 shipped, on all five target frameworks, and the per-framework snapshots in Jint.Tests.PublicInterface/Verify/ are unchanged. main remains 5.0.0 development; what is coming there is recorded as it lands in docs/v5-migration.md.

Highlights

Failures that used to end the process, or never end. A native error raised while a call's arguments are being evaluated is propagated instead of leaving an empty value behind, which on 4.16.1 could recurse until the process died — decodeURIComponent on a malformed sequence was enough (#​4009). Native recursion and the forwarding paths through bound functions and proxies are guarded so a deep native chain raises a catchable error (#​4007). A module graph too deep to link raises an error the host can catch instead of overflowing the stack (#​3548). Temporal and Intl parsing cannot throw an uncatchable RegexMatchTimeoutException because the machine was busy (#​3543), a Temporal difference past a calendar's range raises RangeError instead of spinning forever (#​3555), and the process-wide Intl culture cache and Temporal zone cache are read-only and bounded, with a rejected zone no longer remembered — closing a script-driven unbounded growth (#​3546).

Generators and built-ins, step by step. A yield* delegation reached again by a loop both re-delegates and keeps its place: countdown(3) in a loop no longer hangs, and a delegating generator no longer returns the memoized first result (#​3545). Array.prototype.map and slice hand a @@species constructor the length ToLength produced, and a non-callable map argument is a TypeError (#​3547). A trailing NUL pads neither a numeric string nor an array index (#​3552). A removed property slot is a tombstone rather than a free slot to reuse, so enumeration order survives a delete-and-readd (#​3318), and LengthOfArrayLike no longer clamps through a uint overload (#​3328).

Interop that answers for the right engine. Two engines in one process no longer decide each other's conversions and operators (#​3559), a host type converter's answer stays with the engine whose converter gave it (#​3563), and a value the host registers on a ShadowRealm — and the members its wrapper builds eagerly — belong to that realm (#​3557). Realm construction state is restored after nesting or a failure (#​4008). Overload selection is by the arguments in hand: an operator overload is chosen that way (#​3611), a params overload is chosen by the array's element type with a failing element declining rather than throwing (#​3782), an overload the argument cannot bind to is not a match, and a host operator that throws reports what it threw (#​3554). An index on a wrapped host collection is one property however it is spelled, and a member filter that hides the indexer hides it (#​3562); a read-only host collection refuses a write with a JavaScript TypeError rather than the CLR's NotSupportedException (#​3556).

Internationalization and Temporal. The Persian calendar extends into proleptic years on its 33-year cycle, so the ends of Temporal's range land in the right Persian year (#​4006); a calendar that counts Gregorian months writes their names (#​3612); and a -u- extension carrying more than one key is read whole (#​3613).

Errors. Only a string-valued stack counts as a pre-existing stack when a JavaScriptException is built, so an accessor or non-string stack on a thrown object no longer breaks error reporting (#​3677, reported by @​jeske).

Every change was verified failing-first against the unfixed branch on both .NET Framework and .NET 10, and the release was gated on a paired SunSpider and Dromaeo comparison against 4.16.1 on an idle machine: no row regressed outside run-to-run noise, most run 1–4 % faster.

What's Changed

  • Backport: a removed property slot is a tombstone, not a free slot to reuse (#​3273) by @​lahma in #​3318
  • Backport: LengthOfArrayLike, delete the uint overload rather than clamp it (#​3248) by @​lahma in #​3328
  • Temporal and Intl parsing cannot fail because the machine was busy (#​3486) by @​lahma in #​3543
  • Backport: the process-wide Intl culture cache and Temporal zone cache are read-only and bounded, and a rejected zone is not remembered by @​lahma in #​3546
  • Array: map and slice hand a @​@​species constructor the length ToLength produced (#​3510) by @​lahma in #​3547
  • Generators: a yield* delegation both re-delegates and keeps its place (backport of #​3506 and #​3518) by @​lahma in #​3545
  • A module graph too deep to link raises an error the host can catch, instead of ending the process (#​3415) by @​lahma in #​3548
  • String to number: a trailing NUL pads neither a number string nor an array index (backport of #​3544) by @​lahma in #​3552
  • Interop: a host operator reports what it threw, and an overload the argument cannot bind to is not a match by @​lahma in #​3554
  • Temporal: a difference past a calendar's range raises RangeError instead of spinning (#​3452) by @​lahma in #​3555
  • Interop: a read-only host collection refuses script with a JavaScript error, not the CLR's own (backport of #​3385) by @​lahma in #​3556
  • ShadowRealm: a value the host registers, and the members its wrapper builds eagerly, belong to that realm by @​lahma in #​3557
  • Interop: two engines in one process do not decide each other's conversions and operators (backport of #​3521 and #​3526) by @​lahma in #​3559
  • Interop: an index on a wrapped host collection is one property, and a filter that hides the indexer hides it by @​lahma in #​3562
  • Interop: a host type converter's answer stays with the engine whose converter gave it by @​lahma in #​3563
  • Interop: an operator overload is chosen by the arguments in hand (backport of #​3578) by @​lahma in #​3611
  • Intl: a calendar counting Gregorian months writes their names (backport of #​3589) by @​lahma in #​3612
  • Intl: a -u- extension carrying more than one key is read whole (backport of #​3594) by @​lahma in #​3613
  • JavaScriptException: only a string "stack" counts as a pre-existing stack (#​3607 backport) by @​lahma in #​3677
  • Interop: a params overload is chosen by the array's element type, and a failing element declines instead of throwing (#​3764) by @​lahma in #​3782
  • Backport #​3751 to 4.x: Temporal: the persian calendar extends into proleptic years on the 33-year cycle by @​lahma in #​4006
  • Backport #​3922 to 4.x: Restore realm construction state after nesting or failure by @​lahma in #​4008
  • Backport #​3845 to 4.x: Propagate native errors during call argument evaluation by @​lahma in #​4009
  • Backport #​3877 to 4.x: Guard native recursion and forwarding paths by @​lahma in #​4007

Full Changelog: sebastienros/jint@v4.16.1...v4.16.2


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot added the dependencies Pull requests that update a dependency file label Sep 9, 2026
@renovate
renovate Bot enabled auto-merge (squash) September 9, 2026 16:29
@renovate
renovate Bot merged commit 85d6278 into main Sep 9, 2026
2 checks passed
@github-project-automation github-project-automation Bot moved this from Todo to Done in TEdit Issue Triage Sep 9, 2026
@renovate
renovate Bot deleted the renovate/jint-4.x branch September 10, 2026 02:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

Development

Successfully merging this pull request may close these issues.

1 participant