[squeak-dev] Immutability (was Re: About String vs Symbols)
janko.mivsek at eranova.si
Tue Jul 29 22:24:59 UTC 2008
Eliot Miranda wrote:
> > Wouldn't that break a lot of code? Like anything that does
> > on a String like #streamContents: ?
> No, unless you're doing WriteStream on: '' which you should not do
> Normal Strings (those that are created with #new: or with copying) are
> mutable, just as they are now.
> In general, any code that breaks when the immutability of literals is
> ensured by the VM was broken to begin with...
> Its trivial to fix such code. e.g. if you have
> (ReadWriteStream with: 'The date is ') print: Date today; contents
> you simply change it to
> (ReadWriteStream with: 'The date is ' copy) print: Date today;
> and you're done.
> Some developers in the VW community complained when we introduced
> immutability in 2002 about exactly these cases. But the fuss soon died
> down as people realised that indeed their code was safer with the change.
I can confirm that. Changes to the existing code due to the immutability
were indeed rare. In my case mostly changing WriteStrean on: '' to
WriteStream on: String new.
Smalltalk Web Application Server
More information about the Squeak-dev