1960 1970 1980 1990 2000 2010

Amazon EC2 Atlas, virtual memory Kilburn, Edwards, Lanigan & Xen Sumner 1962 paravirtualization VMware workstation CP-40, IBM 360/67 Popek and Goldberg 1974 1999 Creasy, 1965 IBM VM/370 "Formal requirements..." x86 virtualization via System VMs The first system VM binary translation Intel VT-x, AMD-V Haswell hardware nested virtualization IBM M44/44X, 1964 "almost a VM"

IBM System/38 objects, IBM AS/400 IBM iSeries IBM i capabilities, 1988 2006 2008 Co-designed VMs virtual ISA 1979 Transmeta Crusoe Transmeta Efficeon 2000 2003

Conway, UNCOL, 1958 ANDF, 1989 LLVM Proposed universal IR

MIX, Knuth Emulators

Mimic: A Fast System/370 Mac 68k Rosetta simulator, May, 1987 emulator Dynamite 1996 Shade QEMU Shadow Cmelik and Keppel Hsu, 1989 1993 Dynamo Bala et al., 2000

DAISY, Ebcioglu and Futamura 1971 Altman, 1997 Partial evaluation

Jim Mitchell's PhD, 1970 HotPath VM Gal et al., 2006

Squawk PS VM Deutsch & Schiffman 1984 Squeak JIT , inline caches Truffle Smalltalk-76 Ingalls Self '93 Self 4.0 Klein Maxine VM Graal Smalltalk-80 Self '89 Smalltalk-72 + Adaptive optimization Alan Kay's PhD, 1969 spec in Smalltalk maps, Language VMs objects + using PICs and customization, messages profiles, uncommon deoptimization & OSR Animorphic HotSpot C2 branches and Smalltalk JVM traps, splitting, Chambers' PhD, 1992 inlining Hölzle's PhD, 1993

Jikes VM (aka Jalapeño) 1999 Euler, 1966 Sun JVM IBM J9 Pascal p-machine UCSD Pascal Eclipse OMR stack machine 1.0 modular

Sun Java ME Exact VM CDC JVM Sun Labs Sun Java ME Spotless CLDC HotSpot CLDC JVM Martin Richards VM BCPL OCODE 1969 stack machine, compiler, Dalvik

APL\3000, Johnston 1979, JIT compiler and code cache PyPy metatracing An APL Machine, Phil Abrams, 1970 demand-driven codegen TraceMonkey

V8

SpiderMonkey SquirrelFish Extreme

.NET CLR

LuaJIT

ActionScript

Turing Machine Abstract Machines Warren Abstract Landin, 1964 1936 Machine, 1983 SECD machine

C++ (1983) C# (2000) Languages C (1972)

Java (1995) Scala (2004)

PostScript (1982) APL (1964) FORTH (1970) Ruby (1995)

Python (1991) FORTRAN (1957) SIMULA-67 Self (1987) JavaScript Smalltalk (1995) (1972) Algol-60

Flavors (1980) Common Lisp (1984) Perl (1987) LISP (1958) Scheme (1970)

S (1976) New S (1988) R (1993)

Lua (1993)

Prolog (1972) Erlang (1986)

PHP (1995) Actors (1973)

omitted: GC, , interpreters 1.0 2016-05-31 A Timeline of Selected Landmarks in Virtual Machine History © 2016 Mario Wolczko