← Back to context

Comment by isr

4 hours ago

Adding to what you said. Squeak was a clean open source reimplementation (by the devs who did the original Smalltalk-80), so it's real history starts from there (ie: the 90s, not the 70s)

One thing to keep in mind is that smalltalks all have the same ability to save & load code to & from disk, just as any other programming environment. But, they also have the option of just using the image to persist, and iterate on that.

Squeak overdid that aspect of it, such that over time, it became hard to prune older side projects & and it just became increasingly bloated. Both Pharo & Cuis forked from squeak at about the same time.

Pharo images are fully bootstrapped from a seed.

Cuis is not quite there yet, but cuis from its inception went on a ruthless simplification drive (the number of classes in the system was reduced by about 500% !), so that it's base is effectively a "seed", and the rest of a cuis image is built up by importing projects (from disk & git) on demand.

But yeah, curating a set of images over time is remarkably enticing & friction free. Even in cuis, I find I have to force myself to keep flushing changes to my own packages.

Its not that the tools to use files are limited. In cuis, they're not. You can work on multiple different things WITHIN THE SAME IMAGE (changes to some builtins, a couple of your own projects, etc), and the system will keep track of what belongs where. So a couple of mouse clucks will fileout the relevant code to the relevant changesets & packages.

And yet - just banging on the same image is just ... fun, easy, enticing.

> Squeak was a clean open source reimplementation

Small correction: they actually cloned/converted the Apple Smalltalk image, so those bits remained. The VM was created from scratch by writing it in Slang, a Smalltalk dialect that was essentially equivalent to BCPL and could be translated to C.

https://dl.acm.org/doi/10.1145/263698.263754

  • The VM in Slang had been previously published as part of the "blue book" (now that is what I call open source!) some 14 years before, and as the paper you linked to mentioned, Mario Wolczko at the University of Manchester had typed it in so it was available in machine readable form.

    They did drop the object memory part completely and designed a new one from scratch.

    Previously people had manually translated the VM from Slang to Pascal or C (I did so myself in 1986) but for this project they wrote a tool for that (in Smalltalk, of course).

    Here is another copy of the "Back to the Future" paper:

    http://www.mirandabanda.org/files/Papers/BttF.html

  • I didn't know that. So they didn't bootstrap an image from scratch, when they created the new VM?

    • No, they used a tool (SystemTracer) running inside the original Smalltalk that enumerated all the objects in the running image and serialized them in a new image format into a new image file. Every time the image file format changed, it was transformed like this. Smalltalk is very close to a biological system.

    • That's how I understand what they wrote.

      "Produce a new image:

        - Design a new Object Memory and image file format.
      
        - Alter the ST-80 System Tracer to write an image in the new format.
      
        - Eliminate uses of Mac Toolbox calls to restore Smalltalk- portability.
      
        - Write a new file system with a simple, portable interface."
      
      

      https://dl.acm.org/doi/10.1145/263698.263754

      Hmm...I wonder if Dan used the PDF writer I wrote for him to produce that version of the paper...

      1 reply →