|Written in||C, C++, Rust|
|Platform||IA-32, x86-64, ARM, MIPS, SPARC|
|Version||Release date||Corresponding ECMAScript version||Browser version||Added functionality|
|Old version, no longer maintained: 1.0||March 1996||Netscape Navigator 2.0|
|Old version, no longer maintained: 1.1||August 1996||Netscape Navigator 3.0|
|Old version, no longer maintained: 1.2||June 1997||Netscape Navigator 4.0 - 4.05|
|Old version, no longer maintained: 1.3||October 1998||ECMA-262 1st + 2nd edition||Netscape Navigator 4.06-4.7x|
|Old version, no longer maintained: 1.4||Netscape Server|
|Old version, no longer maintained: 1.5||November 2000||ECMA-262 3rd edition||Netscape Navigator 6, Firefox 1.0|
|Old version, no longer maintained: 1.6||November 2005||Firefox 1.5||additional array methods, array and string generics, E4X|
|Old version, no longer maintained: 1.7||October 2006||Firefox 2.0||iterators and generators, let statement, array comprehensions, destructuring assignment|
|Old version, no longer maintained: 1.8||June 2008||Firefox 3.0||generator expressions, expression closures|
|Old version, no longer maintained: 1.8.5||March 2011||ECMA-262 5th edition||Firefox 4.0||JSON support|
|Old version, no longer maintained: 1.8.8||January 2012||Firefox 10.0|
|Old version, no longer maintained: 17||November 2012||Firefox 17.0|
|Old version, no longer maintained: 24||September 2013||Firefox 24.0|
|Old version, no longer maintained: 31||July 2014||Firefox 31.0|
|Old version, no longer maintained: 38||May 2015||Firefox 38.0|
|Old version, no longer maintained: 45||March 2016||Firefox 45.0|
|Old version, no longer maintained: 52||March 2017||Firefox 52.0|
|Old version, no longer maintained: 60||May 2018||Firefox 60.0|
|Old version, no longer maintained: 68||July 2019||Firefox 68.0|
|Current stable version: 78||June 2020||Firefox 78.0|
|Future release: 90||2021||Firefox 90.0|
Instead of compiling whole functions, TraceMonkey was a tracing JIT, which operates by recording control flow and data types during interpreter execution. This data then informed the construction of trace trees, highly specialized paths of native code.
Improvements to JägerMonkey eventually made TraceMonkey obsolete, especially with the development of the SpiderMonkey type inference engine. TraceMonkey is absent from SpiderMonkey from Firefox 11 onward.
JägerMonkey, internally named MethodJIT, was a whole-method JIT compiler designed to improve performance in cases where TraceMonkey could not generate stable native code. It was first released in Firefox 4 and eventually entirely supplanted TraceMonkey. It has itself been replaced by IonMonkey.
Mozilla implemented a number of critical optimizations in JägerMonkey, most importantly polymorphic inline caches and type inference.
The difference between TraceMonkey and JägerMonkey JIT techniques and the need for both was explained in a hacks.mozilla.org article. A more in-depth explanation of the technical details was provided by Chris Leary, one of SpiderMonkey's developers, in a blog post. More technical information can be found in other developer's blogs: dvander, dmandelin.
Edited: 2021-06-18 12:37:46