All Projects → yantrajs → yantra

yantrajs / yantra

Licence: Apache-2.0 license
JavaScript Engine for .NET Standard

Programming Languages

javascript
184084 projects - #8 most used programming language
C#
18002 projects

Projects that are alternatives of or similar to yantra

Webpack
A bundler for javascript and friends. Packs many modules into a few bundled assets. Code Splitting allows for loading parts of the application on demand. Through "loaders", modules can be CommonJs, AMD, ES6 modules, CSS, Images, JSON, Coffeescript, LESS, ... and your custom stuff.
Stars: ✭ 60,034 (+187506.25%)
Mutual labels:  commonjs, javascript-compiler
AmiClient
Modern .NET Standard client for accessing the Asterisk AMI protocol using async/await and Reactive Extensions (Rx)
Stars: ✭ 30 (-6.25%)
Mutual labels:  netcore, csharp-library
express-mongoose-es8-rest-api
A Boilerplate for developing Rest api's in Node.js using express with support for ES6,ES7,ES8 ,Mongoose,JWT for authentication,Standardjs for linting
Stars: ✭ 20 (-37.5%)
Mutual labels:  standard, async-await
awesome-dotnet-async
A curated list of awesome articles and resources to learning and practicing about async, threading, and channels in .Net platform. 😉
Stars: ✭ 84 (+162.5%)
Mutual labels:  netcore, async-await
AsyncVoid
Project related to the site's posts about async void.
Stars: ✭ 32 (+0%)
Mutual labels:  netcore, async-await
Zipstorer
A Pure C# Class to Store Files in Zip
Stars: ✭ 139 (+334.38%)
Mutual labels:  netcore, async-await
Ark.Tools
Ark set of helper libraries
Stars: ✭ 20 (-37.5%)
Mutual labels:  netcore, csharp-library
Abot
Cross Platform C# web crawler framework built for speed and flexibility. Please star this project! +1.
Stars: ✭ 1,961 (+6028.13%)
Mutual labels:  netcore, csharp-library
h5
🚀 The next generation C# to JavaScript compiler
Stars: ✭ 97 (+203.13%)
Mutual labels:  netcore, javascript-compiler
ChessLib
C# chess library containing a complete data structure and move generation.
Stars: ✭ 37 (+15.63%)
Mutual labels:  netcore
is-async-function
Is this a native `async function`?
Stars: ✭ 17 (-46.87%)
Mutual labels:  async-await
dotnet-arangodb
.NET Driver for ArangoDB
Stars: ✭ 52 (+62.5%)
Mutual labels:  netcore
retryx
Promise-based retry workflow library.
Stars: ✭ 21 (-34.37%)
Mutual labels:  async-await
swissrets
A swiss real estate transaction standard
Stars: ✭ 21 (-34.37%)
Mutual labels:  standard
Grpc-MicroService
GRPC based Micro-Service Framework (.net core 2.0)
Stars: ✭ 15 (-53.12%)
Mutual labels:  netcore
aioflask
Flask running on asyncio!
Stars: ✭ 192 (+500%)
Mutual labels:  async-await
Swift-Async-Await-Experiments
Experiments with Swift's new async/await feature (SE 0296)
Stars: ✭ 17 (-46.87%)
Mutual labels:  async-await
NModbus4.NetCore
Simply NModbus4 but targeting .NET instead of .NET Framework
Stars: ✭ 25 (-21.87%)
Mutual labels:  netcore
X.Spectator
Framework for monitoring the state of the system and system modules.
Stars: ✭ 23 (-28.12%)
Mutual labels:  netcore
Hosting
Library to simplify the hosting of console applications by making it easier to setup dependency injection, logging and configurations
Stars: ✭ 15 (-53.12%)
Mutual labels:  netcore

YantraJS

Yantra (Machine in Sanskrit) is a Managed JavaScript Engine for .NET Standard written completely in C#.

NuGet

Name Package
YantraJS (With CSX Module Support) NuGet
YantraJS.Core (Compiler) NuGet
YantraJS.ExpressionCompiler (IL Compiler) NuGet

Features

  1. Compiles JavaScript to .Net Assembly
  2. Strict Mode Only JavaScript*
  3. Arrow functions
  4. Classes
  5. Class members
  6. Enhanced object literals
  7. Template strings and tagged templates
  8. Destructuring
  9. let const
  10. Map, Set, WeakMap, WeakSet
  11. Symbols
  12. Subclassable built-ins
  13. Binary and Octal literals
  14. Module support
  15. Null coalesce
  16. Optional property chain identifier?.[], identifier?.(, identifier?.identifier
  17. Rest, Default and Spread Parameters
  18. Generators, iterators, for..of
  19. Async/Await
  20. Optional parameters
  21. Tail call optimization
  22. Many ES5 + ES6 features
  23. CommonJS Module Support
  24. Easily marshal CLR Object to JavaScript and other way around
  25. CSX Module support
  26. Mixed module system, YantraJS supports require and import.

* 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.

Mixed modules

Currently YantraJS supports Both CommonJS and ES modules without any extra work, with little trick, module resolution is node like, it does not take .js extension into account. We are trying to make a workaround and we will update the product soon. Module loader loads module asynchronously, so import will work without any extra effort. However, require will run AsyncPump to wait till the module is loaded correctly, this may lead to some deadlocks.

Mixed Modules Roadmap

  1. Detect the loading order, first check if the same named file exists, if yes, load it, allow auto appending extension in the configuration, so module loader can load corresponding files accordingly.
  2. Create correct algorithm to resolve module name to support loading of CSX module in the mix. YantraJS supports loading module independent of the implementation. We can support other languages like python, php in the YantraJS. This is only possible to load modules without extension.

Documentation

  1. Introduction
  2. Expression Compiler
  3. JavaScript Engine

Discussions

We recommend using Github Discussion on this repository for any question regarding this product.

Special Thanks

  1. We are thankful to authors of Jurassic (we have incorporated number parser, promise and some unit tests from Jurassic.) https://github.com/paulbartrum/jurassic
  2. 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
  3. We are thankful to author of ILPack (we have incorporated saving IL to Assembly from this library.) https://github.com/Lokad/ILPack
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].