> The genius of Common LISP was it had mechanical sympathy for the forthcoming ‘32-bit’ computers
“Forthcoming” is a bit anachronistic.
By the time CL was being standardized in the early 80s 32 bit machines like the Vax were quite common, and there was plenty of experience from NIL and franzlisp. Also there was a decade of experience from the CADR which was a 32-bit machine.
And CL itself was based mainly on the CADR’s Lisp, a descendant of MACLISP, which was developed on 36-bit machines like the PDP-6/PDP-10/PDP-20 which was the original Lisp machine, and also the progenitor of Interlisp, that also fed CommonLisp. MACLISP also ran on Honeywell’s 36-bit hardware under Multics.
The 360 32-bit registers but a 24-bit address space, the 370 (from 1971) made that a virtual address space. Both of those I would call a "24-bit" computer. In 1983 IBM came out with the 370-XA
which I would describe as "32-bit" I think the VAX is a good example of a "32-bit" machine because they are similar in most respects to ARM/x86/RISC-V, particularly the virtual memory facility and how that relates to the OS such that you can boot Linux on it
The VAX was really common, our high school had one, but when the 386 hit the market we were all shocked that you could have your very own PC that would perform 5x faster than a certain VAX at certain benchmarks and before long it was 30x faster.
The strange thing about the PC was that it took a very long time for 32-bit OS to be mainstream: the 386 was out in 1986 but it wasn't until Windows 95 that most people were running a 32-bit OS though I had a Linux computer in 1993 and dragged home a free VT-100 from the math department and a free Commodore 128 from the undergraduate physics lab both of which I used to log into it.
i don't think it really matters that you couldn't address more than 16 mebibytes, since you couldn't afford anywhere close to that much memory at the time anyway
the 68000 (used in the macintosh, jackintosh, apollo, sun-1, and amiga) and 68010 (used in the sun-2 and the unix pc) also used 24-bit addressing, and every arm before the arm6 had only 26-bit addressing†, so in those ways I think the 24-bit nature of the 360 was actually closer to the usual suspects in the attack of the killer micros than the vax was
the 360 model 67 had 4-kibibyte pages and segments, almost exactly like the 80386, but it shipped in 01965
a much bigger difference is that the 360, 68000, vax, 80386, arm, and risc-v all used byte-oriented addressing, while the pdp-10 and cadr were word-addressed machines, like mix, the cdc 6600, the crays, the pdp-8, or the greenarrays ga144. you couldn't take the address of a byte in memory on a pdp-10 or cadr. to me this is a much bigger issue for 'mechanical sympathy' than whether you can address four times as much memory as you can afford, 16 times as much, or 1024 times as much
(data general, predictably, found a way to combine the worst of both worlds; on the nova you could access memory in a byte-addressed way, but only if it was in the first half of the 16-bit address space. the upper half could only be addressed as 16-bit words)
the timeline of common lisp standardization and relevant 32-bit machines is maybe something like
- ibm 360 (01965)
- vax-11/780 (01977)
- cadr lispm (01978)
- 68000 (01979)
- common lisp effort starts at arpa (01981)
- apollo dn100 (01981? using two 68000s)
- berkeley risc-i (01981, fabbed by mosis and published but not sold)
- stanford mips (01981, likewise)
- sun-1 (01982)
- gls presents common lisp at acm lisp symposium (01982)
- sun-2 (01983)
- 68020 (01984, removal of 24-bit addressing limit)
- ti explorer (01984, descended from the cadr, using a 32-bit nubus; https://en.wikipedia.org/wiki/Transistor_count says the cpu wasn't 32-bit until 01987, but i think that's maybe wrong)
- cltl1 (01984)
- macintosh (01984, including the more expensive model with 512 kibibytes of ram)
- sun-3 (01985, using a 68020)
- jackintosh (01985)
- 80386 (01986)
- sparc (01986)
- mips r2000 (01986)
- arm2 (01986)
- compaq deskpro 386 (01986, the first mass-market 80386)
- ibm rt pc (01986, the first product using the romp processor theoretically available in 01981)
- zilog z8000 (01986)
- 68030 (01987)
- amd 29000 (01988)
- sun-4 (01988, first sun using sparc)
- arm3 (01989, still with the 26-bit limit)
- 80486 (01989)
- cltl2 published (01990)
- ansi standardizes common lisp (01994)
† even the arm6 and arm7 supported 26-bit addressing for backward combatibility, but as far as i can tell that's not really any different from the 80386 and vax supporting 16-bit addressing; i think it was a different processor mode
— ⁂ —
i think the 80386 took a long time to be mainstream because it was expensive as fuck, so people kept buying 80286 and even 8088 systems well into the 01990s. this meant that if you shipped software that required a 386, you were drastically limiting your market, so, for a long time, most 386es got used as just faster 8086es. its horrific boot sequence and bletcherous virtual memory design probably played a significant role in slowing the advent of 32-bit operating systems, too
“Forthcoming” is a bit anachronistic.
By the time CL was being standardized in the early 80s 32 bit machines like the Vax were quite common, and there was plenty of experience from NIL and franzlisp. Also there was a decade of experience from the CADR which was a 32-bit machine.
And CL itself was based mainly on the CADR’s Lisp, a descendant of MACLISP, which was developed on 36-bit machines like the PDP-6/PDP-10/PDP-20 which was the original Lisp machine, and also the progenitor of Interlisp, that also fed CommonLisp. MACLISP also ran on Honeywell’s 36-bit hardware under Multics.