The Mozilla JavaScript team is pleased to announce the release of SpiderMonkey 1.8 Release Candidate 1. You can download full source code here: http://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz (MD5 checksum: eaad8815dcc66a717ddb87e9724d964e).

SpiderMonkey 1.8 is the JavaScript engine that shipped in Firefox 3.0. It is much faster than SpiderMonkey 1.7 and contains a few new language features and API features, described in detail below.

Please let us know about your experiences with this release by posting in the mozilla.dev.tech.js-engine newsgroup. Or, file bugs at bugzilla.mozilla.org under Product: Core, Component: JavaScript engine.

—9 March 2009

Known issues

SpiderMonkey 1.8 has one known significant regression from 1.7.

There is a minor known bug in the new JavaScript 1.8 functionality.  

Migrating to SpiderMonkey 1.8

SpiderMonkey 1.8 is not binary-compatible with previous releases. It is source-compatible with SpiderMonkey 1.7 though, which means you can probably just recompile and relink your application. A handful of changes are not backwards-compatible:

SpiderMonkey 1.8 does not include the new TraceMonkey JIT or the configure-based build system, both of which are (a) pretty darn awesome and (b) coming in SpiderMonkey 1.8.1.

On to the fun stuff.

New JavaScript language features

JavaScript 1.8 adds Array.reduce() and reduceRight(), expression closures, and generator expressions. There is also one obscure non-backwards-compatible change. For details, see New in JavaScript 1.8.

New JSAPI features

It has been a couple years since SpiderMonkey 1.7 was released, and many improvements have been made to the JSAPI. However, one of the most important advances for JSAPI application developers is that the documentation is much improved. See the JSAPI User Guide and the JSAPI Reference.

Many new memory management features have been added as well.

New JavaScript shell functions

There are a few new built-in functions in the JavaScript shell, mostly useful for testing.  countHeap, dumpHeap, gcparam, gczeal, and stackQuota are related to memory management.  sleep and scatter, defined in <href="internal" a="" class="/en/SpiderMonkey/JSAPI_Reference/JS_THREADSAFE" title="en/SpiderMonkey/JSAPI Reference/JS THREADSAFE">JS_THREADSAFE builds only, are for testing thread-safety.</href="internal">