# jurassic **Repository Path**: workingbird/jurassic ## Basic Information - **Project Name**: jurassic - **Description**: 一个基于.Net的Javascript执行引擎 - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-11-30 - **Last Updated**: 2023-12-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ![Jurassic](https://raw.githubusercontent.com/wiki/paulbartrum/jurassic/logo.png) [![Build status](https://github.com/paulbartrum/jurassic/actions/workflows/build.yml/badge.svg)](https://github.com/paulbartrum/jurassic/actions/workflows/build.yml) ## What is Jurassic? 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. ## Features * Supports all ECMAScript 3 and ECMAScript 5 functionality, including ES5 strict mode * Well tested - passes over five thousand unit tests (with over thirty thousand asserts) * Simple yet powerful API * Compiles JavaScript into .NET bytecode (CIL); not an interpreter * Deployed as a single .NET assembly (no native code) * Basic support for integrated debugging within Visual Studio * Uses light-weight code generation, so generated code is fully garbage collected * Tested on .NET 3.5, .NET 4 and Silverlight ## How do I get it? Install the [NuGet package](https://www.nuget.org/packages/Jurassic/). ## Usage See the [wiki](https://github.com/paulbartrum/jurassic/wiki) for full usage details. ## ECMAScript 6 status 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)|:x: **Syntax**|   default function parameters|4/7   rest parameters|:x:   spread syntax for iterable objects|:x:   object literal extensions|:white_check_mark: 6/6   for..of loops|6/9   octal and binary literals|:white_check_mark: 4/4   template literals|6/7   RegExp "y" and "u" flags|:x:   destructuring, declarations|:x:   destructuring, assignment|:x:   destructuring, parameters|:x:   Unicode code point escapes|:white_check_mark: 4/4   new.target|:white_check_mark: 2/2 **Bindings**|   const|:white_check_mark: 18/18   let|14/16   block-level function declaration[18]|:x: **Functions**|   arrow functions|:x:   class|:white_check_mark: 24/24   super|:white_check_mark: 8/8   generators|:x: **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|:white_check_mark: 12/12   well-known symbols[27]|23/26 **Built-in extensions**|   Object static methods|:white_check_mark: 4/4   function "name" property|10/17   String static methods|:white_check_mark: 2/2   String.prototype methods|:white_check_mark: 10/10   RegExp.prototype properties|:white_check_mark: 6/6   Array static methods|8/11   Array.prototype methods|:white_check_mark: 10/10   Number properties|:white_check_mark: 9/9   Math methods|:white_check_mark: 17/17   Date.prototype[Symbol.toPrimitive]|:white_check_mark: 1/1 **Subclassing**|   Array is subclassable|9/11   RegExp is subclassable|:white_check_mark: 4/4   Function is subclassable|4/6   Promise is subclassable|:x:   miscellaneous subclassables|:x: **Misc**|   prototype of bound functions|1/5   Proxy, internal 'get' calls|19/36   Proxy, internal 'set' calls|7/11   Proxy, internal 'defineProperty' calls|:x:   Proxy, internal 'deleteProperty' calls|:x:   Proxy, internal 'getOwnPropertyDescriptor' calls|2/4   Proxy, internal 'ownKeys' calls|:white_check_mark: 3/3   Object static methods accept primitives|:white_check_mark: 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]|:x:   Object.prototype.\_\_proto\_\_|1/6   String.prototype HTML methods|:white_check_mark: 3/3   RegExp.prototype.compile|1/2   RegExp syntax extensions|4/8   HTML-style comments|:x: