Skip to content

Update dependency Jint to 4.9.0#1154

Open
renovate[bot] wants to merge 1 commit intomasterfrom
renovate/jint-4.x
Open

Update dependency Jint to 4.9.0#1154
renovate[bot] wants to merge 1 commit intomasterfrom
renovate/jint-4.x

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented May 10, 2026

This PR contains the following updates:

Package Change Age Confidence
Jint 4.8.04.9.0 age confidence

Release Notes

sebastienros/jint (Jint)

v4.9.0

Highlights

Jint 4.9.0 is a large release focused on performance, CLR interop ergonomics, and ECMAScript spec coverage.

New language features

  • Import Defer and Source Phase Importsimport defer * as ns from "mod" / import.defer() and import source x from "mod" / import.source() (TC39 proposals; 346 + 428 test262 tests pass) (#​2396)
  • Import Textimport txt from "./file.txt" with { type: "text" } (TC39 Stage 3; complements the existing json / bytes paths) (#​2403)

Performance

The interpreter and built-ins got broad attention this release — see the v4.8.0 → v4.9.0 comparison table below for measured deltas.

  • Custom regex engine interpreter optimized (#​2388)
  • URI decode / unescape: faster and lower-allocation (#​2389)
  • Array.prototype.sort / indexOf / includes / concat and sparse-array conversion optimized (#​2408)
  • Lazy backing for new Array(N) plus Array.Copy fast paths for shift / unshift / splice (#​2451)
  • Shape-versioned inline cache for member-expression reads (#​2412)
  • FunctionEnvironment pooled per JintFunctionDefinition.State (#​2413)
  • Identifier resolution: cached binding location in the slot fast path, walks skipped through empty function environments, inline small block-env slot resets (#​2416, #​2419, #​2420)
  • Recursion pool + zero-alloc JsString primitive reads (#​2450)
  • Avoid double-evaluating assignment bases in member access (#​2402)

CLR interop

  • New opt-in Options.Interop.PreferJsPrototypeMethods() makes JS prototype methods win over CLR methods on wrapped objects (list.reverse() / list.sort() now do the JS thing on IList<T>) (#​2440)
  • JS function call signatures preserved when functions are stored in Dictionary<string, object> (#​2392)
  • Non-string CLR dictionary keys are now supported (#​2449)
  • ThrowOnUnresolvedMember no longer throws on missing dictionary keys (#​2446)
  • Fixed MissingMemberException on implicit string coercion of CLR objects (#​2439)
  • CLR exceptions raised from JS now carry the originating JS source location and call stack — read via JintException.TryGetJavaScriptLocation / TryGetJavaScriptCallStack, or via JavaScriptException.Location when using CatchClrExceptions() (#​2459)

Correctness & spec coverage

  • Async for-of destructuring resume bugs fixed (#​2453, #​2456)
  • Module system correctness improvements (#​2395)
  • Function.prototype.toString() returns the original source text for non-native functions (#​2394)
  • Custom-engine regex literals now honor the prepare-time RegexTimeout (#​2457)
  • Regex parsing cleanup and improved fallback-to-custom-engine detection (#​2393, #​2398)
  • Many test262 exclusions dropped: Unicode SpecialCasing, calendar arithmetic, PlainMonthDay, NumberFormat precision, Hebrew leap-month, era/year consistency, locale numbering, plus a precision-aware NumberFormat path and a new ICalendarProvider extension point (#​2390, #​2407, #​2409, #​2411, #​2414, #​2423)
  • Acornima parser upgraded to 1.6.1 (#​2415)

Performance: Jint 4.8.0 → 4.9.0

Same machine, same scripts, default BenchmarkDotNet settings on the v4.8.0 and v4.9.0 tags. Lower is better. Negative deltas are improvements.

Hardware: AMD Ryzen 9 5950X · Windows 11 · .NET 10.0.7 · BenchmarkDotNet 0.15.8.

Cold path — Engine.Execute(string) (parses on every call)

Script v4.8.0 Mean v4.9.0 Mean Δ Time v4.8.0 Alloc v4.9.0 Alloc Δ Alloc
array-stress 4,532.5 µs 3,600.1 µs −20.6% 7,375.95 KB 1,940.45 KB −73.7%
dromaeo-object-array 29,904.0 µs 18,464.3 µs −38.3% 96,765.24 KB 10,512.56 KB −89.1%
dromaeo-object-array-modern 31,247.4 µs 17,622.9 µs −43.6% 96,765.93 KB 10,513.07 KB −89.1%
dromaeo-core-eval 2,723.9 µs 2,460.3 µs −9.7% 1,342.64 KB 1,344.95 KB +0.2%
dromaeo-object-regexp 140,426.3 µs 134,688.6 µs −4.1% 164,829.32 KB 165,485.78 KB +0.4%
dromaeo-string-base64-modern 35,122.2 µs 32,706.7 µs −6.9% 3,780.89 KB 3,773.89 KB −0.2%
stopwatch 213,814.7 µs 194,933.2 µs −8.8% 72,704.98 KB 39,418.89 KB −45.8%
stopwatch-modern 252,239.1 µs 237,843.5 µs −5.7% 72,921.34 KB 39,635.13 KB −45.6%

Cached path — Engine.Execute(Prepared<Script>) (parse once, reuse)

Script v4.8.0 Mean v4.9.0 Mean Δ Time v4.8.0 Alloc v4.9.0 Alloc Δ Alloc
array-stress 4,488.8 µs 3,668.5 µs −18.3% 7,347.16 KB 1,911.66 KB −74.0%
dromaeo-object-array 31,308.0 µs 17,237.0 µs −45.0% 96,717.15 KB 10,464.17 KB −89.2%
dromaeo-object-array-modern 33,145.1 µs 18,542.6 µs −44.1% 96,718.78 KB 10,465.81 KB −89.2%
dromaeo-object-regexp 111,053.6 µs 96,606.3 µs −13.0% 162,817.15 KB 165,386.35 KB +1.6%
dromaeo-object-regexp-modern 111,853.0 µs 103,489.0 µs −7.5% 165,813.27 KB 165,159.68 KB −0.4%
dromaeo-string-base64 28,926.7 µs 27,136.3 µs −6.2% 3,682.73 KB 3,675.61 KB −0.2%
stopwatch 215,316.7 µs 210,552.7 µs −2.2% 72,673.29 KB 39,387.13 KB −45.8%
stopwatch-modern 268,956.0 µs 250,468.4 µs −6.9% 72,889.02 KB 39,602.85 KB −45.7%

What's Changed

  • Optimize URI decode/unescape performance and memory usage by @​lahma in #​2389
  • Update Test262Harness settings to remove unicode exclusions by @​lahma in #​2390
  • Optimize custom regex engine interpreter performance by @​lahma in #​2388
  • Regexp parsing cleanup by @​adams85 in #​2393
  • Preserve JS function call signatures when functions are stored in Dictionary<string, object> by @​Copilot in #​2392
  • Improve module system correctness and update test262 suite by @​lahma in #​2395
  • Improve fallback to custom engine detection logic for regexps by @​adams85 in #​2398
  • Bump GitHubActionsTestLogger and 3 others by @​dependabot[bot] in #​2397
  • Improve Function.prototype.toString() to return source text for non-native functions by @​adams85 in #​2394
  • Avoid double-evaluating assignment bases in member access by @​Copilot in #​2402
  • Implement import defer and source phase imports proposals by @​lahma in #​2396
  • Update README.md by @​adams85 in #​2404
  • Bump the all-dependencies group with 4 updates by @​dependabot[bot] in #​2406
  • Implement import text proposal by @​lahma in #​2403
  • Drop test262 exclusions for cover-LHS naming, method toString, and Unicode SpecialCasing by @​lahma in #​2407
  • Optimize Array.prototype.{sort,indexOf,includes,concat} and ArrayInstance.ConvertToSparse by @​lahma in #​2408
  • Reduce test262 exclusions: PYM since/until, with(), calendarresolvefields, PMD monthCode, locale numbering by @​lahma in #​2409
  • Drop Temporal/intl402 test262 exclusions: Hebrew leap-month, era/year consistency, PMD validation, plus cleanups by @​lahma in #​2411
  • Use shape-versioned inline cache for member-expression reads by @​lahma in #​2412
  • Pool FunctionEnvironment per JintFunctionDefinition.State by @​lahma in #​2413
  • Upgrade to Acornima v1.6.1 by @​adams85 in #​2415
  • Cache binding location in JintIdentifierExpression slot fast path by @​lahma in #​2416
  • Document the (uint)i < (uint)length bounds-check idiom and apply it to four sites by @​lahma in #​2417
  • Skip identifier walk through empty FunctionEnvironments by @​lahma in #​2419
  • Inline small block-env slot reset by @​lahma in #​2420
  • Source generator for built-in object registration by @​lahma in #​1076
  • Reduce test262 exclusions across calendar arithmetic and PlainMonthDay by @​lahma in #​2414
  • Source generator: expand to Boolean, Error, Number, Function, Object prototypes by @​lahma in #​2421
  • Source generator: migrate Date, Array, String, RegExp prototypes by @​lahma in #​2422
  • Reduce test262 exclusions: precision-aware NumberFormat + ICalendarProvider extension point by @​lahma in #​2423
  • Source generator: migrate JSON, Reflect, Symbol, BigInt prototypes by @​lahma in #​2425
  • Source generator: migrate Promise/WeakMap/WeakRef/FinalizationRegistry prototypes + Symbol/BigInt constructors by @​lahma in #​2426
  • Source generator: migrate ArrayBuffer/SharedArrayBuffer/DataView prototypes by @​lahma in #​2433
  • Source generator: add [JsSymbolAccessor] + migrate Proxy/ArrayBuffer/SharedArrayBuffer/Map constructors by @​lahma in #​2434
  • Source generator: migrate Atomics + WeakSetPrototype + SetConstructor by @​lahma in #​2435
  • Source generator: migrate Map + Set prototypes + IteratorPrototype family by @​lahma in #​2436
  • Fix MissingMemberException on implicit string coercion of CLR objects by @​lahma in #​2439
  • Source generator: finish rollout, spec-shaped signatures, strip redundant Length by @​lahma in #​2437
  • Add option to prefer JS prototype methods over CLR on wrapped objects by @​lahma in #​2440
  • Source generator: add [JsIntrinsicReference], migrate GlobalObject, cache Keys by @​lahma in #​2442
  • Benchmarks: add 7 source-gen perf suites for Phase 2/3/4 follow-ups by @​lahma in #​2443
  • Source generator + Math: variadic [Rest, ToX] + AggressiveInlining + slot elimination + selective [JsProperty] cache by @​lahma in #​2444
  • Don't throw on missing dictionary keys with ThrowOnUnresolvedMember by @​lahma in #​2446
  • Convert issue templates to YAML forms, add PR template and SECURITY.md by @​lahma in #​2447
  • Support non-string CLR dictionary keys by @​lahma in #​2449
  • Close perf regressions vs v4.8.0: recursion pool + JsString primitive read alloc by @​lahma in #​2450
  • Bump the all-dependencies group with 7 updates by @​dependabot[bot] in #​2428
  • Reduce Array allocations: lazy new Array(N) backing + Array.Copy fast path for shift/unshift/splice by @​lahma in #​2451
  • Fix async for-of destructuring resume by @​nfcampos in #​2453
  • Fix one-shot iterable head destructuring on async for-of body resume by @​lahma in #​2456
  • Honor prepare-time RegexTimeout for custom-engine regex literals (#​2454) by @​lahma in #​2457
  • JintIdentifierExpression: gate slot cache walk on engine identity by @​lahma in #​2458
  • Bump the all-dependencies group with 6 updates by @​lahma in #​2460
  • Bump Meziantou.Analyzer and YantraJS.Core by @​dependabot[bot] in #​2461
  • Attach JS source location to CLR exceptions (#​2429) by @​lahma in #​2459

New Contributors

Full Changelog: sebastienros/jint@v4.8.0...v4.9.0


Configuration

📅 Schedule: (UTC)

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

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, 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 requested a review from a team as a code owner May 10, 2026 09:46
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.

0 participants