[squeak-dev] Preference settings for 5.3 release

Thiede, Christoph Christoph.Thiede at student.hpi.uni-potsdam.de
Fri Dec 27 17:45:03 UTC 2019


Hi Eliot,


I guess we are talking about different things :-)


I was talking about the compiler preferences - how to handle an underscore assignment, for example - and proposed to replace these preferences with special Deprecation warnings. You are talking about the bytecode set, what is the relation? :) If I load old code via Monticello, for example, I will load the source only which will be compiled on my VM, won't it? So it is always compiled with the latest bytecode. This might be different when loading a project file that includes CompiledMethods, though.


However, thanks for your crash course about bytecode sets! They're an interesting concept, and I will be happy to take a closer look at them at some time.


Best,

Christoph

________________________________
Von: Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org> im Auftrag von Eliot Miranda <eliot.miranda at gmail.com>
Gesendet: Dienstag, 24. Dezember 2019 02:50:54
An: The general-purpose Squeak developers list
Betreff: Re: [squeak-dev] Preference settings for 5.3 release

Hi Christophe,

On Mon, Dec 23, 2019 at 11:25 AM Thiede, Christoph <Christoph.Thiede at student.hpi.uni-potsdam.de<mailto:Christoph.Thiede at student.hpi.uni-potsdam.de>> wrote:

Hi all,


just my two cents :)


> Compiler

> I claim we are long past the point where enabling block argument assignments or underscore assignment should be a default. Fix your damn code!
> Are we sticking with the EncoderForV3PlusClosures encoder?

IIRC someone explained recently that disabling this preference would make it impossible to load old code? I would not like to make this unnecessary restriction.
Instead, I would suggest - provided that the following is implementable - to raise a special kind of warning if deprecated syntax is used. Users can then decide to suppress or not suppress these warnings. During loading old code, we can catch and ignore them. (And yes, we sometimes should work at improving/exchanging the UI of warnings).

I think that they;'re wrong :-)  Let me explain why.

The Cog VM supports up to two bytecode sets, selected by the sign bit of the method header.  If the sign bit is not set the "primary" bytecode set is selected, and if set the "secondary" bytecode set is selected.  Both the primary and secondary bytecode sets are "installed" by setting a couple of class variables in CompiledCode, one for the PrimaryBytecodeSetEncoderClass and one for the SecondaryBytecodeSetEncoderClass. Which bytyecode set is the preferred one is selected by yet another class variable, PreferredBytecodeSetEncoderClass.

By default these variables have these values (they have these values ion trunk currently)
PreferredBytecodeSetEncoderClass nil
PrimaryBytecodeSetEncoderClass EncoderForV3PlusClosures
SecondaryBytecodeSetEncoderClass EncoderForV3PlusClosures

What setting the preferred bytecode selector set to SistaV1 does is to set these variables to these values:
PreferredBytecodeSetEncoderClass EncoderForSistaV1
PrimaryBytecodeSetEncoderClass EncoderForV3PlusClosures
SecondaryBytecodeSetEncoderClass EncoderForSistaV1

So what it *does not do* is change the meaning of the bit in the method header.  A non-negative method header still means the method uses the old bytecode set.  So old code continues to load.  It is entirely unaffected.  What it does mean is that any methods that are compiled (that are not quick methods (*)) are compiled using the new bytecode set and will have negative method headers.  So if you export them, e.g. via an ImageSegment, they will use the SistaV1 bytecode set in the receiving image whether it has the preference set or not.  Further, the VM will happily run the new bytecode set because for a whole now the VM has had the two bytecode sets compiled in in this way.  What will happen ion the image that doesn't have the SecondaryBytecodeSetEncoderClass set to EncoderForSistaV1 is that the debugger, etc, will get confused because they will interpret the new byetcodes using the old encodings.

(*) quick methods don't have bytecodes, just a primitive number.  So these methods keep being expressed in the old bytecode set because I've been too lazy to rewrite quick method generation to respect the PreferredBytecodeSetEncoderClass, because for the moment it makes no difference.

Does this make sense or am I being too detailed and confusing?

Executive summary, the design was careful to *not* invalidate the old bytecode set, to make using the new bytecode set an option that does not break backwards compatibility.

In future if we want to jettison the old bytecode set and design a third set, that's when we introduce backwards com potability issues, and we introduce the need to express quick methods using the SistaV1 bytecode set.  But for the moment we're safe.


> 'ignore style if only bold'?

Didn't we talk about this recently? It is related to storing all TextAttributes into a compiled method. See here<http://forum.world.st/Text-gt-gt-unembellished-td5106986.html>. According to Tobias, it sounds like something that has developed historically, so I proposed to deprecate it.
But yes, loosely related to browsing, I guess.

> 'Use the new color picker' - is the new color pick not our pick for picking colors? If it still isn't the sensible choice more than 10 years later, maybe we should dump it completely.

There still might be one feature which the classical color pick does have, but the new one is missing: Really "picking" a color from any pixel of the screen. Maybe we should add this feature. Or am I missing something?

Merry Christmas,
Christoph
________________________________
Von: Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org<mailto:squeak-dev-bounces at lists.squeakfoundation.org>> im Auftrag von Nicola Mingotti <nmingotti at gmail.com<mailto:nmingotti at gmail.com>>
Gesendet: Montag, 23. Dezember 2019 10:56:36
An: The general-purpose Squeak developers list
Betreff: Re: [squeak-dev] Preference settings for 5.3 release


Hi Elliot,


Forgive me for encouraging you to proselytize on e.g. Quora.  Do you have a blog?  I'd love to read your impressions and criticisms.




I am flattered, really:)

At the moment I am putting some effort in the Video medium. I think it is extremely important to get people to try Squeak, they must see it in action. It is very very difficult to explain in textual form what it can do and why it is different. It is difficult for the reader to get the idea. (it was very difficult for me, and I am very much trained in learning by the book)

When I produce something new I publish it in Linkedin.
https://www.linkedin.com/in/nicola-mingotti-2612a940

I usually copy the link also in Reddit "smalltalk" channel.

I try to keep updated also the Swiki.

If you have other suggestion of where to publish/link things or share points of view let me know. I will try to be there as well.

bye
Nicola





Opinion of total beginners (so, partially also mine) should be weighted less, because they do not know what is coming. Like opinion of students, let them choose democratically and Calculus would be deleted from any curriculum. :P

bye
nicola




> On Dec 23, 2019, at 1:59 AM, David T. Lewis <lewis at mail.msen.com<mailto:lewis at mail.msen.com>> wrote:
>
> I am sure that both of those preferences will remain.
>
> I also agree with your view of colorful windows, and I always turn
> this preference on in my image(s). But I recall that this was discussed
> for the 5.2 release, and we had feedback from new users who did
> not like the window coloring. For that reason, we should probably
> keep the preference turned off in the release image.
>
> But I am not a "new user" any more, so if there are any fresh opinions
> on the subject of colorful windows, please speak up :-)
>
> Dave
>
>
> On Mon, Dec 23, 2019 at 12:29:03AM +0100, Nicola Mingotti wrote:
>>
>> I am totally 'pro' on reducing the number of preferences.
>>
>> But I ask you this:
>>
>> [1] Do not remove the preference to keep different windows in different colors. That is one of the most useful decision you can make IMHO. Why would you color the Browser, Workspace and Debugger in the same way?
>>
>> I understand that all grey may seems more a "professional/industrial" interface, but I guess we can leave that aim to Pharo and go on on our way.
>>
>> [2] "do not remove the possibility of having larger fonts".
>>
>> With high High-DPI Squeak would be unusable out of the Box.
>>
>> bye
>> Nicola
>>
>>
>>
>>
>>> On Dec 20, 2019, at 11:18 PM, David T. Lewis <lewis at mail.msen.com<mailto:lewis at mail.msen.com>> wrote:
>>>
>>> A preference elimination initiative would be *very* welcome, but
>>> it is something that we should start working on immediately after
>>> the 5.3 release.
>>>
>>> Preferences are like other bad habits: easy to get into, and
>>> hard to eliminate. So let's all make a New Year's resolution to
>>> lose weight, exercise more, eat healthier food, and get rid of
>>> unnecessary preferences in Squeak.
>>>
>>> For the current release, I think that we should limit discussion
>>> to specific default preference settings that we might want to
>>> change for the upcoming release.
>>>
>>> Dave
>>>
>>> On Fri, Dec 20, 2019 at 12:57:15PM -0800, tim Rowledge wrote:
>>>> We have a *lot* of preferences - in my view way too many - and there should be at least some discussion about the default values we provide for 5.3
>>>> tl;dr - Too many preferences, too badly organised. reduce, make decisions, simplify.
>>>>
>>>> I can't imagine I'll hit all of them here but let's try to get something done -
>>>>
>>>> Arithmetic
>>>> Should we have these as preferences? How many people understand enough about Burnikel-Ziegler recursion splits to make it sensible to easily change?
>>>>
>>>> Compiler
>>>> I claim we are long past the point where enabling block argument assignments or underscore assignment should be a default. Fix your damn code!
>>>> Are we sticking with the EncoderForV3PlusClosures encoder?
>>>>
>>>> Examples
>>>> These are for the test suite and if possible should be hidden
>>>>
>>>> Files
>>>> The one entry here relates to the encoding of stdio streams so maybe this category should be renamed?
>>>>
>>>> Graphics
>>>> Both entries relate to sub-pixel font rendering, so again, rename?
>>>>
>>>> Morphic
>>>> So. Many. Preferences.
>>>> Surely at least the text edit related ones ought to be removed and kept to the 'editing' section?
>>>>
>>>> OLPC
>>>> Really?
>>>>
>>>> TextDiff
>>>> Could be better placed; in Tools?
>>>>
>>>> Tools
>>>> 'Use unified message labels' What does this do? Is it worth allowing a choice for this sort of thing?
>>>>
>>>> browsing
>>>> Aargh! More options than 31 flavour ice-cream stores! How many are actually of value?
>>>> 'ignore style if only bold'?
>>>> 'menu button in tool pane' - no actual senders, for example
>>>>
>>>> colors
>>>> 'Use the new color picker' - is the new color pick not our pick for picking colors? If it still isn't the sensible choice more than 10 years later, maybe we should dump it completely.
>>>>
>>>> fileout
>>>> are there ever good reasons to not have 24 hr timestamps? For not checking for slips?
>>>>
>>>> general
>>>> Wow, still more flavours of ice-cream.
>>>> 'Read only mode' - no senders. It's so old there is no timestamp.
>>>> 'Use locale' is there any reason to ever not use it?
>>>>
>>>> .... and my brain melted at this point.
>>>>
>>>>
>>>>
>>>> tim
>>>> --
>>>> tim Rowledge; tim at rowledge.org<mailto:tim at rowledge.org>; http://www.rowledge.org/tim
>>>> Useful random insult:- Couldn't pour water out of a boot with instructions on the heel.
>>>>
>>>>
>>>>
>>>
>>
>>
>




--
_,,,^..^,,,_
best, Eliot




--
_,,,^..^,,,_
best, Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20191227/9adcc615/attachment.html>


More information about the Squeak-dev mailing list