Skip to content

Bump Jint from 3.0.0-beta-2049 to 4.5.0#2

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/nuget/Jint-4.5.0
Open

Bump Jint from 3.0.0-beta-2049 to 4.5.0#2
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/nuget/Jint-4.5.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jan 24, 2026

Copy link
Copy Markdown

Updated Jint from 3.0.0-beta-2049 to 4.5.0.

Release notes

Sourced from Jint's releases.

4.5.0

This is a significant milestone as this release graduates generators functionality from experimental and contains proper suspension and resume logic for both generators and async/await logic. There are a lot of changes to internals so make sure you test thoroughly.

Task interop is still marked as experimental and requires enabling explicitly in Engine options, but it also has had improvements to make it work better in Engine's event loop.

For background work to complete without engine interaction (evaluation) you need to manually process the tasks (for example if you have a timeout pending after script has been run).

engine.Execute(script);
for (var i = 0; i < 100; ++i)
{
    engine.Advanced.ProcessTasks();
    await Task.Delay(100);
}

What's Changed

4.4.2

What's Changed

Full Changelog: sebastienros/jint@v4.4.1...v4.4.2

4.4.1

What's Changed

New Contributors

Full Changelog: sebastienros/jint@v4.4.0...v4.4.1

4.4.0

This release brings both using and await using statements available to both native JS usage and NET interop. Interop will automatically wrap IDisposable and IAsyncDisposable to have handlers that will be called after using scope ends. Read more about the proposal.

What's Changed

New Contributors

Full Changelog: sebastienros/jint@v4.3.0...v4.4.0

4.3.0

What's Changed

New Contributors

Full Changelog: sebastienros/jint@v4.2.2...v4.3.0

4.2.2

This release improves interop performance when you target CLR methods with lambda functions, like List<string>.Find(x => x === "test").

What's Changed

Full Changelog: sebastienros/jint@v4.2.1...v4.2.2

4.2.1

What's Changed

New Contributors

Full Changelog: sebastienros/jint@v4.2.0...v4.2.1

4.2.0

What's Changed

New Contributors

Full Changelog: sebastienros/jint@v4.1.0...v4.2.0

4.1.0

This release contains a breaking change for interop for static fields and properties. They are no longer exposed as part of interop wrapper by default. You read more about the reasoning here.

To access public static fields or properties you should use registered TypeReferences.

Following example shows the new behavior:

[Fact]
public void StaticFieldsShouldFollowJsSemantics()
{
    _engine.Evaluate("Number.MAX_SAFE_INTEGER").AsNumber().Should().Be(NumberConstructor.MaxSafeInteger);
    _engine.Evaluate("new Number().MAX_SAFE_INTEGER").Should().Be(JsValue.Undefined);

    _engine.Execute("class MyJsClass { static MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER; }");
    _engine.Evaluate("MyJsClass.MAX_SAFE_INTEGER").AsNumber().Should().Be(NumberConstructor.MaxSafeInteger);
    _engine.Evaluate("new MyJsClass().MAX_SAFE_INTEGER").Should().Be(JsValue.Undefined);

    _engine.SetValue("MyCsClass", typeof(MyClass));
    _engine.Evaluate("MyCsClass.MAX_SAFE_INTEGER").AsNumber().Should().Be(NumberConstructor.MaxSafeInteger);
    // NEW BEHAVIOR, NOW UNDEFINED
    _engine.Evaluate("new MyCsClass().MAX_SAFE_INTEGER").Should().Be(JsValue.Undefined);
}

private class MyClass
{
    public static JsNumber MAX_SAFE_INTEGER = new JsNumber(NumberConstructor.MaxSafeInteger);
}

If you want to expose static instance fields and properties as part of instance wrappers, you need to configure the engine to do so:

var engine = new Engine(options =>
{
    options.Interop.ObjectWrapperReportedFieldBindingFlags |= BindingFlags.Static;
    options.Interop.ObjectWrapperReportedPropertyBindingFlags |= BindingFlags.Static;
});

Static methods can still be accessed as before, but you could limit exposing them too if you wish to do so:

var engine = new Engine(options =>
{
    options.Interop.ObjectWrapperReportedMethodBindingFlags = BindingFlags.Instance | BindingFlags.Public;
});

... (truncated)

4.0.3

What's Changed

New Contributors

Full Changelog: sebastienros/jint@v4.0.2...v4.0.3

4.0.2

With this release you will start to see CLR methods also reported as object members under interop when calling functions like Object.getOwnPropertyNames(x). You can revert back to old behavior by configuring an option options.Interop.ObjectWrapperReportedMemberTypes = MemberTypes.Field | MemberTypes.Property;.

What's Changed

New Contributors

Full Changelog: sebastienros/jint@v4.0.1...v4.0.2

4.0.1

What's Changed

Full Changelog: sebastienros/jint@v4.0.0...v4.0.1

4.0.0

This release changes internal JavaScript parser from Esprima to Acornima and adds some new ECMAScript features.

Relevant bug fixes below have been backported into 3.x and are already part of its releases.

What's Changed

3.1.6

What's Changed

Full Changelog: sebastienros/jint@v3.1.5...v3.1.6

3.1.5

What's Changed

Full Changelog: sebastienros/jint@v3.1.4...v3.1.5

3.1.4

What's Changed

Full Changelog: sebastienros/jint@v3.1.3...v3.1.4

3.1.3

What's Changed

Full Changelog: sebastienros/jint@v3.1.2...v3.1.3

3.1.2

What's Changed

Full Changelog: sebastienros/jint@v3.1.1...v3.1.2

3.1.1

What's Changed

Full Changelog: sebastienros/jint@v3.1.0...v3.1.1

3.1.0

What's Changed

Full Changelog: sebastienros/jint@v3.0.2...v3.1.0

3.0.2

What's Changed

New Contributors

Full Changelog: sebastienros/jint@v3.0.1...v3.0.2

3.0.1

What's Changed

New Contributors

Full Changelog: sebastienros/jint@v3.0.0...v3.0.1

3.0.0

So v3 is finally here after some seven years of sweat and tears. A big thank you to everyone who helped by contributing new features, fixed and reported problems (you can see the huge list of contributors and their valuable work at the bottom of these release notes).

Jint is now arguably the most feature complete and standards compliant JavaScript engine running purely on top of .NET runtime. All the features listed as supported pass the ECMAScript standard suite for the feature flags. That's almost 60 000 passing tests on top of Jint's own test cases.

💡 If you are benefiting from Jint or otherwise would like to show your gratitude, don't forget to sponsor the project, even a one-time donation makes a difference.

We hope you'll like the new release 🚀

Features

ECMAScript

During v3 development a a huge set of both modern ECMAScript syntax and library features were completed, to name a few:

  • arrow functions
  • let and const support
  • class support
  • rest, spread and destructuring
  • template strings
  • modules
  • async/await
  • nullish coalescing and optional chaining (a ?? b and a?.b?.c)
  • library features like ArrayBuffer, BigInt, DataView, Map, Promise, Proxy, Reflect, Set

Unfortunately generator support and some corner cases for async/await support which will require some internal engine logic refactoring didn't make the cut and will be part of some later release.

You can always refer to the main README to see the state of supported features.

Interop

A lot of interop scenarios were improved and for example extensions methods can now accessed via JavaScript code. Plenty of bugs were fixed and interop performance was improved.

Performance

Performance was a big concern when re-writing the Jint internals. Jint is being heavily used in databases like RavenDB and EventStore where execution performance is crucial. We lowered memory traffic considerably and optimized the runtime in many ways. Generally one can say that Jint v3 is at least twice as fast if not multiple times faster than previous v2 on different workloads. There's also benchmark results comparing Jint to other alternatives available.

Here's results from two well-known test suites comparing v2 and v3.

BenchmarkDotNet v0.13.12, Windows 11 (10.0.23615.1000)
AMD Ryzen 9 5950X, 1 CPU, 32 logical and 16 physical cores
.NET SDK 8.0.100
  [Host]     : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2
  DefaultJob : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2

Dromaeo

Engine FileName Mean Error Allocated
... (truncated)

3.0.0-rc-1

What's Changed

New Contributors

Full Changelog: sebastienros/jint@v3.0.0-beta-2060...v3.0.0-rc-1

3.0.0-beta-2060

What's Changed

Full Changelog: sebastienros/jint@v3.0.0-beta-2059...v3.0.0-beta-2060

3.0.0-beta-2059

This release aims to unify and clarify public APIs and hiding services that shouldn't be needed for normal usage. Services can always be exposed again if it seems necessary. If you find some API missing that you need, please create a PR with suggested API change and a test case against Jint.Tests.PublicInterface which will ensure that the API won't be broken that easily.

  • Rename FunctionInstance -> Function
  • Rename BindFunctionInstance -> BindFunction
  • Rename ClrFunctionInstance -> ClrFunction
  • Rename GetterFunctionInstance -> GetterFunction and made internal
  • Rename IPrimitiveInstance -> IJsPrimitive
  • Rename ScriptFunctionInstance -> ScriptFunction
  • Rename SetterFunctionInstance -> SetterFunction and made internal
  • Rename Engine.ClrTypeConverter to Engine.TypeConverter
  • Rename Engine.DebugHandler to Engine.Debugger
  • Move Engine.ResetCallStack to Engine.Advanced
  • Move constraint related methods to Engine.Constraints
  • Move module related methods to Engine.Modules and shorten method names
  • Move Engine.RegisterPromise to Engine.Advanced
  • Make ObjectInstance.IsLooselyEqual() protected
  • Hide JsonInstance
  • Hide ObjectInstance.CanPut()
  • Hide ObjectInstance.DefinePropertyOrThrow()
  • Hide ObjectInstance.DeletePropertyOrThrow()
  • Hide ObjectInstance.IsArray() and add JsValueExtensions.IsArray()
  • Hide ObjectInstance.SetPrototypeOf() and allow set via ObjectInstance.Prototype property set
  • Hide ObjectInstance.IsArrayLike
  • Hide ObjectInstance.Length and only expose JsArray.Length and JsTypedArray.Length properties
  • Remove ObjectInstance.Invoke
  • Remove Engine.Realm, expose Engine.Intrinsics and Engine.Global directly

What's Changed

Full Changelog: sebastienros/jint@v3.0.0-beta-2058...v3.0.0-beta-2059

3.0.0-beta-2058

What's Changed

New Contributors

Full Changelog: sebastienros/jint@v3.0.0-beta-2057...v3.0.0-beta-2058

3.0.0-beta-2057

What's Changed

New Contributors

Full Changelog: sebastienros/jint@v3.0.0-beta-2056...v3.0.0-beta-2057

3.0.0-beta-2056

What's Changed

Full Changelog: sebastienros/jint@v3.0.0-beta-2055...v3.0.0-beta-2056

3.0.0-beta-2055

What's Changed

Full Changelog: sebastienros/jint@v3.0.0-beta-2054...v3.0.0-beta-2055

3.0.0-beta-2054

What's Changed

Full Changelog: sebastienros/jint@v3.0.0-beta-2053...v3.0.0-beta-2054

3.0.0-beta-2053

What's Changed

New Contributors

Full Changelog: sebastienros/jint@v3.0.0-beta-2052...v3.0.0-beta-2053

3.0.0-beta-2052

What's Changed

Full Changelog: sebastienros/jint@v3.0.0-beta-2051...v3.0.0-beta-2052

3.0.0-beta-2051

What's Changed

New Contributors

Full Changelog: sebastienros/jint@v3.0.0-beta-2050...v3.0.0-beta-2051

3.0.0-beta-2050

What's Changed

New Contributors

Full Changelog: sebastienros/jint@v3.0.0-beta-2049...v3.0.0-beta-2050

Commits viewable in compare view.

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

---
updated-dependencies:
- dependency-name: Jint
  dependency-version: 4.5.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added .NET Pull requests that update .NET code dependencies Pull requests that update a dependency file labels Jan 24, 2026
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 .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants