Closed sebastienros closed 1 year ago
Array.group
and Array.groupToMap
(stage 3 proposals) have been merged to main.
RegExp named capture groups were just merged to main.
RegExp match indices support was just merged to main.
Promise.any
and Promise.allSettled
were just merged to main.
A feature popular among the cool kids is now available on main
branch/MyGet feed called async
/await
. Please try it out and prepare to make PRs if it doesn't work 😉
We can cross it out as completed if no-one complains too much.
Don't forget to donate all the big business money to GitHub sponsors, I spent a vacation day with this
A slightly exotic feature called FinalizationRegistry
has landed main. As it's related to garbage collection there might still be some quirks to fix, but now also that feature box has been ticked.
Implementations for https://github.com/tc39/proposal-symbols-as-weakmap-keys and https://github.com/tc39/proposal-change-array-by-copy (stage 3 proposals) have been merged to main.
Is there a Minimum Features list somewhere for what is expected for a Version 3 full release?
If there's no clearly defined minimum features list, then this thing is going to continue sitting in Beta forever.
Expecting 100% coverage is unrealistic, and it seems to me like the current coverage probably warrants non-beta.
Also, it would be great if this thing was easily added from NuGet package manager. Only version 2 seems visible right now.
@jhouxzirrus would you be ok with non-semantic versioning - like API and feature brreaking changes in minor releases?
@jhouxzirrus would you be ok with non-semantic versioning - like API and feature brreaking changes in minor releases?
I think those concerns are secondary.
After establishing a minimum reasonable features set, then its possible to target that set for a major release followed by minor releases that consist of fixes to any discovered bugs or oversights.
Features beyond the minimum set would then be consideration either for minor releases where code impact is low (minimal to no breaking changes), or target the next major release (version 4).
I'm just saying.... when you build software without targeting a restricted feature set (especially for something as pervasive as ECMA features), you end up in "forever beta" territory and that has a distinct negative impact on users.... not to mention possible burnout for project contributors since they feel like the project will never be complete.
@pha3z If such minimum list would be established, would you like to help out implementing the missing bits? I think concrete help would be the key instead of talking about how software should be planned or released.
I'm not sure I'm qualified to assist or have time.
I only observed that the project seems to be very mature, and so I poked my head into suggest that maybe its not really beta material anymore.... and wondered if maybe it needs a ribbon on it so it can be published to nuget and made easier for users to get started with it. :)
@cyraid please use discussions to keep this thread focused on 3.x delivery. See https://github.com/sebastienros/jint/blob/main/Jint.Tests/Runtime/InteropTests.MemberAccess.cs for member access strategies which should help you in this particular case.
All ECMAScript 2022 features should now be supported in main:
Also ECMAScript 2020 export * as ns from
was actually already working for modules and covered by tests. Updated supported feature list can be seen on repo's README.md.
All ECMAScript 2022 features should now be supported in main:
- Class Fields
- RegExp Match Indices
- Top-level await
- Ergonomic brand checks for Private Fields
- .at()
- Accessible Object.prototype.hasOwnProperty (Object.hasOwn)
- Class Static Block
- Error Cause
Also ECMAScript 2020
export * as ns from
was actually already working for modules and covered by tests. Updated supported feature list can be seen on repo's README.md.
Wow, seriously? What are you guys, machines? Jokes aside, good job!
Edit: What are you guys missing, just tail calls and generators?
Edit: What are you guys missing, just tail calls and generators?
Basically generators. Tail calls is a bit niche and might not be worth the effort. Async has some corner cases to fix too.
Now that ES2023 is nearing finalization, it seems that Jint has those features also covered, go figure. README has been updated to reflect that.
I have managed to port Jint to using Esprima .NET. All unit tests from Jint 2.0 are passing so I am confident with the stability and feature set. Right now it targets both net45 and dotnet core, and it's missing the portable target but it's temporary. It has been released on nuget and is under the
es6
branch of this repository.The goal of this version is to support ECMAScript 2016 aka ES6. Esprima .NET being a fully compliant ECMAScript 2016 parser, we can know start working on new feature one by one. All ES6 programs will be parsed correctly, we just need to handle them and implement their behavior by following the standard, like it was done for ES5 in Jint 2.0.
Useful links:
A GitHub project was created to follow the evolution of the implementation. A new Beta nuget package will ship for any tasks reaching completion.