Programming

Open Source

You can write and run reversible programs today. These are the languages whose execution is deterministic both forwards and backwards, plus the reverse-debuggers that let ordinary code be stepped in reverse. All are free to try.

Janus →

The first reversible imperative programming language; it runs deterministically forwards and backwards, with online interpreters available.

DIKU PIRC · reversible language

RFun →

An untyped, first-order reversible functional language, with a Haskell interpreter available on GitHub.

DIKU PIRC · reversible language

CoreFun →

A typed reversible functional core language whose type system statically guarantees reversibility.

DIKU · reversible language

Hermes →

A reversible language for lightweight encryption: write the cipher once and get decryption for free by running it backwards.

reversible language

Mozilla rr →

A record-and-replay reverse debugger offering deterministic replay and reverse execution under gdb.

Mozilla · reverse debugger

GDB reverse debugging →

Official GNU reverse execution: reverse-continue, reverse-step and friends, to walk a program backwards.

GNU Project · reverse debugger

RevKit →

A toolkit for reversible and quantum logic synthesis.

synthesis toolkit

Pendulum / PISA →

An early reversible instruction-set architecture and processor design.

reversible ISA

Where much of this comes from

A great deal of reversible-language research, including Janus, RFun and CoreFun, comes from the DIKU PIRC group at the University of Copenhagen.