[squeak-dev] A new Squeak release

K K Subbu kksubbu.ml at gmail.com
Fri Mar 2 10:30:09 UTC 2018


Is there a plan to spin out Squeak (the ST VM) from Squeak (the image) 
in this (or subsequent) release cycle? or will the two releases go 
hand-in-hand forever?

Now that the same VM is used by multiple (image) projects like Scratch, 
Etoys, Pharo, Cuis and with binary variants like 32bit/64bit, cog/spur 
etc. putting the VM on a separate cycle may be easier than linking it 
with Squeak project releases. The VM may continue ship with a built-in 
image for bootstrapping other images or for VMMaker but that need not be 
linked with the latest Squeak release.

Regards .. Subbu

On Thursday 01 March 2018 11:27 PM, Eliot Miranda wrote:
> Hi All,
> 
>      we're moving close to a new Squeak release.  There are some issues 
> to discuss before we decide  exactly what and when to release.  I have 
> two issues that I would like people's opinions on.
> 
> 1. the VM can be compiled with support for read-only objects, and indeed 
> Pharo is already doing this.  Were we to enable read-only object support 
> we could introduce read-only bindings.  I have this code ready to go, 
> but the current Squeak VM does not include read-only object support.  We 
> could go ahead and release without read-only object support or enable 
> read-only object support in the VM, push the new VMs out and enable 
> read-only literals.  It would then take a few days for everyone to test 
> their code and fix issues with read-only literals.  For example, code 
> such as
> 
> a := { 'one ' . 'two ' . 'three ' }.
> a do: [:e | e at: e size put: (Character value: 0)].
> 
> must be rewritten, e.g. as
> 
> a := #('one ' 'two ' 'three ' ) collect: [:ea| ea copyReplaceAll: 
> Character space asString with: Character null asString].
> 
> and the classic
> 
> '' writeStream
> 
> as
> 
> '' copy writeStream
> 
> i.e. literals are read-only but copies of literals are not.
> 
> 2. the current VM, Monticello and the ClassBuilder has full support for 
> ephemerons, which provide instance based finalization. For example, if a 
> file that is the key of some ephemeron in a registration dictionary, 
> then, with a suitable finalization process, the VM will arrange that the 
> ephemeron gets sent finalize when the file is only referenced from 
> ephemeris, and then the ephemeron can finalize the file itself, flushing 
> any buffered characters and closing the file's descriptor. What we have 
> now is a copy of the file in a weak registry, which means we finalize 
> the copy not the actual file. This limits our ability to write clean 
> file implementations. The same applies to several other uses of weak 
> registries. Again Pharo is using the facility (and hence we can use 
> their finalization process and some of their code).
> 
> So the question is should we hold up the release for these features or 
> should we go ahead and somehow arrange that we do address these (and 
> other?) issues promptly in a subsequent release?
> 
> Let me make a proposal. We go ahead and make a release with what we 
> have, calling it Squeak 5.5, and then follow a plan to provide read-only 
> object support, read-only literals, and as mush of the 
> finalizationsystem rewritten to use ephemeron (where appropriate) as we 
> can manage by, say, September 1. This will be Squeak 6. And the trunk 
> process would update to requiring a rad-only-object enabled VM 
> immediately after the 5.5 release.
> 
> _,,,^..^,,,_
> best, Eliot
> 
> 
> 



More information about the Squeak-dev mailing list