Help: Does anyone use legacy message box behavior?
Richard Gaskin
ambassador at fourthworld.com
Tue Feb 7 19:46:25 EST 2017
Monte Goulding wrote:
>> On 8 Feb 2017, at 11:02 am, Richard Gaskin wrote:
>>
>> Monte Goulding wrote:
>> > ...You might think we don’t need to touch it but it has
>> > been touched recently because of a change in the way we
>> > retain object references.
>>
>> Now I'm curious: anything interesting there in terms of features,
> performance, or memory handling?
>
> The main advantage is stability.
That's a feature. And a good one. In my community meeting with Peter
last week he outlined some of the effort going into v9 stability
improvements, and I was quite impressed.
> You might remember that in one of the early 8 releases (not sure
> which one as it was just before I started) the memory management
> of objects changed so they would be released sooner if deleted
> within tight script loops instead of waiting for the next main
> loop to released them. It was a response to a bug where creating
> and deleting lots of objects in a loop bloated memory use I believe.
> Well deleting them earlier resulted in *lots* of instability where
> there were references to objects (say the internal defaultStack
> global for example) but the object had been deleted. Things like
> scripts still executing on objects that are meant to be deleted
> or setting the defaultStack to a stack that has just been deleted.
> Anyway in order to make it easier for us to resolve these issues
> Fraser wrote a class to use as an object handle whenever we want
> to keep a reference to an object. So now we can do stuff like
> t_stack.IsValid() before doing something with t_stack.
>
> For example one crash that I just fixed is this one:
https://github.com/livecode/livecode/pull/5143
<https://github.com/livecode/livecode/pull/5143>
>
> In that crash we were getting the stack of an object when it is being
> sent a message then using it later but the particular crashing code
> was deleting the stack the target object was on in a frontScript
> which was executed between getting the reference to the stack and
> using it. So the change now uses an object handle so we can check
> it’s still valid before sending the message after the frontScripts
> are executed ;-)
Sounds like a very good change. Thanks for that background. Even
though I almost never write in C anymore, that under-the-hood stuff is
very helpful for understanding how the engine works.
>> Thanks for running this by the community.
>
> It’s worth remembering that almost all of what we do is run by the
> community because everyone is free to subscrib to our github feed
> and comment on our PRs.
An excellent reminder. The Github tools have made the process
wonderfully visible.
--
Richard Gaskin
Fourth World Systems
Software Design and Development for the Desktop, Mobile, and the Web
____________________________________________________________________
Ambassador at FourthWorld.com http://www.FourthWorld.com
More information about the use-livecode
mailing list