GemTalk / Sparkle

MIT License
11 stars 5 forks source link

Port Announcements subset from Pharo to GemStone #1

Closed martinmcclure closed 3 years ago

martinmcclure commented 3 years ago

Sparkle depends on the basic features of Announcements, so this needs to be ported to GemStone. Pharo's implementation of Announcements has some advanced features that we don't currently need, and may never need, so I suggest not porting those at this time. They're a bit odd. I'll give some examples of needed and not-needed features later.

dalehenrich commented 3 years ago

Here's the Announcements package that is used by GLASS for the last 8 years ,,, There's a GemToGemAnnouncements class there as well ...

The package is in filetree format, but Rowan can read filetree and write tonel ... it is very likely that code depends upon a hondful of pharo compatibility messages ...

I've got a GsDevKit/T2F2T-Conversion from which the magic Rowan incantations to do the conversion can be extracted ... if needed ...

martinmcclure commented 3 years ago

Thanks, Dale. That sounds like a good starting point.

Examples of things we need:

Examples of things we could easily leave out:

Comments:

dalehenrich commented 3 years ago

Announcements are used by GLASS via a SystemChangeNotifier class that is kept in session temps ... probably for the same things that you will be using them for (class and method changes) so we want to make sure that we don't break GLASS when we add announcements to the base ... AnnouncementDeliveryConditions didn't exist at the time of the port and the other things are present (IIRC)...

Here's a list of the GLASS methods that reference the SystemChangeNotifier class:

Behavior>>_announceMethodMoved:oldCategory:
Behavior>>_announceReorganized
Behavior>>_basicRemoveSelector:environmentId:
Behavior>>compileMethod:category:using:environmentId:
Behavior>>moveMethod:toCategory:
Behavior>>recompile:
Behavior>>removeEmptyCategories
 Class class>>_defineClassNamed:with:
 Class>>category:
 Class>>classComment:stamp:
 Class>>removeFromSystem
GsDeployerTest>>runCase
MCBrowser>>register
MCBrowser>>unregister
MCClassDefinition>>createClass
MCClassDefinition>>load
MCPackageManager class>>registerForNotifications
MetacelloGemStonePlatform class>>registerForNotifications
MethodVersionTest>>runCase
OBCodeBrowser>>register
OBCodeBrowser>>unregister
martinmcclure commented 3 years ago

Good to know. The initial Sparkle use of announcements is communication between layers. System change announcements will be useful once we move from debugging tools to coding tools.

martinmcclure commented 3 years ago

Richard's work merged to development.