jurassic
v3.0
Jurassic is an implementation of the ECMAScript language and runtime. It aims to provide the best performing and most standards-compliant implementation of JavaScript for .NET. Jurassic is not intended for end-users; instead it is intended to be integrated into .NET programs. If you are the author of a .NET program, you can use Jurassic to compile and execute JavaScript code.
Install the NuGet package.
See the wiki for full usage details.
Support for ECMAScript 6 is in progress. See http://kangax.github.io/compat-table/es6/ for the definition of each feature. The table below is correct as of version 3.1.
Feature | Status |
---|---|
Optimisation | |
proper tail calls (tail call optimisation) | |
Syntax | |
default function parameters | 4/7 |
rest parameters | |
spread syntax for iterable objects | |
object literal extensions | ✅ 6/6 |
for..of loops | 6/9 |
octal and binary literals | ✅ 4/4 |
template literals | 6/7 |
RegExp "y" and "u" flags | |
destructuring, declarations | |
destructuring, assignment | |
destructuring, parameters | |
Unicode code point escapes | ✅ 4/4 |
new.target | ✅ 2/2 |
Bindings | |
const | ✅ 18/18 |
let | 14/16 |
block-level function declaration[18] | |
Functions | |
arrow functions | |
class | ✅ 24/24 |
super | ✅ 8/8 |
generators | |
Built-ins | |
typed arrays | 45/46 |
Map | 18/19 |
Set | 18/19 |
WeakMap | 11/12 |
WeakSet | 10/11 |
Proxy [25] | 33/34 |
Reflect [26] | 18/20 |
Promise | 4/8 |
Symbol | ✅ 12/12 |
well-known symbols[27] | 23/26 |
Built-in extensions | |
Object static methods | ✅ 4/4 |
function "name" property | 10/17 |
String static methods | ✅ 2/2 |
String.prototype methods | ✅ 10/10 |
RegExp.prototype properties | ✅ 6/6 |
Array static methods | 8/11 |
Array.prototype methods | ✅ 10/10 |
Number properties | ✅ 9/9 |
Math methods | ✅ 17/17 |
Date.prototype[Symbol.toPrimitive] | ✅ 1/1 |
Subclassing | |
Array is subclassable | 9/11 |
RegExp is subclassable | ✅ 4/4 |
Function is subclassable | 4/6 |
Promise is subclassable | |
miscellaneous subclassables | |
Misc | |
prototype of bound functions | 1/5 |
Proxy, internal 'get' calls | 19/36 |
Proxy, internal 'set' calls | 7/11 |
Proxy, internal 'defineProperty' calls | |
Proxy, internal 'deleteProperty' calls | |
Proxy, internal 'getOwnPropertyDescriptor' calls | 2/4 |
Proxy, internal 'ownKeys' calls | ✅ 3/3 |
Object static methods accept primitives | ✅ 10/10 |
own property order | 5/7 |
Updated identifier syntax | 1/3 |
miscellaneous | 8/9 |
Annex b | |
non-strict function semantics[35] | 2/3 |
__proto__ in object literals [36] | |
Object.prototype.__proto__ | 1/6 |
String.prototype HTML methods | ✅ 3/3 |
RegExp.prototype.compile | 1/2 |
RegExp syntax extensions | 4/8 |
HTML-style comments |