IronJS Blog

All things IronJS and F#

Archive for April 2011

IronJS is now faster than IE8

with 4 comments

We just hit a pretty major milestone in the dev branch of IronJS: We’ve surpassed IE8 in performance. I’ll try to keep this short and get straight to the point (the benchmarks), here is IronJS side-by-side to IE8, Jurassic and Jint (two other .NET based JavaScript runtimes).

Note the Jint failed on several tests and those have a zero as result. Click on the image for full size.

Sunspider 0.9.1

We’ve still got a long way to go until we reach our goal (within 300% of V8), but it’s looking good so far!

Update: Here’s the total test score also


Written by Fredrik Holmström

April 25, 2011 at 12:42 am

Posted in IronJS

IronJS 0.2 is out

with 28 comments

IronJS 0.2

IronJS is an ECMAScript 3.0 implementation built on top of the Dynamic Language Runtime from Microsoft which allows you to embed a javascript runtime into your .NET applications.

Thanks to

  • John Gietzen for all his work on ECMA3 conformance whom without this would not have been possible
  • Christian Knutsson for the awesome logo


  • ECMA3 Conformance
  • Added 5,500 ECMA3 conformance tests with over 30,000 assertions
  • Major API refactoring moving all Module/Functions located in Api.fs to their appropiate classes in Core.fs instead
  • Re-implemented the AST analyzer to make it single pass
  • Re-implemented variable handling allowing for faster and easier compilation
  • Removed the dependancy of Microsoft.Dynamic.dll for CLR4 projects
  • Removed dependancy on FSKit
  • Implemented the Date object
  • Implemented the RegExp object
  • Implemented missing functionality on String.prototype (match, split, search, replace)
  • Implemented F# operators ? and ?
  • Implemented F# operators for all common binary DLR expressions
  • Implemented a Sputnik test suite runner, courtesy of John Gietzen
  • Implemented a proper REPL console, available in the aptly named “REPL” project.
  • Implemented dynamic invoke operators for calling IronJS functions with an unknown amount of arguments
  • Implemented a new F# based lexer and parser which allows IronJS to drop the dependencies on Xebic.ES3.dll and Antlr.Runtime.dll
  • Cleaned up and removed a lot of old/redundant code
  • Renamed ObjectClass to “Schema” and split out the dynamic functionallity into it’s own DynamicSchema class
  • Replaced the FunctionCompiler class with an F# function with the signature IronJS.FunctionObject -> System.Type -> #Delegate
  • A lot of smaller improvements to code stability and readability
  • Added debug constructs in big parts of the codebase that only gets compiled when the DEBUG flag is set
  • Refactored several constructors in the IronJS.Ast.Tree union to be more obvious
  • Unified error handling, so it all passes through IronJS.Error and its members




Written by Fredrik Holmström

April 19, 2011 at 9:56 pm

Posted in IronJS