Tamarin (software)

{{Short description|Virtual machine software for ECMAScript}}

{{Update|date=August 2022|how and when it was discontinued}}

{{Infobox software

| name = Tamarin

| logo =

| screenshot =

| caption =

| developer = Adobe Systems and Mozilla

| discontinued = yes

| latest release version =

| latest release date =

| operating system = Cross-platform

| programming language = C++

| genre = Virtual Machine for ECMAScript

| license = Tri-licensed GPL, LGPL, and MPL

| website = {{Official URL}}

}}

Tamarin is a discontinued free software virtual machine with just-in-time compilation (JIT) support intended to implement the 4th edition of the ECMAScript (ES4) language standard. Tamarin source code originates from ActionScript Virtual Machine 2 (AVM2){{Cite web |url=http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/actionscript/articles/avm2overview.pdf |title=Archived copy |access-date=2017-03-25 |archive-date=2017-05-16 |archive-url=https://web.archive.org/web/20170516155743/http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/actionscript/articles/avm2overview.pdf |url-status=dead }} developed by Adobe Systems, as introduced within Adobe Flash Player 9, which implements ActionScript 3 scripting language. ActionScript Virtual Machine 2 was donated as open-source to Mozilla Foundation on November 7, 2006, to develop Tamarin as a high-performance virtual machine, with the support from broad Mozilla community, to be used by Mozilla and Adobe Systems in the next generation of their JavaScript and ActionScript engines with the ultimate aim to unify the scripting languages across web browsers and Adobe Flash platform and ease the development of better performing rich web applications.{{cite web

|url = http://www.adobe.com/devnet/logged_in/ehuang_tamarin.html

|title = What Tamarin means to developers

|date = November 7, 2006

|access-date = January 2, 2013

|publisher = Adobe Developer Connection

|url-status = dead

|archive-url = https://web.archive.org/web/20130316094602/http://www.adobe.com/devnet/logged_in/ehuang_tamarin.html

|archive-date = March 16, 2013

}}

Tamarin and Mozilla

The source code, including the just-in-time compiler and conservative garbage collector, was donated to the Mozilla Foundation on November 7, 2006.{{cite web

|url=http://www.mozilla.com/en-US/press/mozilla-2006-11-07.html

|title=Adobe and Mozilla Foundation to Open Source Flash Player Scripting Engine

|work=Mozilla Foundation Press Center

|publisher = Mozilla Foundation

|date = November 7, 2006

|location = San Francisco

|access-date = September 3, 2010

}} The contributed code is tri-licensed under the GPL, LGPL, and MPL licenses to be developed in Mozilla's Mercurial repository.{{cite web

|url=https://developer.mozilla.org/en-US/docs/Archive/Mozilla/Tamarin

|title=Tamarin Project

|publisher=Mozilla Foundation

|access-date=2021-03-25

|archive-date=2016-10-03

|archive-url=https://web.archive.org/web/20161003214723/https://developer.mozilla.org/en-US/docs/Archive/Mozilla/Tamarin

|url-status=dead

}} The contributed code is approximately 135,000 lines of code,{{cite web

|url = http://blogs.adobe.com/penguin.swf/2006/11/open_source_actionscript.html

|title = Open Up

|work = Penguin.SWF — Just another Adobe Blog site

|first = Mike

|last = Melanson

|date = November 7, 2006

|access-date = September 3, 2010

|url-status = dead

|archive-url = https://web.archive.org/web/20080704140056/http://blogs.adobe.com/penguin.swf/2006/11/open_source_actionscript.html

|archive-date = July 4, 2008

}} making it the largest single donation of code to the Mozilla project besides Netscape itself.{{cite web|url=http://www.browserden.co.uk/news/tamarin/index.shtml |title=Project Tamarin - Adobe's contribution to Mozilla |work=The Browser Den |url-status=dead |archive-url=https://web.archive.org/web/20081011115749/http://www.browserden.co.uk/news/tamarin/index.shtml |archive-date=October 11, 2008 }}

There were plans to use Tamarin as part of Mozilla 2{{cite web

|url = http://weblogs.mozillazine.org/roadmap/archives/2006/10/mozilla_2.html

|title = Mozilla 2

|work = Brendan's Roadmap Updates

|publisher = MozillaZine

|first = Brendan

|last = Eich

|author-link = Brendan Eich

|date = October 13, 2006

|access-date = September 3, 2010

|url-status = dead

|archive-url = https://web.archive.org/web/20061025122530/http://weblogs.mozillazine.org/roadmap/archives/2006/10/mozilla_2.html

|archive-date = October 25, 2006

}} (and therefore Firefox 4). The project to integrate Tamarin and SpiderMonkey was called "ActionMonkey",{{cite web

|url = http://ejohn.org/blog/actionmonkey/

|title = ActionMonkey

|first = John

|last = Resig

|work = John Resig Blog

|date = July 23, 2007

|access-date = September 3, 2010

}} but was canceled in 2008{{cite web

|url = https://wiki.mozilla.org/index.php?title=JavaScript:ActionMonkey&oldid=107405

|title = JavaScript:ActionMonkey

|work = MozillaWiki

|date = September 4, 2008

|access-date = September 3, 2010

|publisher = Mozilla Foundation

}} because Tamarin's interpreter turned out to be slower than SpiderMonkey's and because the plans of ECMAScript development shifted from ECMAScript 4, which was partially implemented by then existing Tamarin source code and was meant to be completed by joined efforts of Adobe, Mozilla and its community within the Tamarin Project,{{cite web

|url = https://www-archive.mozilla.org/projects/tamarin/

|title = Tamarin Project Introduction

|publisher = Mozilla community

|date = April 21, 2008

|access-date = January 1, 2013

}} to ECMAScript Harmony.{{cite web

|url = https://hacks.mozilla.org/2010/03/a-quick-note-on-javascript-engine-components/

|title = A quick note on JavaScript engine components

|work = Hacks.Mozilla.org

|publisher = Mozilla Foundation

|date = March 8, 2010

|first = Christopher

|last = Blizzard

|access-date = September 3, 2010

}}

Adobe continued to use Tamarin in its Flash Player, but it did not replace SpiderMonkey as the JavaScript engine of Mozilla applications.

The only part of Tamarin used in modern Mozilla applications (i.e. Firefox 3.5+) via SpiderMonkey is NanoJIT, a module that is used to generate native code when performing just-in-time compilation.{{cite web

|url=http://groups.google.com/group/mozilla.dev.tech.js-engine/msg/04e49d6407c33bd3

|title=State of Tamarin

|work=mozilla.dev.tech.js-engine group

|publisher=Google Groups

|first = Graydon

|last = Hoare

|access-date = September 3, 2010

|date = October 14, 2009

}}

What Tamarin is not

Adobe contributed code for its ActionScript Virtual Machine 2 and the JIT compiler. The ActionScript compiler is also open source as a part of Adobe Flex.{{cite web |url=https://developer.mozilla.org/en-US/docs/Archive/Mozilla/Tamarin/Tamarin_Build_Documentation#compiling_and_running_applications |title=Compiling and Running applications |publisher=Mozilla |access-date=2021-03-25}} There is also CrossBridge, an open source C and C++ compiler.

Tamarin is not the same as Adobe Flash Player, which remains closed source. The Tamarin virtual machine is only a part of Flash Player.

Related projects

Two projects related to Tamarin were announced on July 25, 2007, in Brendan Eich's keynote at The Ajax Experience West: IronMonkey and ScreamingMonkey.{{cite web

|url = http://weblogs.mozillazine.org/roadmap/archives/2007/07/new_projects.html

|title = New Projects

|work = Brendan's Roadmap Updates

|first = Brendan

|last = Eich

|author-link = Brendan Eich

|date = July 25, 2007

|access-date = September 3, 2010

|publisher = MozillaZine

|url-status = dead

|archive-url = https://web.archive.org/web/20101114000859/http://weblogs.mozillazine.org/roadmap/archives/2007/07/new_projects.html

|archive-date = November 14, 2010

}}{{cite web

|url = http://ejohn.org/blog/the-browser-scripting-revolution/

|title = The Browser Scripting Revolution

|first = John

|last = Resig

|date = August 8, 2007

|work = John Resig Blog

|access-date = September 3, 2010

}} IronMonkey is a project to map IronPython and IronRuby to Tamarin led by Seo Sanghyeon.{{cite web

|url=https://wiki.mozilla.org/index.php?title=Tamarin:IronMonkey&oldid=65786

|title=Tamarin:IronMonkey

|work=MozillaWiki

|publisher = Mozilla Foundation

|date = August 20, 2007

|access-date = September 3, 2010

}} ScreamingMonkey's goal is to allow Tamarin to run within non-Mozilla browsers (thus allowing them to understand JavaScript 2), starting with Internet Explorer. The project is led by Mark Hammond.{{cite web

|url = https://wiki.mozilla.org/index.php?title=Tamarin:ScreamingMonkey&oldid=94625

|title = Tamarin:ScreamingMonkey

|work = MozillaWiki

|publisher = Mozilla Foundation

|date = May 28, 2008

|access-date = September 3, 2010

}} Neither project had production-quality releases and their current status is unclear.

Etymology

Both SpiderMonkey and Tamarin fulfill closely related goals and so were given names derived from types of monkeys (the spider monkey and the tamarin, respectively).

Further reading

  • [https://developer.mozilla.org/en-US/docs/Archive/Mozilla/Tamarin Tamarin page on MDN (Tamarin is obsolete)] {{Webarchive|url=https://web.archive.org/web/20161003214723/https://developer.mozilla.org/en-US/docs/Archive/Mozilla/Tamarin |date=2016-10-03 }}
  • {{cite web |url=https://brendaneich.com/2006/11/project-tamarin/ |title=Project Tamarin |first=Brendan |last=Eich |author-link=Brendan Eich |quote=Mozilla CTO |date=2006-11-07 |df=mdy |access-date=2021-03-25}}
  • {{cite web |url=http://www.hecker.org/mozilla/adobe-mozilla-and-tamarin |title=Adobe, Mozilla, and Tamarin |first=Frank |last=Hecker |author-link= |quote=Mozilla Foundation executive director |date=2006-11-07 |df=mdy |archive-url=https://web.archive.org/web/20201109025623/http://www.hecker.org/mozilla/adobe-mozilla-and-tamarin |archive-date=2020-11-09}}
  • {{cite web |url=https://bluishcoder.co.nz/2008/05/20/quick-introduction-to-tamarin-tracing.html |title=A Quick Introduction to Tamarin Tracing |date=2008-05-20 |df=mdy |first=Chris |last=Double |author-link=Chris Double |quote=Mozilla developer |access-date=2021-03-25}}
  • {{cite web |url=https://bluishcoder.co.nz/2008/05/20/implementing-native-methods-in-tamarin.html |title=Implementing Native Methods in Tamarin Tracing |first=Chris |last=Double |date=2008-05-20 |df=mdy |access-date=2021-03-25}}
  • {{cite web |url=https://bluishcoder.co.nz/2008/05/21/extending-tamarin-tracing-with-forth.html |title=Extending Tamarin Tracing with Forth |first=Chris |last=Double |date=2008-05-21 |df=mdy |access-date=2021-03-25}}
  • {{cite web |url=http://software.intel.com/sites/products/documentation/hpc/vtune/windows/jit_profiling.pdf |title=Profiling Runtime Generated and Interpreted Code using the VTune Performance Analyzer |publisher=Intel |url-status=dead |archive-url=https://web.archive.org/web/20120127080207/http://software.intel.com/sites/products/documentation/hpc/vtune/windows/jit_profiling.pdf |archive-date=January 27, 2012}}

References

{{reflist|30em}}