Somewhere at the bottom of the Forth and Clyde Canal, buried in the silt, there is a box of custom silicon that was right about almost everything.
Back in 1988 a Scottish hi-fi company shipped a processor that checked the type and bounds of every memory access in hardware, garbage-collected its own heap in silicon, and treated memory and disk as a single persistent object store. Retellings of the story make it out as charming folly, one where a company that made record turntables decided von Neumann was wrong.
But the story of the Rekursiv deserves to be more than just a curiosity, because almost forty years after it went into the water, its ideas are now shipping in production silicon from Arm; and also because the economics that killed it have just been reversed. Although all these years later, the fine details of the story mostly rest on the recollections of people who were there, it turns out that the hi-fi company were right about almost everything except which decade to build the hardware.
A hi-fi company builds a computer
Linn Products is the Glasgow company Ivor Tiefenbrun founded in 1972, and if you know it at all you know it for the Sondek LP12, still widely regarded by its partisans as the finest record deck ever made.
The Linn Sondek LP12
By the early eighties Linn had built a modern factory at Eaglesham, south of the city itself, and ran their business on a pair of VAX-11/750s along with a pair of 11/780s. But Tiefenbrun came to loathe the software they used. He wanted a system in which every physical object in the factory, down to each individual turntable moving through assembly, test, and even after-sales, had a shadowing software object accumulating its history (Pountain, Byte, November 1988).
So around 1981 Linn hired programmers and a University of Glasgow computer science lecturer, David Harland, and built an object-oriented language called LINGO. LINGO was a Smalltalk with some Algol in its syntax, not to be confused with the other Lingo programming language, which wouldn’t come along for another eight years.
MICRO$COPYTREE: entf 1 pagebus d=ustack crtf IDXBADTYPES newtrbr _CONS incmsp m.sp' newmptr jf MICRO$COPYTREE ldustk d=pgrorr // the CDR branch m.fp 1 uaddbr newmptr readustk pagebus d=ustack idx2 newsr newbr loadaddr idxget nocheck incmsp m.sp' newmptr jf MICRO$COPYTREE ldustk d=memout // the CAR branch js RTN$CONS rtf
Microcode for a recursive tree-copy instruction. Note the instruction calling itself, something forbidden to a conventional CPU (Source: Pountain, 1988).
... continue reading