Yantra (Machine in Sanskrit) is a Managed JavaScript Engine for .NET Standard written completely in C#.
Name | Package |
---|---|
YantraJS (With CSX Module Support) | |
YantraJS.Core (Compiler) | |
YantraJS.ExpressionCompiler (IL Compiler) | |
WebAtoms.YantraJS |
- Compiles JavaScript to .Net Assembly
- Strict Mode Only JavaScript*
- Arrow functions
- Classes
- Enhanced object literals
- Template strings and tagged templates
- Destructuring
let
const
- Map, Set, WeakMap, WeakSet
- Symbols
- Subclassable built-ins
- Binary and Octal literals
- Module support
- Null coalesce
- Optional property chain
identifier?.[]
,identifier?.(
,identifier?.identifier
- Rest, Default and Spread Parameters
- Generators, iterators, for..of
- Async/Await
- Optional parameters
- Many ES5 + ES6 features
- CommonJS Module Support
- Easily marshal CLR Object to JavaScript and other way around
- CSX Module support
*
Most JavaScript today is available in strict mode, we do not feel any need to support non strict mode as modules are strict by default.
We recommend using Github Discussion on this repository for any question regarding this product.
- We are thankful to authors of Jurassic (we have incorporated number parser, promise and some unit tests from Jurassic.) https://github.com/paulbartrum/jurassic
- We are thankful to authors of EsprimaDotNet, we initially built prototype over EsprimaDotNet, but we chose to build our parser/scanner from scratch to support token spans. https://github.com/sebastienros/esprima-dotnet
- We are thankful to author of ILPack (we have incorporated saving IL to Assembly from this library.) https://github.com/Lokad/ILPack