CIL to Javascript Compiler
Switch branches/tags
Nothing to show
Clone or download
Latest commit 1d57d54 Mar 9, 2017
Failed to load latest commit information.
Compiler Use same executable for out-of-process build. Fix #1022. Nov 2, 2016
Corlib Nuke the Mannux demo since it requires a lot of babysitting Feb 26, 2013
Examples Actually remove submodules. Sigh, git Aug 30, 2015
JSIL.Libraries Fixed calling awaiter with Task.FromResult Mar 8, 2017
JSIL.mscorlib Merge pull request #984 from iskiselev/ToBase64CharArray Jul 17, 2016
JSIL Moved unsigned conversion to proper place (#1037) Feb 25, 2017
Meta @ b185a3d Use NoDynamic Meta branch. JS-interop returns objects. Dec 15, 2015
Proxies reformat once again Jul 22, 2016
SimpleProject fixed pointed issues (no asm ID | non-x86 configs | JSIL copy) May 7, 2012
Tests.DCE Mono.Cecil path updated. Mar 25, 2016
Tests Implementation of Task.FromResult<TResult>(TResult result) Mar 8, 2017
Try Initial .d.ts support. May 10, 2016
Upstream Updated to latest ILSpy. Mar 25, 2016 Documentation updates. Oct 24, 2015
.gitattributes Fixed EOL for .travis.yml. Aug 12, 2015
.gitignore Added JSIL.mscorlib project with number formatter implementation. Sep 17, 2015
.gitmodules Dead code cleanup Aug 30, 2015
.hgeol Fixed EOL for .travis.yml. Aug 12, 2015
.travis.yml Added recursive submodules init for Travis. Mar 25, 2016
JSIL.nunit Pull the method signature cache out of a static field so that it does… Apr 6, 2012
JSIL.sln Fixed build in VS through adding to sln project dependecies. Apr 30, 2016
LICENSE Add missing LICENSE file Jun 4, 2015 Documentation updates. Oct 24, 2015 TravisCI compatibility Oct 26, 2015
appveyor.yml Re-enable compilation cache Aug 31, 2015
build_corlib.bat Make RunTransformsOnAllFunctions actually obey the threading setting.… Mar 7, 2013
build_demos.bat Dead code cleanup Aug 30, 2015 TravisCI compatibility Oct 26, 2015
jsil.ico Updated website and added new logo Jun 7, 2011 TravisCI compatibility Oct 26, 2015
run_server.bat Change the platform argument for the rpg starter kit so it builds cor… Apr 24, 2012
test_runner.html Browser test runner updated to support Translated test run. Aug 8, 2015
web.config Update test_runner code so you can host it on IIS Jul 14, 2014


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 readable, easy-to-debug JavaScript that resembles the code a developer might write by hand, while still maintaining the behavior and structure of the original .NET code.

For live demos and code samples, visit the website.

For help on getting started using JSILc, see the wiki.

JSIL is currently in partial maintenance mode (due to time constraints on the maintainer's part), but bug reports and questions are still actively responded to. Pull requests still welcome!


Copyright 2011 K. Gadd

Additional contributions by Igor Kiselev and assorted community members.

License: MIT/X11

Replay/Record support & Emscripten integration sponsored by Mozilla Corporation

License: MIT/X11


JSIL depends upon or is based on the following open source libraries:

  • Mono.Cecil: MIT/X11 (thanks to Jb Evain)
  • ICSharpCode.Decompiler: MIT/X11 (developed as part of ILSpy)
  • Mono.Options: MIT/X11 (Jonathan Pryor & Federico Di Gregorio)
  • printStackTrace: Public Domain (Eric Wendelin and others)
  • XAPParse: Microsoft Public License/Ms-PL (Andy Patrick)
  • webgl-2d: MIT (Corban Brook, Bobby Richter, Charles J. Cliffe, and others)
  • S3TC DXT1 / DXT5 Texture Decompression Routines (Benjamin Dobell)

The Upstream folder also contains:

  • Win32 build of the Spidermonkey command-line JavaScript shell. It is built from sources provided by the Mozilla project ( This build is used for running JavaScript automated tests.
  • A specific version of the NUnit.Framework assembly, used by the automated tests. This ensures that they compile correctly regardless of which version of NUnit you have installed.
  • Win32 build of PNGQuant for optimizing PNG files. (Jef Poskanzer, Greg Roelofs)
  • Mono ILASM for CIL tests execution

The following NuGet packages are used:

  • Grunt
  • Node
  • NPM
  • NUnit
  • NUnit Test Adapter
  • FSharp CodeDom

Logo by John Flynn.