User Tools

Site Tools


This is an old revision of the document!


Tailspin Javascript Interpreter

The Tailspin Javascript interpreter used to run the algorithms on this wiki is a fully reversible, standards-compliant, meta-circular Javascript interpreter. As well as running in the browser and allowing algorithms to be visualised, it can run code both forwards and backwards in time. It is written in continuation passing style, so that the interpretation can be paused and controlled by the user.

It is based on the Narcissus Javascript interpreter.

ES5.1 Compliance

Tailspin currently passes 99% of the ECMAScript Language test262 test suite. (The majority of the failures are currently due to “use strict” code.)

Passes Total %
Ch06 Notational Conventions 1 1 100.00%
Ch07 Lexical Conventions 696 715 97.34%
Ch08 Types 182 182 100.00%
Ch09 Type Conversion and Testing 128 128 100.00%
Ch10 Executable Code and Execution Contexts 353 377 93.63%
Ch11 Expressions 1315 1320 99.62%
Ch12 Statements 517 521 99.23%
Ch13 Function Definition 223 230 96.96%
Ch14 Program 24 24 100.00%
Ch15 Standard Built-in ECMAScript Objects 8052 8074 99.73%
Totals 11491 11572 99.30%

Reversibility

Tailspin is able to run in a reversible mode, where state changes are recorded so that they can be undone, as well as a non-revsersible mode which is slightly faster and more memory efficient.

In reversible mode almost all state changes can be undone. Some state changes such as Object.freeze() and Object.seal() are not reversible at the moment as Tailspin uses the browser's Javascript objects and the effect of these functions is permanent.

interpreter.1370666468.txt.gz · Last modified: 2015/02/02 08:24 (external edit)