<div dir="ltr">Hi All,<div><br></div><div>    the VM now has support for read only objects, and the first logical application is for literals, making boxed floats, strings, symbols, arrays and byte arrays read-only.  Doing so is trivial; only two methods need to be modified (see attached).  AFAIA little or no core code is broken by making literals read-only.  However, when I ran the test suite with read-only literals in place, several tests were broken.  These are things like creating null-terminated strings for testing OSProcess, by replacing spaces in string literals with zeros, etc.</div><div><br></div><div>When we added read-only literals to VisualWorks in something like vw7.0 the balance of opinion was that we should not break user code.  Hence we implemented a preference scheme with three states:</div><div><br></div><div>- By default, an attempt to modify a read-only literal would silently make the literal mutable temporarily,update it and then reenable read-onlyness.</div><div>- A second state would issue a warning to the transcript, while doing what the default did.</div><div>- The third state would raise an error</div><div><br></div><div>Remember that all one needs to do to fix code that modifies literals is to send copy to the literal before modifying the copy, since copies of read-only literals are mutable.</div><div><br></div><div>I was on the side of only raising an error, but was overruled :-).  I wonder what this community thinks.  If there are strong views that user code should continue to function unchanged (even though it is modifying literals, which is so so wrong :-) ) I'm happy to implement a scheme similar to that for VisualWorks.  But I'd rather not have to and simply have people fix their code within a system that raises an error whenever an attempt is made to modify a literal, and is as simple as possible, but no simpler ;-)  Thoughts, opinions?</div><div><br></div><div><br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>
</div></div>