Dynamic Protocols in the Dev-images

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

Dynamic Protocols in the Dev-images

Damien Cassou-3
Hi,

as the developer of both the Dynamic Protocols and the dev-images, I
have included the firsts into the latter some times ago. I found them
quite useful at that time. However, they slow down a lot the UI (which
is already very slow). So, my question is:

Who wants me to continue including the dynamic protocols in the dev-images?


Is there anyone using them?

Bye

--
Damien Cassou

Reply | Threaded
Open this post in threaded view
|

Re: Dynamic Protocols in the Dev-images

Elod Kironsky
Hm, if DynamicProtocols can be easily installed into the image from the
Universe Browser, then I would say,
just leave it to the developers then :-) Does the "traits" button is
System Browser comes from DynamicProtocols?

Elod

> Hi,
>
> as the developer of both the Dynamic Protocols and the dev-images, I
> have included the firsts into the latter some times ago. I found them
> quite useful at that time. However, they slow down a lot the UI (which
> is already very slow). So, my question is:
>
> Who wants me to continue including the dynamic protocols in the dev-images?
>
>
> Is there anyone using them?
>
> Bye
>
>  


Reply | Threaded
Open this post in threaded view
|

Re: Dynamic Protocols in the Dev-images

Petr Fischer-3
In reply to this post by Damien Cassou-3
Keep DynamicProtocols preinstalled in dev-image and set preference  
option to false by default (dynamicProtocolActivation).

pf

On 30.1.2008, at 15:08, Damien Cassou wrote:

> Hi,
>
> as the developer of both the Dynamic Protocols and the dev-images, I
> have included the firsts into the latter some times ago. I found them
> quite useful at that time. However, they slow down a lot the UI (which
> is already very slow). So, my question is:
>
> Who wants me to continue including the dynamic protocols in the dev-
> images?
>
>
> Is there anyone using them?
>
> Bye
>
> --
> Damien Cassou
>
>



smime.p7s (3K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Dynamic Protocols in the Dev-images

Damien Cassou-3
In reply to this post by Elod Kironsky
On Jan 30, 2008 3:23 PM, Elod Kironsky <[hidden email]> wrote:
> Hm, if DynamicProtocols can be easily installed into the image from the
> Universe Browser, then I would say,
> just leave it to the developers then :-)


What do you think the 'dev' in dev-images means ? :-) This image has
been created and is maintained for developers only.

> Does the "traits" button is
> System Browser comes from DynamicProtocols?

Not at all.


--
Damien Cassou

Reply | Threaded
Open this post in threaded view
|

Re: Dynamic Protocols in the Dev-images

Damien Cassou-3
In reply to this post by Petr Fischer-3
On Jan 30, 2008 3:48 PM, Petr Fischer <[hidden email]> wrote:
> Keep DynamicProtocols preinstalled in dev-image and set preference
> option to false by default (dynamicProtocolActivation).


This was my idea too.


--
Damien Cassou

Reply | Threaded
Open this post in threaded view
|

RE: Dynamic Protocols in the Dev-images

Ramon Leon-5
In reply to this post by Damien Cassou-3
> Hi,
>
> as the developer of both the Dynamic Protocols and the
> dev-images, I have included the firsts into the latter some
> times ago. I found them quite useful at that time. However,
> they slow down a lot the UI (which is already very slow). So,
> my question is:
>
> Who wants me to continue including the dynamic protocols in
> the dev-images?
>
>
> Is there anyone using them?
>
> Bye
>
> --
> Damien Cassou

I vote remove them, first thing I do is disable them.  As long as they're
available on the universe like everything else, for those who want to
install them.

Ramon Leon
http://onsmalltalk.com


Reply | Threaded
Open this post in threaded view
|

Re: Dynamic Protocols in the Dev-images

Elod Kironsky
In reply to this post by Damien Cassou-3
Damien Cassou wrote:

> On Jan 30, 2008 3:23 PM, Elod Kironsky <[hidden email]> wrote:
>  
>> Hm, if DynamicProtocols can be easily installed into the image from the
>> Universe Browser, then I would say,
>> just leave it to the developers then :-)
>>    
>
>
> What do you think the 'dev' in dev-images means ? :-) This image has
> been created and is maintained for developers only.
>
>  
I meant, leave it to the users of the image (developers) if they want to
install DynamicProtocols or not :-)
>> Does the "traits" button is
>> System Browser comes from DynamicProtocols?
>>    
>
> Not at all.
>
>
>  


Reply | Threaded
Open this post in threaded view
|

RE: Dynamic Protocols in the Dev-images

Ramon Leon-5
In reply to this post by Damien Cassou-3
> > Keep DynamicProtocols preinstalled in dev-image and set preference
> > option to false by default (dynamicProtocolActivation).
>
> This was my idea too.
> --
> Damien Cassou

I'd think the things pre-installed are the ones that mostly everyone uses,
like Shout and OmniBrowser. You long ago moved optional packages to the
Universe, why would DynamicProtocols be any different?

Ramon Leon
http://onsmalltalk.com


Reply | Threaded
Open this post in threaded view
|

Re: Dynamic Protocols in the Dev-images

Martial Boniou
In reply to this post by Ramon Leon-5
At Wed, 30 Jan 2008 08:22:16 -0700,
Ramon Leon wrote:

>
> > Hi,
> >
> > as the developer of both the Dynamic Protocols and the
> > dev-images, I have included the firsts into the latter some
> > times ago. I found them quite useful at that time. However,
> > they slow down a lot the UI (which is already very slow). So,
> > my question is:
> >
> > Who wants me to continue including the dynamic protocols in
> > the dev-images?
> >
> >
> > Is there anyone using them?
> >
> > Bye
> >
> > --
> > Damien Cassou
>
> I vote remove them, first thing I do is disable them.  As long as they're
> available on the universe like everything else, for those who want to
> install them.
>
> Ramon Leon
> http://onsmalltalk.com
>

I agree. We should remove them if they're disabled by default.
DocumentationInformations for newcomers in Script Manager
(documentation->dynamicProtocols) is far enough (hoping developers
have a good RTFM practice) to be informed about their existence.    

--
Martial Boniou


Reply | Threaded
Open this post in threaded view
|

Re: Dynamic Protocols in the Dev-images

Jason Johnson-5
In reply to this post by Damien Cassou-3
On Jan 30, 2008 4:03 PM, Damien Cassou <[hidden email]> wrote:
>
> > Does the "traits" button is
> > System Browser comes from DynamicProtocols?
>
> Not at all.

Dumb question:  What *are* they used for in the dev image when turned on?

Reply | Threaded
Open this post in threaded view
|

Re: Dynamic Protocols in the Dev-images

Zulq Alam-2
In reply to this post by Damien Cassou-3
Hi Damien,

I like the dynamic protocols but don't use them because of the
performance impact.

I was curious and profiled it. It looks like the local send cache is not
being used as no interests are being declared.

In the code below I declare interest in everything. I'm not sure about
the ramifications of this.

When cached it is almost usable - perhaps with some tweaking this
excellent feature could be more widely used.

Regards,
Zulq.

protocols := DynamicProtocols allAvailableProtocols.
class := Object.

" clear caches "
protocols asArray collect: [:dp | dp invalidateCache].
LocalSends current initialize.

TimeProfileBrowser spyOn: [protocols
                collect: [:dpClass | dpClass on: aClass]
                thenSelect: [:dp | (dp getSelectorsFor: Object) notEmpty]].
" 9.69 seconds "

TimeProfileBrowser spyOn: [protocols
                collect: [:dpClass | dpClass on: aClass]
                thenSelect: [:dp | (dp getSelectorsFor: Object) notEmpty]].
" 6.44 seconds - improvement from caches in dynamic protocols themselves"

" declare interest in everything (maybe wrong) "
LocalSends current
        noteInterestOf: nil in: ProtoObject;
        noteInterestOf: nil inAll: ProtoObject allSubclasses.

" prime local send caches "
TimeProfileBrowser spyOn: [protocols
                collect: [:dpClass | dpClass on: aClass]
                thenSelect: [:dp | (dp getSelectorsFor: Object) notEmpty]].
"6.49 seconds "

" local sends cached "
TimeProfileBrowser spyOn: [protocols
                collect: [:dpClass | dpClass on: aClass]
                thenSelect: [:dp | (dp getSelectorsFor: Object) notEmpty]].
"0.69 seconds "


Damien Cassou wrote:

> Hi,
>
> as the developer of both the Dynamic Protocols and the dev-images, I
> have included the firsts into the latter some times ago. I found them
> quite useful at that time. However, they slow down a lot the UI (which
> is already very slow). So, my question is:
>
> Who wants me to continue including the dynamic protocols in the dev-images?
>
>
> Is there anyone using them?
>
> Bye
>


Reply | Threaded
Open this post in threaded view
|

RE: Dynamic Protocols in the Dev-images

Ramon Leon-5
In reply to this post by Jason Johnson-5
> Dumb question:  What *are* they used for in the dev image
> when turned on?

Dumb answer... Bringing Squeak to its knees and making you want to pull your
hair out!

Ramon Leon
http://onsmalltalk.com


Reply | Threaded
Open this post in threaded view
|

RE: Dynamic Protocols in the Dev-images

Ramon Leon-5
In reply to this post by Jason Johnson-5
> Dumb question:  What *are* they used for in the dev image
> when turned on?

Real answer, from memory, dynamically computed method protocols, just look
at the list of categories in your preferences under dynamic protocols.
Interesting idea, but Squeak's UI is slow enough as it is, it doesn't have
extra cycles to spare.

Ramon Leon
http://onsmalltalk.com


Reply | Threaded
Open this post in threaded view
|

Re: Dynamic Protocols in the Dev-images

Jason Johnson-5
Sorry, I didn't know what it did since I've never seen dynamic
protocols work, I always turn it off as the very first step of getting
a new image. :)

On Jan 30, 2008 6:38 PM, Ramon Leon <[hidden email]> wrote:

> > Dumb question:  What *are* they used for in the dev image
> > when turned on?
>
> Real answer, from memory, dynamically computed method protocols, just look
> at the list of categories in your preferences under dynamic protocols.
> Interesting idea, but Squeak's UI is slow enough as it is, it doesn't have
> extra cycles to spare.
>
>
> Ramon Leon
> http://onsmalltalk.com
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Dynamic Protocols in the Dev-images

Colin Putney
In reply to this post by Damien Cassou-3

On 30-Jan-08, at 6:08 AM, Damien Cassou wrote:

> Who wants me to continue including the dynamic protocols in the dev-
> images?

I'd say take them out. They're too slow to use by default, and very  
easy to install for those who want them.

Colin

Reply | Threaded
Open this post in threaded view
|

Re: Dynamic Protocols in the Dev-images

timrowledge
In reply to this post by Ramon Leon-5

On 30-Jan-08, at 9:38 AM, Ramon Leon wrote:

>> Dumb question:  What *are* they used for in the dev image
>> when turned on?
>
> Real answer, from memory, dynamically computed method protocols,  
> just look
> at the list of categories in your preferences under dynamic protocols.
> Interesting idea, but Squeak's UI is slow enough as it is, it  
> doesn't have
> extra cycles to spare.
Which is, if you think about it, a quite ridiculous state of affairs.  
Ten years ago with machines that struggled to achieve tinyBenchmark  
figures of 3 million bc/sec we were able to use the UI tolerably. My  
current machine manages 544 million bc/sec  - 180 times as fast - and  
yet the UI is if anything slower and less usable. And this is in a  
plain 3.9 image without the cpu-sucking dynamic protocols!

Insane.

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
"Bother," said Pooh, reading his bank statement from Barings.



Reply | Threaded
Open this post in threaded view
|

Re: Dynamic Protocols in the Dev-images

Daniel Vainsencher-3
In reply to this post by Zulq Alam-2
Hey Zulq - way to go with investigating the problem! :)


The point of declaring interests precisely is that it allows the system
to make the right space/time trade offs. Declaring interest in
everything is quite likely to create (memory) problems worse than those
it solves. Let me give a little background.


Squeak, like other Smalltalks and some other modern IDEs, has a Shared
Code Model, which is used for pretty much all editing and viewing. It is
pretty minimal, and well optimized for straight forward tasks, like
compact storage in memory, execution, editing, history viewing. Of
course, people want to do and see more that what is on the surface, in
the model - people want a real time lint tool, they want to see required
(unimplemented, but self sent) methods and so forth - these are Model
Extensions (MEs). And of course they want them to appear in real time,
at low latency, so the MEs need to be cached. But caching every
computation possible over all the code in the image is insane, so we
require tools to declare Explicit Interests - tell me in advance what
you might ask, then I can cache just that.


With regard to what Zulq did - I'm almost sure the tools are not
actually interested in Local Sends, per se. But what is happening is
that some of the dynamic categories use other MEs that use LocalSends
for their calculations. You see, we have Layered Extensions, because
sometimes its worth caching some intermediate results, not just end
results. So what you want to do is make sure that the tools declare
interest in what they actually ask about, and then make sure that each
Model Extension declares interest in any temporary values it uses, such
as Local Sends. In particular, a quick check shows that the dynamic
protocols do not express interests in RequiredSelectors - fixing this
would probably improve things significantly. In an old demo tool I wrote
that did this, RequiredSelectors were shown in real time.


What I summarized above is a pattern language for smart, efficient code
analysis tools, described in a pattern paper by Andrew Black and myself
[1]. I think it has many potential applications in Squeak. I would not
be surprised if it can be used to improve the responsiveness of the
existing tools - if someone is interested.


[1]  http://web.cecs.pdx.edu/~black/publications/ModelExtensions.pdf


Daniel


Zulq Alam wrote:

> Hi Damien,
>
> I like the dynamic protocols but don't use them because of the
> performance impact.
>
> I was curious and profiled it. It looks like the local send cache is
> not being used as no interests are being declared.
>
> In the code below I declare interest in everything. I'm not sure about
> the ramifications of this.
>
> When cached it is almost usable - perhaps with some tweaking this
> excellent feature could be more widely used.
>
> Regards,
> Zulq.
>
> protocols := DynamicProtocols allAvailableProtocols.
> class := Object.
>
> " clear caches "
> protocols asArray collect: [:dp | dp invalidateCache].
> LocalSends current initialize.
>
> TimeProfileBrowser spyOn: [protocols
>         collect: [:dpClass | dpClass on: aClass]
>         thenSelect: [:dp | (dp getSelectorsFor: Object) notEmpty]].
> " 9.69 seconds "
>
> TimeProfileBrowser spyOn: [protocols
>         collect: [:dpClass | dpClass on: aClass]
>         thenSelect: [:dp | (dp getSelectorsFor: Object) notEmpty]].
> " 6.44 seconds - improvement from caches in dynamic protocols themselves"
>
> " declare interest in everything (maybe wrong) "
> LocalSends current
>     noteInterestOf: nil in: ProtoObject;
>     noteInterestOf: nil inAll: ProtoObject allSubclasses.
>
> " prime local send caches "
> TimeProfileBrowser spyOn: [protocols
>         collect: [:dpClass | dpClass on: aClass]
>         thenSelect: [:dp | (dp getSelectorsFor: Object) notEmpty]].
> "6.49 seconds "
>
> " local sends cached "
> TimeProfileBrowser spyOn: [protocols
>         collect: [:dpClass | dpClass on: aClass]
>         thenSelect: [:dp | (dp getSelectorsFor: Object) notEmpty]].
> "0.69 seconds "
>
>
> Damien Cassou wrote:
>> Hi,
>>
>> as the developer of both the Dynamic Protocols and the dev-images, I
>> have included the firsts into the latter some times ago. I found them
>> quite useful at that time. However, they slow down a lot the UI (which
>> is already very slow). So, my question is:
>>
>> Who wants me to continue including the dynamic protocols in the
>> dev-images?
>>
>>
>> Is there anyone using them?
>>
>> Bye
>>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Dynamic Protocols in the Dev-images

Janko Mivšek
In reply to this post by Damien Cassou-3
Hi Damien,

Damien Cassou wrote:

> as the developer of both the Dynamic Protocols and the dev-images, I
> have included the firsts into the latter some times ago. I found them
> quite useful at that time. However, they slow down a lot the UI (which
> is already very slow). So, my question is:
>
> Who wants me to continue including the dynamic protocols in the dev-images?

If you can speed-up it somehow I would keep it, because it is valuable,
but not with a current speed. And I think you can make some
optimizations simply by preparing results in background while browser is
usable immediately.

Best regards
Janko



--
Janko Mivšek
AIDA/Web
Smalltalk Web Application Server
http://www.aidaweb.si

Reply | Threaded
Open this post in threaded view
|

Re: Dynamic Protocols in the Dev-images

Sophie424
In reply to this post by Daniel Vainsencher-3
"Daniel Vainsencher" <[hidden email]> wrote

> [1]  http://web.cecs.pdx.edu/~black/publications/ModelExtensions.pdf

Very nice paper, thank you.

Sophie




Reply | Threaded
Open this post in threaded view
|

Re: Model Extensions

Tapple Gao
In reply to this post by Daniel Vainsencher-3
> [1]  http://web.cecs.pdx.edu/~black/publications/ModelExtensions.pdf

On page 22 of this paper, you mentioned that the notification
mechanism should tell you the previous values of classes and
methods for the purpose of cache invalidation.

Goran and I made just these changes to SystemChangeNotifier in
Squeak as part of our DeltaStreams project; now, when classes,
methods, and class comments are changed, a notification with both
the old and new version is sent. It is completely
backward-compatible with the old SystemChangeNotifier protocol,
as far as we can tell:

http://map.squeak.org/packagebyname/deltastreamfixes

In the future (a month or two), I'm going to augment the
notifier again to support grouping of related changes, such as
all changes involved in loading a package, filing-in a
changeset, or loading a bug-fix, so that the enhanced logging
features of DeltaStreams can show system changes at more the
level the user made them; loading a package was a single-action
to them; the log should show it as a single action.

--
Matthew Fulmer -- http://mtfulmer.wordpress.com/
Help improve Squeak Documentation: http://wiki.squeak.org/squeak/808

12