JSIL is a compiler that transforms .NET applications and libraries from their native executable format - CIL bytecode - into standards-compliant, cross-browser JavaScript. You can take this JavaScript and run it in a web browser or any other modern JavaScript runtime. Unlike other cross-compiler tools targeting JavaScript, JSIL produces easy-to-debug JavaScript while still maintaining the behavior and structure of the original .NET code. Because JSIL transforms bytecode, it can support most .NET-based languages - C# to JavaScript and VB.NET to JavaScript work right out of the box, and F# is partially supported. Nearly the entire feature set of the .NET runtime (including pointers and P/Invoke) is supported, and most of the open-source BCL is translatable by the compiler.


Code Samples

See try.jsil.org.

Getting Started


  1. Clone the repository using Git, from 'https://github.com/sq/JSIL.git'. (Make sure you pull the submodules!)
  2. Build JSIL.sln in Visual Studio 2015. (Community Edition is sufficient.)
  3. Run JSILc.exe on your application. (See the wiki for help.)
  4. Marvel at convoluted error messages! (JSIL is still in development. You will hit bugs.)

Contribute to JSIL

  1. Fork JSIL on GitHub. (Working locally from a clone is okay too.)
  2. Write tests for bugs or new features! (Without tests, JSIL would always be broken.)
  3. Fix broken tests! Tests can be run from VS2015's integrated testing tools.(Adding a test for a bug is helpful even if you can't fix it.)
  4. Push to your GitHub fork! (If you don't, I can't see your awesome changes.)
  5. Create a pull request on GitHub. (Submitting a patch is okay too.)

Complain about JSIL

Not everybody has time to write code! That's okay. You can report issues, or just talk about JSIL on the internet or something!

Changelog View on GitHub


About the Author

K. Gadd is a rampaging malcontent from Northern California who works on horrible indie games and complains incessantly about first-world problems on Twitter.