[squeak-dev] Incorrect keyboard mapping with Ctrl key in latest Smalltalk VM release (Windows 1903 64bit, squeak.cog.spur)

Eliot Miranda eliot.miranda at gmail.com
Sun Dec 15 22:14:33 UTC 2019


On Sun, Dec 15, 2019 at 3:14 AM Jakob Reschke <forums.jakob at resfarm.de>
wrote:

> If the code is hidden in ifdefs it will not be visible to the compiler and
> thus the CI. Then we will not detect when the old ways break. Maybe
> implement a feature flag that can be switched from the image. New images
> can switch the old mess off via some primitive, and tests can switch it on
> to test the mess.
>
> After some time the mess and flag can be removed and old images will no
> longer be supported.
>

+1.  But that's a fair amount of work ;-)  These flags are a precious
resource.  What I was suggesting below was that the legacy code, protected
by ifdef's, was enabled, and stayed there until some major release, at
which time it could be disabled.  I agree with you that disabling it by
default is wrong.

IOn general with the VM one wants to maintain backward compatibility until
a major release arrives that makes it impossible to for the current VM to
support some set of older versions.  For example, the Spur VMs we use now
cannot run V3 images.  So when Spur VMs were introduced any backward
compatibility for pre-Spur images could be jettisoned from the Spur VMs.

So a viable approach is to use ifdefs, to keep the code enabled, and
revisit disabling the code pin every major release.


> Eliot Miranda <eliot.miranda at gmail.com> schrieb am Di., 10. Dez. 2019,
> 20:28:
>
>>
>>
>> On Tue, Dec 10, 2019 at 11:26 AM Eliot Miranda <eliot.miranda at gmail.com>
>> wrote:
>>
>>>
>>>
>>> On Tue, Dec 10, 2019 at 10:31 AM tim Rowledge <tim at rowledge.org> wrote:
>>>
>>>>
>>>>
>>>> > On 2019-12-10, at 10:05 AM, Nicolas Cellier <
>>>> nicolas.cellier.aka.nice at gmail.com> wrote:
>>>> >
>>>> > Hi Christoph,
>>>> > The image side is totally messy,
>>>> > The VM side is also messy, so finding a combination that might work
>>>> is a sport.
>>>>
>>>> You're not wrong. I had a bit of fun with this stuff making the
>>>> Raspberry Pi Scratch system handle linux non-ascii type keyboard input. An
>>>> interesting problem there was that enabling the linux extension completely
>>>> broke something else (that I can't remember at all) and made the whole
>>>> attempt moot.
>>>>
>>>>
>>>> > To summarize: we have reached a point where we cannot change/add one
>>>> feature without breaking one other (at least).
>>>> > The consequence is that we have some sort of "stable" status because
>>>> we cannot change anything (the statu quo).
>>>>
>>>> I suspect this is what happens to almost every complex project. I mean,
>>>> look at how all the OS's get messed up and stall for years. They're all
>>>> terrible right now.
>>>>
>>>> Supporting old images means keeping the old messy VM code around. Doing
>>>> something new and clean means a lot of work and probably using new
>>>> primitives or some variety of flag to request use of the new code. Then
>>>> we'd want to decide on a time to drop the old mess.
>>>>
>>>
>>> See can at least comment it and corral the old messy code in ifdef's
>>> such as
>>>
>>> #if SUPPORT_OLD_IMAGE_CHARACTER_MAPPING_CRAP
>>> ...
>>> #endif
>>>
>>> so that we don't have to think too hard about what we delete the next
>>> time we have a major release that breaks image backward compatibility.  I
>>> personally don't mind the old cruft being there.  What I hate is not
>>> knowing what the cruft is.  The code, especially the C VM code, must be
>>> properly documented so that it doesn't require intimate knowledge with
>>> older versions, the history, but twiddling hacks, etc, etc.
>>>
>>
>> I mean:
>> We can at least comment it and corral the old messy code in ifdef's such
>> as
>>
>> #if VERSION <= FOO
>> # define SUPPORT_OLD_IMAGE_CHARACTER_MAPPING_CRAP 1
>> #endif
>> ....
>> #if SUPPORT_OLD_IMAGE_CHARACTER_MAPPING_CRAP
>> ...
>> #endif
>>
>> so that we don't have to think too hard about what we delete the next
>> time we have a major release that breaks image backward compatibility.  I
>> personally don't mind the old cruft being there.  What I hate is not
>> knowing what the cruft is.  The code, especially the C VM code, must be
>> properly documented so that it doesn't require intimate knowledge with
>> older versions, the history, but twiddling hacks, etc, etc.
>>
>>>
>>>> Lovely project! ;-)
>>>>
>>>> tim
>>>> --
>>>> tim Rowledge; tim at rowledge.org; http://www.rowledge.org/tim
>>>> Strange OpCodes: DPC: Double Precision Crash
>>>>
>>>>
>>>>
>>>>
>>>
>>> --
>>> _,,,^..^,,,_
>>> best, Eliot
>>>
>>
>>
>> --
>> _,,,^..^,,,_
>> best, Eliot
>>
>>
>

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


More information about the Squeak-dev mailing list