NanoTraits in trunk

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

NanoTraits in trunk

Andreas.Raab
Folks -

As I'm sure you've noticed, I've pushed the NanoTraits updates. There is
one oddity in the middle namely you'll get a merge request for
ClassDescription caused by some MC issue earlier (for some reason, an
ealier update didn't include the change to the class var). Choose to
"keep" it and continue.

Other than that everything should be in excellent shape after the
updates. There should be no newly failing tests and no unexpected passes.

If you have external packages that have traits dependencies of any sort,
I'd be interested to find out if NanoTraits introduce any problems with
your packages. If so, please report what kinds of problems you're seeing
so that we can address them.

Cheers,
   - Andreas


Reply | Threaded
Open this post in threaded view
|

Re: NanoTraits in trunk

Randal L. Schwartz
>>>>> "Andreas" == Andreas Raab <[hidden email]> writes:

Andreas> As I'm sure you've noticed, I've pushed the NanoTraits updates.

What's the best way to learn:
1) what these are, if you never learned about the old Traits
2) how these are different from the old Traits
3) what *might* break (things to watch out for) when porting old code

I'm asking partially for me, but also so I can point others to the right
info.

If the answer is "well, that's the next step - documentation", it'd
be nice to know. :)

--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<[hidden email]> <URL:http://www.stonehenge.com/merlyn/>
Smalltalk/Perl/Unix consulting, Technical writing, Comedy, etc. etc.
See http://methodsandmessages.vox.com/ for Smalltalk and Seaside discussion

Reply | Threaded
Open this post in threaded view
|

Re: NanoTraits in trunk

David T. Lewis
In reply to this post by Andreas.Raab
On Thu, Dec 31, 2009 at 04:42:28PM +0100, Andreas Raab wrote:

> Folks -
>
> As I'm sure you've noticed, I've pushed the NanoTraits updates. There is
> one oddity in the middle namely you'll get a merge request for
> ClassDescription caused by some MC issue earlier (for some reason, an
> ealier update didn't include the change to the class var). Choose to
> "keep" it and continue.
>
> Other than that everything should be in excellent shape after the
> updates. There should be no newly failing tests and no unexpected passes.

I just completed the update to my image, and everything loaded as
advertised (just the one merge request mentioned above). The traits
tests are all green, and everything seems fine.

The update is a rather lengthy procedure on a slow machine, so I
expect that a new prebuilt image at http://ftp.squeak.org/trunk/
will be in order soon.

Dave


Reply | Threaded
Open this post in threaded view
|

Re: NanoTraits in trunk

Randal L. Schwartz
>>>>> "David" == David T Lewis <[hidden email]> writes:

David> The update is a rather lengthy procedure on a slow machine, so I
David> expect that a new prebuilt image at http://ftp.squeak.org/trunk/
David> will be in order soon.

Especially given the weird merge required in the middle.
If someone is updating but not following squeak-dev, they might be
confused as to what to do.

This is probably "horse already out of the barn" talk, but is there
a way to insert a popup just before that dialog comes up in some preamble
that says "when the following happens, do this"?

--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<[hidden email]> <URL:http://www.stonehenge.com/merlyn/>
Smalltalk/Perl/Unix consulting, Technical writing, Comedy, etc. etc.
See http://methodsandmessages.vox.com/ for Smalltalk and Seaside discussion

Reply | Threaded
Open this post in threaded view
|

Re: NanoTraits in trunk

Andreas.Raab
In reply to this post by Randal L. Schwartz
Randal L. Schwartz wrote:
> What's the best way to learn:
> 1) what these are, if you never learned about the old Traits

The same way by which you'd learn about the old traits. Read a paper or
something.

> 2) how these are different from the old Traits

I opted out of every single improvement that was discussed to avoid
incompatibilities. As far as I know this version is 100% compatible in
terms of black-box behavior.

> 3) what *might* break (things to watch out for) when porting old code

There are two potential issues: One is if your package uses trait
implementation specific methods. Most of these can be replaced merely by
using the public interface, for example instead of "TFoo addExclusionOf:
#bar" just use "TFoo - {#bar}" which is precisely the same.

The second potential issue is that traits now inherit from
ClassDescription so a missing override in TraitBehavior could
potentially cause problems (say, if you had Object>>isTraitOrObject
^true and Behavior>>isTraitOrObject ^false). This should be very rare
though - most cases that I've seen use overrides in both Behavior and
TraitBehavior and if that's done consistently it will work fine.

Generally I really don't expect any issues. Since the structure was
preserved pretty much everything should just work.

> I'm asking partially for me, but also so I can point others to the right
> info.
>
> If the answer is "well, that's the next step - documentation", it'd
> be nice to know. :)

No, the next step is unloading :-)

Cheers,
   - Andreas

Reply | Threaded
Open this post in threaded view
|

Re: NanoTraits in trunk

Andreas.Raab
In reply to this post by Randal L. Schwartz
Randal L. Schwartz wrote:
> This is probably "horse already out of the barn" talk, but is there
> a way to insert a popup just before that dialog comes up in some preamble
> that says "when the following happens, do this"?

Yes, there is: Fix the server to produce the correct diff for the
earlier update. I have no idea why that happens but it's clear that the
problem is caused by an earlier update which fails to deliver the change
in class definition. Kernel-ar.348 clearly has the new class var but the
diff produced for it doesn't.

Cheers,
   - Andreas