Janus (time-reversible computing programming language)



Website: tetsuo.jp/ref/janus.html

Designed by: Christopher Lutz, Howard Derby, Tetsuo Yokoyama, and Robert Glück


Janus is a time-reversible programming language written at Caltech in 1982.

The operational semantics of the language were formally specified, together with a program inverter and an invertible self-interpreter, in 2007 by Tetsuo Yokoyama and Robert Glück.

A Janus inverter and interpreter is made freely available by the TOPPS research group at DIKU.

Another Janus interpreter was implemented in Prolog in 2009.

The below summarises the language presented in the 2007 paper.

Janus is an imperative programming language with a global store (there is no stack or heap allocation).

Janus is a reversible programming language, i.e. it supports deterministic forward and backward computation by local inversion.