Strongtalk
This edition

Strongtalk, re-built in Rust

The environment on this site is a new implementation of the Strongtalk virtual machine, written in Rust, compiled to WebAssembly and run inside your browser.

Starting from the original program

The starting point was strongtalk-r200.exe, a 32-bit Windows build of the original VM. Reading its machine code gave the rules this edition follows:

WhatThe original's rule
SmallIntegers30-bit values with a 2-bit tag, so SmallInteger maxVal is 536870911
Float printing%1.6f, then trailing zeros dropped, keeping one digit after the point (Float pi → 3.141593)
Failure codesthe VM's own list of 136 symbols (#OutOfBounds, #SmallIntegerOverflow, …)
Bit shiftsleft shifts that leave 30 bits fail with #SmallIntegerOverflow; right shifts stop at 29 places
Not understooda Message holding receiver, selector and arguments is sent with doesNotUnderstand:
Mandelbrot primitivez starts at c, at most n − 1 steps, escape when x² + y² > 4
Inlined messagesifTrue:, ifFalse:, and:, or:, whileTrue:, to:by:do: and friends

The exe contains only the VM. The class library and windows live in a separate image file that is not part of it, so those were written anew for this edition, in typed Strongtalk source in the original's file-in format (Delta define: #Point as: (...)).

How it works

Your work is kept

Classes and methods you define in the environment are saved in your browser and come back when you return. File › Download my changes saves them as a .dlt file you can file in again later.

Differences from the original

Open the environment