Skip to Content
Conway's Game of Life

Same rules, 13 stacks.

I rebuild Conway's Game of Life when trying a new language or UI library, then compare what each stack makes awkward or easy.

13
versions
12
languages
139
stars
593
commits
Origins

Early versions compared state models.

Elm, ClojureScript, Redux, and LiveScript each hold and update the same grid differently.

2017 / Elm

Elm Game of Life

Elm

Immutable state and explicit updates, on a grid small enough to teach from.

013 commits
2016 / Clojure

re-frame Game of Life

ClojureScript + re-frame

ClojureScript and re-frame, with cells as data and updates as events.

317 commits
2017 / JavaScript

Redux Game of Life

React + Redux

Conway as a Redux reducer, which makes every generation steppable in devtools.

66114 commits
2018 / LiveScript

Life LS

LiveScript

Squeezed as small as LiveScript would go, to see what terse syntax does to the automaton.

138 commits
Browser Eras

Browser versions followed UI fashion.

ReasonReact, ReScript, Svelte, and Solid. Each one makes you decide how a cell gets from one generation to the next.

2018 / OCaml

ReasonML Game of Life

ReasonReact

An early typed React-family take, with the board and its transitions modelled as algebraic types.

8109 commits
2020 / ReScript

ReScript Game of Life

ReScript + React

A ReScript follow-up to the ReasonML version, carrying the typed model into a newer toolchain.

39110 commits
2022 / Svelte

Svelte Game of Life

Svelte

Svelte's reactivity keeps board state and UI updates close together.

1658 commits
2024 / TypeScript

Solid Game of Life

SolidJS

Solid's fine-grained reactivity, later adapted here into the interactive canvas preview.

451 commits
Language Sketches

Later versions tried new languages.

In Go, Rust, Gleam, Civet, and RippleJS the program stays small enough that syntax and runtime differences show up fast.

2023 / CSS

Civet Game of Life

Civet

A syntax experiment that stopped at one commit.

21 commits
2024 / Go

Go Game of Life

Go

Explicit loops and no framework, which makes it the baseline I compare the UI-heavy versions against.

031 commits
2024 / Rust

Rust Game of Life

Rust

Rust, where ownership and mutation choices drive how cells update.

015 commits
2024 / Gleam

Gleam of Life

Gleam

Gleam's typed functional model, kept small enough to compare with the other versions.

027 commits
2026 / TypeScript

Ripple Game of Life

RippleJS

A first read of RippleJS, using Conway to work out how its reactive model behaves.

09 commits

Same rules, different tradeoffs.

The algorithm stays tiny on purpose. What changes is where state lives, how updates flow, and how much ceremony sits between a cell and its next generation.

Back to work