Releases: sebastienros/jint
v3.0.0-beta-2046
What's Changed
- Ensure support for custom null and undefined by @lahma in #1407
- Clear interop identity tracking ConditionalWeakTable in Engine.Dispose by @lahma in #1408
Full Changelog: v3.0.0-beta-2045...v3.0.0-beta-2046
v3.0.0-beta-2045
What's Changed
- Fix some problems revealed by test262 suite by @lahma in #1371
- Add Loaded event to DefaultModuleLoader by @Jither in #1373
- Module-related debugger improvements by @Jither in #1374
- Add support for constructors with default parameters by @cschwarz in #1383
- Debugger API improvements by @Jither in #1382
- Improve property selection for setting value under interop by @lahma in #1389
- Update GitHub Actions checkout to v3 by @lahma in #1390
- Fix switch's case block lexical scope handling by @lahma in #1392
- Improve parseFloat performance and number range by @lahma in #1396
- Fix nullable annotation of Engine.Invoke arguments by @mus65 in #1403
- Improved support for defining custom JsString deriving type by @lahma in #1404
- Upgrade to Esprima 3.0.0-beta-10 by @lahma in #1405
New Contributors
Full Changelog: v3.0.0-beta-2044...v3.0.0-beta-2045
v3.0.0-beta-2044
This is one of those releases that tries some limits with regards to hiding things. You might find some feature is now internal and hidden, but it's open for discussion to open it back to public. It's an iteration trying to find minimal set for public consumption to allow some development wiggle room.
If you were using ArrayInstance
, DateInstance
or ObjectInstance
as your native type access for plain objects and arrays, you should now use JsArray
, JsDate
and JsObject
respectively.
If you were using Undefined.Instance
or Null.Instance
, you should now refer them via central JsValue.Undefined
and JsValue.Null
.
What's Changed
- Unify and cleanup API by @lahma in #1355
- Optimize plain object access by @lahma in #1356
- Allow configuring TypeReference target instance creator by @lahma in #1357
- Small performance optimization to string handling by @lahma in #1358
- Fix nested object member destructuring by @lahma in #1359
- Fix JsArray(PropertyDescriptor[]) to initialize prototype by @lahma in #1360
- Add ArrayInstance underlying array conversion when needed by @lahma in #1361
- Cleanup and expose shadow realm API by @lahma in #1362
- Optimize iterators a bit by @lahma in #1363
- Update to latest test262 suite and implement Symbols as WeakMap keys by @lahma in #1365
- Implement change Array by copy by @lahma in #1366
- Fix some switch/case logic issues by @lahma in #1367
Full Changelog: v3.0.0-beta-2043...v3.0.0-beta-2044
v3.0.0-beta-2043
This release concentrates on fixing things surfaced by having a compat-table fork providing us nice visual for Jint kindly developed by @KurtGokhan .
There's also initial support for async
/await
, there might be dragons.
What's Changed
- Fix some Object static methods returning wrong value by @KurtGokhan in #1318
- Fix toPrimitive evaluating multiple times during "in" expression by @KurtGokhan in #1319
- Fix error stack handling when last syntax node is not present by @lahma in #1322
- Implement async/await by @lahma in #1323
- Fix TaggedTemplate issues by @lahma in #1324
- Fix array issues by @lahma in #1325
- Make object wrapper cache hold ObjectInstance type by @libaowei in #1326
- Implement FinalizationRegistry by @lahma in #1328
- Cache wrapped object returned by WrapObjectHandler by @Genteure in #1327
- Fix some prototype chain issues uncovered by compat-table by @lahma in #1334
- Fix ToPropertyDescriptor Proxy issues by @lahma in #1335
- Fix default date constructor to clip decimal part by @lahma in #1340
- Allow deleting dictionary entries via interop by @lahma in #1341
- Add decimal support under type conversion by @lahma in #1342
- Fix some class handling issues by @lahma in #1346
- Fix some array issues uncovered by compat-table tests by @lahma in #1347
- Fix ArrayPatternProtocol indexing for function parameters by @lahma in #1348
- Fix some remaining function parameter destructuring issues by @lahma in #1349
- PublicInterface test for CancellationConstraint.Reset by @EnCey in #1350
- Add easier APIs for interop usage by @lahma in #1351
- Improve array interop API by @lahma in #1352
- Fix some proxy issues by @lahma in #1353
New Contributors
Full Changelog: v3.0.0-beta-2042...v3.0.0-beta-2043
v3.0.0-beta-2042
This release had aim to add some missing EcmaScript features and top of that some performance improvements to native array handling.
What's Changed
- Add ability to prepare and reuse module code by @libaowei in #1300
- Add
SkipLocalsInit
attribute by @lahma in #1303 - Upgrade to latest test262 suite and fix issues by @lahma in #1304
- Implement
Array.group
andArray.groupToMap
by @lahma in #1306 - Enable some tests that work now correctly, minor fixes by @lahma in #1307
- Implement RegExp named capture groups by @lahma in #1309
- Implement RegExp match indices by @lahma in #1310
- Implement
Promise.any
by @KurtGokhan in #1312 - Reduce memory allocations in array handling by @lahma in #1314
- Update benchmark results by @lahma in #1315
- Implement
Promise.allSettled
by @KurtGokhan in #1316 - Upgrade to Esprima 3.0.0-beta-9 by @lahma in #1317
New Contributors
Full Changelog: v3.0.0-beta-2041...v3.0.0-beta-2042
v3.0.0-beta-2041
This was a performance-oriented sprint, especially improving recursive call performance/limits and with these changes also execution speed was somewhat improved.
BenchmarkDotNet=v0.13.2, OS=Windows 11 (10.0.22621.457)
AMD Ryzen 9 5950X, 1 CPU, 32 logical and 16 physical cores
.NET SDK=6.0.400
[Host] : .NET 6.0.8 (6.0.822.36306), X64 RyuJIT AVX2
Job-UBAEQR : .NET 6.0.8 (6.0.822.36306), X64 RyuJIT AVX2
Job-ZIAYSB : .NET 6.0.8 (6.0.822.36306), X64 RyuJIT AVX2
Method | Job | NuGetReferences | FileName | Mean | Error | StdDev | Median | Gen0 | Gen1 | Gen2 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|
Run | Job-UBAEQR | Jint 3.0.0-beta-2040 | dromaeo-3d-cube | 28.906 ms | 0.0383 ms | 0.0320 ms | 28.913 ms | 437.5000 | 156.2500 | - | 7514.51 KB |
Run | Job-ZIAYSB | Jint 3.0.0-beta-2041 | dromaeo-3d-cube | 25.401 ms | 0.0171 ms | 0.0160 ms | 25.395 ms | 437.5000 | 31.2500 | - | 7165.03 KB |
Run | Job-UBAEQR | Jint 3.0.0-beta-2040 | dromaeo-core-eval | 8.635 ms | 0.0177 ms | 0.0157 ms | 8.637 ms | 15.6250 | - | - | 324.28 KB |
Run | Job-ZIAYSB | Jint 3.0.0-beta-2041 | dromaeo-core-eval | 5.992 ms | 0.0180 ms | 0.0159 ms | 5.990 ms | 15.6250 | - | - | 320.72 KB |
Run | Job-UBAEQR | Jint 3.0.0-beta-2040 | dromaeo-object-array | 123.631 ms | 0.4371 ms | 0.4089 ms | 123.593 ms | 6500.0000 | 1000.0000 | 250.0000 | 106178.11 KB |
Run | Job-ZIAYSB | Jint 3.0.0-beta-2041 | dromaeo-object-array | 78.176 ms | 0.9794 ms | 0.9161 ms | 77.686 ms | 6571.4286 | 1142.8571 | 285.7143 | 106135.51 KB |
Run | Job-UBAEQR | Jint 3.0.0-beta-2040 | droma(...)egexp [21] | 324.274 ms | 4.1804 ms | 3.7058 ms | 324.941 ms | 13000.0000 | 8000.0000 | 4000.0000 | 257107.36 KB |
Run | Job-ZIAYSB | Jint 3.0.0-beta-2041 | droma(...)egexp [21] | 308.247 ms | 2.6686 ms | 2.4962 ms | 308.574 ms | 12000.0000 | 8000.0000 | 4000.0000 | 234249.26 KB |
Run | Job-UBAEQR | Jint 3.0.0-beta-2040 | droma(...)tring [21] | 459.941 ms | 31.5089 ms | 92.9048 ms | 501.092 ms | 45000.0000 | 36000.0000 | 35000.0000 | 1350898.06 KB |
Run | Job-ZIAYSB | Jint 3.0.0-beta-2041 | droma(...)tring [21] | 428.282 ms | 33.2879 ms | 98.1500 ms | 449.073 ms | 46000.0000 | 38000.0000 | 37000.0000 | 1331694.12 KB |
Run | Job-UBAEQR | Jint 3.0.0-beta-2040 | droma(...)ase64 [21] | 78.890 ms | 0.1867 ms | 0.1655 ms | 78.885 ms | 428.5714 | 142.8571 | - | 7954.56 KB |
Run | Job-ZIAYSB | Jint 3.0.0-beta-2041 | droma(...)ase64 [21] | 66.628 ms | 0.1255 ms | 0.0980 ms | 66.606 ms | 375.0000 | 125.0000 | - | 7790.57 KB |
What's Changed
- Improve recursion performance v1 by @lahma in #1269
- Slim down Completion and ExpressionResult struct sizes by @lahma in #1270
- Improve error location reporting by @lahma in #1273
- Fix array method scoring under interop by @lahma in #1274
- Include inherited static members in interop member search by @lahma in #1275
- More tweaks to reduce call stack size by @lahma in #1277
- Upgrade benchmark project and add YantraJS by @lahma in #1276
- Improve global object setup and access performance by @lahma in #1280
- Optimize new Date() by @lahma in #1281
- Reduce memory allocations in function calls by @lahma in #1282
- Restructure benchmarks by @lahma in #1283
- Fix array performance regression by @lahma in #1284
- Call Dispose on enumerator (#1285) by @jm-merle in #1286
- Make BindFunctionInstance public by @paynesworld in #1288
- Upgrade to Esprima 3.0.0-beta-7 by @lahma in #1289
- Open some API and create public API tests for compatibility by @lahma in #1290
- Move data from Completion and ExpressionResult to context by @lahma in #1291
- Remove ExpressionResult by @lahma in #1292
- Reduce Engine references in expressions by @lahma in #1293
- Restore public access to JavaScriptException ctor by @Genteure in #1295
- Update benchmark results by @lahma in #1294
New Contributors
- @jm-merle made their first contribution in #1286
- @paynesworld made their first contribution in #1288
Full Changelog: v3.0.0-beta-2040...v3.0.0-beta-2041
v3.0.0-beta-2040
This version brings the (hopefully) API complete version of Esprima v3 (still in beta), which has had some breaking changes and performance improvements. Check Esprima changelog for details.
What's Changed
- Enable nullable reference types by default by @lahma in #1237
- Implement WeakRef by @lahma in #1242
- Fix call stack pop to account for stack being reset by @lahma in #1243
- Rethrow CLR function exceptions as JS errors by @christianrondeau in #1246
- Removed ProxyInstance ToString override so calls the property 'toString' by @omegatmm in #1250
- Upgrade to Esprima 3.0.0-beta-4 by @lahma in #1251
- Upgrade to Esprima 3.0.0-beta-5 by @lahma in #1260
- Fix Regex Iterator by @vicr123 in #1264
- Reduce stack frame size during Call and Construct by @lahma in #1267
- Upgrade to Esprima 3.0.0-beta-6 by @lahma in #1268
New Contributors
Full Changelog: v3.0.0-beta-2039...v3.0.0-beta-2040
v3.0.0-beta-2039
What's Changed
- Support custom CLR object creator for ObjectInstance.ToObject by @lahma in #1140
- Improve method scoring logic between double and float by @lahma in #1143
- Fix array performance regression by @lahma in #1148
- Hide Call method from public API by @lahma in #1062
- Make Engine implement IDisposable by @lahma in #1153
- Update README.md by @lahma in #1149
- Update test262 to latest and fix issues by @lahma in #1151
- Implement String.prototype.replaceAll by @lahma in #1155
- Add ScriptOrModule to FunctionInstance by @lahma in #1156
- Add prism test with c# by @sebastienros in #1157
- Fix JSON indentation by @resnickj in #1158
- Fix JsonParser not able to parse "\u0000" by @Genteure in #1160
- Make JsonParser escape character parsing more strict by @Genteure in #1161
- Fix TimeoutInterval crashing ImportModule by @christianrondeau in #1165
- Fix inheriting from TypeReference backed interop type by @lahma in #1168
- Improve class constructor error reporting by @lahma in #1169
- Bring function construction closer to the spec by @lahma in #1170
- Remove unnecessary ObjectClass types by @lahma in #1172
- Add import.meta support by @lahma in #1173
- Implement ShadowRealm by @lahma in #1174
- Implement AggregateError by @lahma in #1175
- Fix GetOwnPropertyKeys canonical array index handling by @lahma in #1184
- Keep C# stack trace in exceptions thrown in JS, provide JS stack in inner exception instead by @christianrondeau in #1171
- Update Test262Harness and other test project dependencies by @lahma in #1185
- Fix smallest index handling against collection under interop by @lahma in #1190
- Added the ability to catch the CLR exception from an overridden arithmetic operator. by @AndrewLityagin in #1191
- Upgrade Esprima to 3.0.0-beta-2 by @lahma in #1195
- Generate test262 test cases on build if missing by @lahma in #1200
- Implement defineGetter and defineSetter by @lahma in #1203
- Update demo video link by @victorhnogueira in #1204
- Decode import URI before using it as a file name by @fluffware in #1206
- Improve null handling in generic parameter resolution logic by @lahma in #1209
- Fix missing evaluation context in constructor by @KurtGokhan in #1212
- Fix interop stack trace unwind (#1202) by @resnickj in #1213
- Fix params array type handling under interop by @lahma in #1216
- Exclude Error constructor from stack trace by @resnickj in #1217
- Implement well-formed-json-stringify by @lahma in #1220
- Create sample how to JSON.stringify CLR types by @lahma in #1226
- Maintain ObjectWrapper identity by @lahma in #1227
- Improve parseInt logic by @lahma in #1229
- Enable implicit usings by @lahma in #1230
- Add intermediary prototype for TypeReference by @lahma in #1231
- Fix optional member call by @lahma in #1233
- Direct C# interop replacing default serializing in JsonSerializer by @ajdust in #1232
- Upgrade to Esprima 3.0.0-beta-3 by @lahma in #1235
New Contributors
- @Genteure made their first contribution in #1160
- @AndrewLityagin made their first contribution in #1191
- @victorhnogueira made their first contribution in #1204
- @fluffware made their first contribution in #1206
- @ajdust made their first contribution in #1232
Full Changelog: v3.0.0-beta-2038...v3.0.0-beta-2039
v3.0.0-beta-2038
What's Changed
- Fix NullReferenceException in RegExp.prototype.source by @lahma in #1022
- Let exceptions bubble from ReflectionAccessor by @lahma in #1023
- Anonymous lambda should have empty function name by @lahma in #1024
- Run SunSpiderTests("controlflow-recursive.js") only in release mode by @lahma in #1025
- Array.sort should obey execution constraints by @lahma in #1026
- ES2020 BigInt by @lahma in #1027
- Module loading support by @pluethi1 in #990
- added int vs float diff for function overloads by @CreepGin in #1036
- Fix JSON-serialization issues (function-valued properties) by @resnickj in #1037
- Fix some unicode tests by @sebastienros in #1033
- Fix JsonParser error behavior by @resnickj in #1038
- Fix issues uncovered by latest test262 suite by @lahma in #1040
- Fix script-level strict mode handling by @lahma in #1043
- Bound function should not inherit from FunctionInstance by @lahma in #1044
- Fix issues related to JSON, Math, RegExp and Proxy by @lahma in #1045
- Allowing to use nullable propagation on callables again. Fixed #1041 by @ayende in #1042
- Add Engine.Construct method by @lahma in #1047
- Allow JS class to extend CLR type by @lahma in #1049
- Update ECMAScript feature status, include ES2021 by @lahma in #1052
- Fix more issues related to built-in objects by @lahma in #1053
- Fix issues when running on ARM architecture by @lahma in #1061
- Various Interop fixes by @KurtGokhan in #1063
- Implement array find from last by @lahma in #1070
- Fix some error related issues by @lahma in #1071
- Fix iterator prototype and Reflect/Proxy issues by @lahma in #1072
- Fix BigInt loose equality by @lahma in #1073
- Improve function interop by @KurtGokhan in #1074
- Date.parse should default to local time by @shlomo-ildar in #1083
- Fix integer addition/subtraction overflow by @conicgames in #1091
- Fix reference checks after delete by @lahma in #1095
- Support ECMAScript modules (export/import statements, modules definition) by @christianrondeau in #1054
- Explicit/implicit cast operator search should check parameter type by @lahma in #1098
- Always allow operator overloaded conversion by @lahma in #1099
- Allow JavaScriptException to be subclassed by @source-transformer in #1093
- Fix class declaration hoisting and typeof double-evaluation by @lahma in #1104
- Add .editorconfig by @lahma in #1105
- Module support fixes and improvements by @christianrondeau in #1102
- Add support for generic methods under interop by @source-transformer in #1103
- Generic Methods: better generic method support. by @source-transformer in #1106
- Debugger improvements 4b by @Jither in #1113
- Use Test262Harness to run tests by @lahma in #1039
- Delete Jint.Tests.Ecma by @lahma in #1116
- Delete obsolete Jint.Tests.Test262 files by @lahma in #1117
- Change Jint.Tests.CommonScripts run with NUnit by @lahma in #1118
- Date related fixes and improvements by @lahma in #1107
- Add default iterator prototype for IteratorInstance by @lahma in #1126
- Improve dictionary based CLR interop by @lahma in #1127
- Allow adding symbol properties to CLR objects by @lahma in #1131
- Update build.yml by @lahma in #1132
New Contributors
- @pluethi1 made their first contribution in #990
- @CreepGin made their first contribution in #1036
- @resnickj made their first contribution in #1037
- @shlomo-ildar made their first contribution in #1083
- @conicgames made their first contribution in #1091
- @christianrondeau made their first contribution in #1054
- @source-transformer made their first contribution in #1093
Full Changelog: v3.0.0-beta-2037...v3.0.0-beta-2038
v3.0.0-beta-2037
What's Changed
- Remove IIterator interface by @lahma in #1000
- Generic string-keyed dictionary indexing under interop by @lahma in #1002
- Fix JSON.stringify for Lists by @lahma in #1006
- Upgrade infrastructure to .NET 6 by @lahma in #1007
- Improve stringify for JObject by @lahma in #1009
- Add IConvertible handling for DateTime and empty/dbnull by @lahma in #1010
- Improve operator overloading logic by @lahma in #1011
- Upgrade Esprima to version 2.0.4 by @lahma in #1015
Full Changelog: v3.0.0-beta-2036...v3.0.0-beta-2037