[Enh][VM] primitiveApplyToFromTo for the heart of the enumeration of collections?

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

Re: [Enh][VM] primitiveApplyToFromTo for the heart of theenumeration of collections?

J J-6



>From: Bryce Kampjes <[hidden email]>
>Reply-To: The general-purpose Squeak developers
>list<[hidden email]>
>To: The general-purpose Squeak developers
>list<[hidden email]>
>Subject: Re: [Enh][VM] primitiveApplyToFromTo for the heart of
>theenumeration of collections?
>Date: Sun, 17 Sep 2006 11:12:36 +0100
>
>No-one has yet demonstrated that there is a practical performance
>problem with either our current occurencesOf: or even an
>implementation that used count:.
>
>Bryce
>

The issue that triggered this whole thing about the primative was the fact
that it was demonstrated that rolling you own count: using do: and a temp
variable was faster then using the library count:.

This is a problem, yes?  The library count: shouldn't be 3 times slower (I
think that was the number) then rolling your own.  Klaus has tried to come
up with a solution to this.  Do you have another solution to it?

Now I understand your objection about not wanting to add a speed
optimization that actually slows down the common case, but I don't see where
the message sends get slower.  Does that have something to do with another
primative being added?  Does every new primative add a speed hit?



Reply | Threaded
Open this post in threaded view
|

Re: [Enh][VM] primitiveApplyToFromTo for the heart of theenumeration of collections?

J J-6
In reply to this post by Bryce Kampjes



>From: Bryce Kampjes <[hidden email]>
>Reply-To: The general-purpose Squeak developers
>list<[hidden email]>
>To: The general-purpose Squeak developers
>list<[hidden email]>
>Subject: Re: [Enh][VM] primitiveApplyToFromTo for the heart of
>theenumeration of collections?
>Date: Sun, 17 Sep 2006 17:22:25 +0100
>
>Exupery is relevant if we're
>talking about Squeak's performance over the next few years. Exupery is
>Squeak's and Smalltalk's best current hope of beating both Strongtalk
>and Selfs pioneering work on high performance implementation's.
>
A JIT is certainly important.  Especially in deployment mode.  I'm glad it's
being worked on.

>Anthony Hannan's send performance work was rejected even though it
>did speed up sends and came with proper block closures. Proper block
>closures are something we really should have.
>

Why was this rejected?



Reply | Threaded
Open this post in threaded view
|

Re: [Enh][VM] primitiveApplyToFromTo for the heart of theenumeration of collections?

Bryce Kampjes
In reply to this post by J J-6
J J writes:
 > The issue that triggered this whole thing about the primative was the fact
 > that it was demonstrated that rolling you own count: using do: and a temp
 > variable was faster then using the library count:.
 >
 > This is a problem, yes?  The library count: shouldn't be 3 times slower (I
 > think that was the number) then rolling your own.  Klaus has tried to come
 > up with a solution to this.  Do you have another solution to it?

Exupery already optimises do: by a factor of 50%. At that point I
stopped because it was not providing any benefits for any of the large
benchmarks I'm tracking. I do this by optimising message send, return,
and byte code execution. My current implementation of value: is
possibly worse than the interpreters or equally as bad. Adding a fast
compiled value: to Exupery would be easy but there are no realistic
benchmarks that would benefit from it.

The library should also be readable. This is Smalltalk, we all read
the library code all the time. But I'm repeating myself. There is
a value judgement between readability and speed. We differ in I don't
feel speed is worth it at all costs.

Personally, I'd prefer a library that I can easily understand that is
fast enough for 99% of it's uses. That for 1% of cases, I need to use
a custom solution is an acceptable trade off for understandability.

I've spent many hours looking at Klaus's changes, I have not yet spent
enough time to be sure they are bug free. commonSend and return are a
messy part of the system. There is a lot of state tucked away in
globals that effects decision making. There are many infrequent cases
due to optimisations that are already there. When I talk about
maintainability issues I am talking about code that I am very familiar
with, have studied it both as code and in the debugger.

 > Now I understand your objection about not wanting to add a speed
 > optimization that actually slows down the common case, but I don't see where
 > the message sends get slower.  Does that have something to do with another
 > primative being added?  Does every new primative add a speed hit?

The speed hit comes from the code in commonSend and
commonReturn. Adding a primitive, only effects performance when it's
executed.


As yet no-one has demonstrated a single practical use of occurencesOf:
where the speed difference would matter. No one has shown any
realistic benchmarks where speeding up do: and friends would matter.

We should remove the optimisation to ifNotNil: that is buggy unless
someone can provide realistic benchmarks where it matters. I would be
surprised if such code was in any critical inner loop. Try explaining
when the compiled version is used and when the byte code inlined
version is used to someone new to Smalltalk. If only one or two
cases need to be inlined then still remove it.

At some point, we've got to value maintainability and simplicity
otherwise the system will die. The issue here is one of values,
values that matter for the survivability, reliability, and
maintainability of the system. I care more about the values here
than the specific change.

Speed is not the ultimate goal. Speed is neither necessary nor
sufficient for Squeak's success. Speed does help though.

I want a system that is easy to change. Changes like Klaus's will
make it harder for the next person to change it. Klaus's ability to
make that change is worth a slight loss of performance.

Bryce

Reply | Threaded
Open this post in threaded view
|

Re: [Enh][VM] primitiveApplyToFromTo for the heart of theenumeration of collections?

Klaus D. Witzel
On Sun, 17 Sep 2006 22:04:39 +0200, Bryce Kampjes wrote:

> J J writes:
>  > Now I understand your objection about not wanting to add a speed
>  > optimization that actually slows down the common case, but I don't  
> see where
>  > the message sends get slower.  Does that have something to do with  
> another
>  > primative being added?  Does every new primative add a speed hit?
>
> The speed hit comes from the code in commonSend and
> commonReturn. Adding a primitive, only effects performance when it's
> executed.

JJ, with "code in commonSend and commonReturn" the code which I added is  
meant (est. slow down was calculated 1% to 15%), not the unchanged code  
(slowdown 0%).

While I'm here I can report that slowdown of #commonSend is now back to  
where it was. Now #comonReturn wants my attention ;-)

/Klaus


Reply | Threaded
Open this post in threaded view
|

Re: [Enh][VM] primitiveApplyToFromTo for the heart of theenumeration of collections?

Bryce Kampjes
Klaus D. Witzel writes:
 > JJ, with "code in commonSend and commonReturn" the code which I added is  
 > meant (est. slow down was calculated 1% to 15%), not the unchanged code  
 > (slowdown 0%).

Be careful about relying on any single measure of performance these
days. I've removed pointless jumps and seen the code slow down. This
was with Exupery so I know that it wasn't compiler monkey business
that I was unaware of.

So don't fully trust either static analysis or any benchmark. There's
a few percentage points of statistical noise. Change something and
there will be a random effect on performance caused by CPU level
optimisations.

Several early RISCs made the mistake of assuming that the SPEC
benchmarks were big enough to rely on. That's one reason why they left
out byte accessing instructions. For SPEC, they were not worth the
cost but they are required for business apps. Hennessy and Patterson's
Computer Architecture, A Quantitative Approach is a good introduction
to thinking about optimisations. David Ungar's The Design and
Evaluation of a High Performance Smalltalk System is another.

Bryce

Reply | Threaded
Open this post in threaded view
|

Re: [Enh][VM] primitiveApplyToFromTo for the heart of theenumeration of collections?

stephane ducasse-2
In reply to this post by Bryce Kampjes
me too :)
I always have in mind the nice sentence of dan about the fact that  
someone alone could understand smalltalk

On 17 sept. 06, at 22:04, Bryce Kampjes wrote:

> Personally, I'd prefer a library that I can easily understand that is
> fast enough for 99% of it's uses. That for 1% of cases, I need to use
> a custom solution is an acceptable trade off for understandability.


Reply | Threaded
Open this post in threaded view
|

Squeak for the masses? [was: primitiveApplyToFromTo]

Klaus D. Witzel
Hi Stef,

on Mon, 18 Sep 2006 09:11:16 +0200, you wrote:
> me too :)
> I always have in mind the nice sentence of dan about the fact that  
> someone alone could understand smalltalk

Look into data centres where the big servers run applications or look into  
offices where thousands of workstations run applications.

If you can save them a significant portion of CPU time then you save them  
$$$ investment, and perhaps win a contract against your competitor.

Also, look into complex applications which can neither be created nor be  
maintained by a single person, or understood by a single person.

Why shouldn't Squeak become a #1 choice in such situations.

I doubt that application developers want to understand the internals of a  
VM or the internals of a library (Collections in our case here, libc as an  
example in other cases), perhaps their boss (the $$$ decision maker) also  
doesn't want that. I doubt because of long time experience.

Let's bring Squeak to the masses. Or, am I wrong with this? I run a  
commercial business and want to base my success on Squeak. Anyone out  
there telling me that I should not invest into Squeak, please let me know,  
in squeak-dev or off-list. Thank you.

Please don't misunderstand: I'm not asking that primitiveApplyToFromTo  
must be in each and every VM. Neither do I have something against the  
preferences of developers. But I want freedom for making decisions.

/Klaus

> On 17 sept. 06, at 22:04, Bryce Kampjes wrote:
>
>> Personally, I'd prefer a library that I can easily understand that is
>> fast enough for 99% of it's uses. That for 1% of cases, I need to use
>> a custom solution is an acceptable trade off for understandability.
>
>
>



Reply | Threaded
Open this post in threaded view
|

Re: Squeak for the masses? [was: primitiveApplyToFromTo]

stephane ducasse-2
Sure!
But I understand what Bryce concerns.
Now if we would start to really benchmark central part of squeak I'm  
sure that we would get some surprises.

Stef


On 18 sept. 06, at 11:17, Klaus D. Witzel wrote:

> Hi Stef,
>
> on Mon, 18 Sep 2006 09:11:16 +0200, you wrote:
>> me too :)
>> I always have in mind the nice sentence of dan about the fact that  
>> someone alone could understand smalltalk
>
> Look into data centres where the big servers run applications or  
> look into offices where thousands of workstations run applications.
>
> If you can save them a significant portion of CPU time then you  
> save them $$$ investment, and perhaps win a contract against your  
> competitor.
>
> Also, look into complex applications which can neither be created  
> nor be maintained by a single person, or understood by a single  
> person.
>
> Why shouldn't Squeak become a #1 choice in such situations.
>
> I doubt that application developers want to understand the  
> internals of a VM or the internals of a library (Collections in our  
> case here, libc as an example in other cases), perhaps their boss  
> (the $$$ decision maker) also doesn't want that. I doubt because of  
> long time experience.
>
> Let's bring Squeak to the masses. Or, am I wrong with this? I run a  
> commercial business and want to base my success on Squeak. Anyone  
> out there telling me that I should not invest into Squeak, please  
> let me know, in squeak-dev or off-list. Thank you.
>
> Please don't misunderstand: I'm not asking that  
> primitiveApplyToFromTo must be in each and every VM. Neither do I  
> have something against the preferences of developers. But I want  
> freedom for making decisions.
>
> /Klaus
>
>> On 17 sept. 06, at 22:04, Bryce Kampjes wrote:
>>
>>> Personally, I'd prefer a library that I can easily understand  
>>> that is
>>> fast enough for 99% of it's uses. That for 1% of cases, I need to  
>>> use
>>> a custom solution is an acceptable trade off for understandability.
>>
>>
>>
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Squeak for the masses? [was: primitiveApplyToFromTo]

Klaus D. Witzel
On Mon, 18 Sep 2006 11:48:01 +0200, stephane ducasse wrote:

> Sure!
> But I understand what Bryce concerns.

And neither the concerns of Bryce nor your's (someone alone could  
understand smalltalk) can be generalized. But thanks to Squeak, such  
different concerns can be addressed very conveniently :)

> Now if we would start to really benchmark central part of squeak I'm  
> sure that we would get some surprises.

What do you expect, are there areas which are important for your work to  
be benchmarked.

/Klaus

> Stef
>
>
> On 18 sept. 06, at 11:17, Klaus D. Witzel wrote:
>
>> Hi Stef,
>>
>> on Mon, 18 Sep 2006 09:11:16 +0200, you wrote:
>>> me too :)
>>> I always have in mind the nice sentence of dan about the fact that  
>>> someone alone could understand smalltalk
>>
>> Look into data centres where the big servers run applications or look  
>> into offices where thousands of workstations run applications.
>>
>> If you can save them a significant portion of CPU time then you save  
>> them $$$ investment, and perhaps win a contract against your competitor.
>>
>> Also, look into complex applications which can neither be created nor  
>> be maintained by a single person, or understood by a single person.
>>
>> Why shouldn't Squeak become a #1 choice in such situations.
>>
>> I doubt that application developers want to understand the internals of  
>> a VM or the internals of a library (Collections in our case here, libc  
>> as an example in other cases), perhaps their boss (the $$$ decision  
>> maker) also doesn't want that. I doubt because of long time experience.
>>
>> Let's bring Squeak to the masses. Or, am I wrong with this? I run a  
>> commercial business and want to base my success on Squeak. Anyone out  
>> there telling me that I should not invest into Squeak, please let me  
>> know, in squeak-dev or off-list. Thank you.
>>
>> Please don't misunderstand: I'm not asking that primitiveApplyToFromTo  
>> must be in each and every VM. Neither do I have something against the  
>> preferences of developers. But I want freedom for making decisions.
>>
>> /Klaus
>>
>>> On 17 sept. 06, at 22:04, Bryce Kampjes wrote:
>>>
>>>> Personally, I'd prefer a library that I can easily understand that is
>>>> fast enough for 99% of it's uses. That for 1% of cases, I need to use
>>>> a custom solution is an acceptable trade off for understandability.
>>>
>>>
>>>
>>
>>
>>
>
>
>



Reply | Threaded
Open this post in threaded view
|

Re: [Enh][VM] primitiveApplyToFromTo for the heart of theenumeration of collections?

Lex Spoon
In reply to this post by J J-6
> >Anthony Hannan's send performance work was rejected even though it
> >did speed up sends and came with proper block closures. Proper block
> >closures are something we really should have.
> >
>
> Why was this rejected?


I don't know about the send performance, but the closures rewrite in
general got stalled because nobody ever updated the debugger.  The
update was not completely trivial: the new closures sometimes miss
information about their surrounding scope.


Anyway, I'm sure the code is available online if someone wants to try
to finish this last missing piece.  Indeed, real closures would be
nice to have; these language feature should be what it looks like.

(Although, it's pretty impressive how little anyone cares in practice;
whenever you have complicated nesting, it's usually nicer anyway to
make explicit classes....)


-Lex



Reply | Threaded
Open this post in threaded view
|

Re: Squeak for the masses? [was: primitiveApplyToFromTo]

Ralph Johnson
In reply to this post by Klaus D. Witzel
On 9/18/06, Klaus D. Witzel <[hidden email]> wrote:

> Hi Stef,
>
> on Mon, 18 Sep 2006 09:11:16 +0200, you wrote:
> > me too :)
> > I always have in mind the nice sentence of dan about the fact that
> > someone alone could understand smalltalk
>
> Look into data centres where the big servers run applications or look into
> offices where thousands of workstations run applications.
>
> If you can save them a significant portion of CPU time then you save them
> $$$ investment, and perhaps win a contract against your competitor.

Scientific applications can be CPU bound, but most business
applications are not.  Usually they are limited by the network or the
database.  In a typical office with thousands of workstations, most of
them never are CPU bound, and the processors on average is 90% idle.

> Also, look into complex applications which can neither be created nor be
> maintained by a single person, or understood by a single person.
>
> Why shouldn't Squeak become a #1 choice in such situations.

Smalltalk in general, and Squeak in particular, is no better at very
large applications than other languages.  Its lack of modularity can
make it worse.  Where it shines is when it allows a system that would
otherwise need 50 people to be built with a small number.

There have been a number of Smalltalk projects with dozens, sometimes
hundreds, of people on them.  None have been successful.  On large
projects, politics and management issues overwhelm technical decisions
and the value of Smalltalk gets lost.  If you can keep the group of
developers small then the technical advantages of Smalltalk can
dominate.

-Ralph Johnson

Reply | Threaded
Open this post in threaded view
|

Re: Squeak for the masses? [was: primitiveApplyToFromTo]

Klaus D. Witzel
Hi Ralph,

thank your your comments!

On Mon, 18 Sep 2006 12:42:39 +0200, you wrote:

> On 9/18/06, Klaus D. Witzel <[hidden email]> wrote:
>> Hi Stef,
>>
>> on Mon, 18 Sep 2006 09:11:16 +0200, you wrote:
>> > me too :)
>> > I always have in mind the nice sentence of dan about the fact that
>> > someone alone could understand smalltalk
>>
>> Look into data centres where the big servers run applications or look  
>> into
>> offices where thousands of workstations run applications.
>>
>> If you can save them a significant portion of CPU time then you save  
>> them
>> $$$ investment, and perhaps win a contract against your competitor.
>
> Scientific applications can be CPU bound, but most business
> applications are not.  Usually they are limited by the network or the
> database.  In a typical office with thousands of workstations, most of
> them never are CPU bound, and the processors on average is 90% idle.

It makes a difference if your graphics / windows / etc open / get drawn /  
save / etc, at 50% or at 100%. Response time (perceived interruption of  
the user's workflow) is more critical for the average user than anything  
else (during an acceptance test: response time v.s. utility, what will  
make it).

I should have mentioned such earlier. But for the rest of it (incl. the  
below): O.K. that is what I hope for :)

Thanks again.

/Klaus

>> Also, look into complex applications which can neither be created nor be
>> maintained by a single person, or understood by a single person.
>>
>> Why shouldn't Squeak become a #1 choice in such situations.
>
> Smalltalk in general, and Squeak in particular, is no better at very
> large applications than other languages.  Its lack of modularity can
> make it worse.  Where it shines is when it allows a system that would
> otherwise need 50 people to be built with a small number.
>
> There have been a number of Smalltalk projects with dozens, sometimes
> hundreds, of people on them.  None have been successful.  On large
> projects, politics and management issues overwhelm technical decisions
> and the value of Smalltalk gets lost.  If you can keep the group of
> developers small then the technical advantages of Smalltalk can
> dominate.
>
> -Ralph Johnson
>
>



Reply | Threaded
Open this post in threaded view
|

RE: Squeak for the masses? [was: primitiveApplyToFromTo]

Ron Teitelbaum
In reply to this post by Klaus D. Witzel
> Let's bring Squeak to the masses. Or, am I wrong with this?  

No you are right here, but we need to get organized and support the
community that is needed to take over from the previous "owners" of squeak.

> I run a commercial business and want to base my success on Squeak.

[+1 big]

When do nominations for the foundation start!

Ron

P.S. Klaus have you looked at the StrongTalk VM yet?

> -----Original Message-----
> From: [hidden email] [mailto:squeak-dev-
> [hidden email]] On Behalf Of Klaus D. Witzel
> Sent: Monday, September 18, 2006 5:18 AM
> To: [hidden email]
> Subject: Squeak for the masses? [was: primitiveApplyToFromTo]
>
> Hi Stef,
>
> on Mon, 18 Sep 2006 09:11:16 +0200, you wrote:
> > me too :)
> > I always have in mind the nice sentence of dan about the fact that
> > someone alone could understand smalltalk
>
> Look into data centres where the big servers run applications or look into
> offices where thousands of workstations run applications.
>
> If you can save them a significant portion of CPU time then you save them
> $$$ investment, and perhaps win a contract against your competitor.
>
> Also, look into complex applications which can neither be created nor be
> maintained by a single person, or understood by a single person.
>
> Why shouldn't Squeak become a #1 choice in such situations.
>
> I doubt that application developers want to understand the internals of a
> VM or the internals of a library (Collections in our case here, libc as an
> example in other cases), perhaps their boss (the $$$ decision maker) also
> doesn't want that. I doubt because of long time experience.
>
> Let's bring Squeak to the masses. Or, am I wrong with this? I run a
> commercial business and want to base my success on Squeak. Anyone out
> there telling me that I should not invest into Squeak, please let me know,
> in squeak-dev or off-list. Thank you.
>
> Please don't misunderstand: I'm not asking that primitiveApplyToFromTo
> must be in each and every VM. Neither do I have something against the
> preferences of developers. But I want freedom for making decisions.
>
> /Klaus
>
> > On 17 sept. 06, at 22:04, Bryce Kampjes wrote:
> >
> >> Personally, I'd prefer a library that I can easily understand that is
> >> fast enough for 99% of it's uses. That for 1% of cases, I need to use
> >> a custom solution is an acceptable trade off for understandability.
> >
> >
> >
>
>



Reply | Threaded
Open this post in threaded view
|

RE: Squeak for the masses? [was: primitiveApplyToFromTo]

Ron Teitelbaum
In reply to this post by Ralph Johnson
>
> Smalltalk in general, and Squeak in particular, is no better at very
> large applications than other languages.  Its lack of modularity can
> make it worse.  Where it shines is when it allows a system that would
> otherwise need 50 people to be built with a small number.
>
> There have been a number of Smalltalk projects with dozens, sometimes
> hundreds, of people on them.  None have been successful.  On large
> projects, politics and management issues overwhelm technical decisions
> and the value of Smalltalk gets lost.  If you can keep the group of
> developers small then the technical advantages of Smalltalk can
> dominate.
>
> -Ralph Johnson

This is not my experience.  What I have noticed is that very large companies
that focus on Smalltalk alone do quite well.  They are able to build very
powerful systems with a large number of developers with no problem.  The
product they develop has created a definite advantage.  The problems that I
have seen is when political decisions and hype for changing to something
like C++, .net or Java fragments the development group into competing camps.
In almost every case that I've seen where Smalltalk was going to be replaced
with something like Java, the replacement has failed.  Many groups have
given up their Java efforts to focus again on Smalltalk, or have failed
outright.  

Ron Teitelbaum


Reply | Threaded
Open this post in threaded view
|

Re: Squeak for the masses? [was: primitiveApplyToFromTo]

Klaus D. Witzel
In reply to this post by Ron Teitelbaum
Hi Ron,

I've asked David Griswold who posts over in vm-dev about reusing Squeak's  
ObjectMemory, the answer was: rather not (because slangish, because  
squeakish). And earlier Craig asked him if they want the VM be written in  
Smalltalk, the answer was: too huge a project for now, but in the long  
term self-hosting and self-debugging would be great.

BTW the Strongtalk list is @
- http://tech.groups.yahoo.com/group/strongtalk/

This perhaps looks like a not so fast development project; also  
performance for them is critical due to startup and compilation pauses.  
But perhaps they will find acceptable material - resuable things - and  
also funds and hands with VM knowledge.

Time will show. Indeed, David wrote that their goal is producing a version  
of the Strongtalk VM for Squeak ...

/Klaus

On Mon, 18 Sep 2006 16:29:15 +0200, Ron wrote:

> Klaus wrote:
>> Let's bring Squeak to the masses. Or, am I wrong with this?
>
> No you are right here, but we need to get organized and support the
> community that is needed to take over from the previous "owners" of  
> squeak.
>
>> I run a commercial business and want to base my success on Squeak.
>
> [+1 big]
>
> When do nominations for the foundation start!
>
> Ron
>
> P.S. Klaus have you looked at the StrongTalk VM yet?


Reply | Threaded
Open this post in threaded view
|

Strongtalk VM for Squeak [was: Squeak for the masses? [was: primitiveApplyToFromTo]]

Ron Teitelbaum

Interesting questions.  I've been watching the Strongtalk group.  Does
either of these issues, reusing ObjectMemory, or having a smalltalk vm limit
in your opinion the benefits of the Strongtalk vm?  From Dan's comments and
from the apparent speed and packaging benefits I would think that we should
support a Strongtalk VM for squeak in what ever way they could provide it.  

If we accepted that the base VM is C++ then couldn't plugins still be slang,
(or the slang plugins still be supported by the base Strongtalk vm) or is
this too much for the squeak community to accept?

Ron

> From: Klaus D. Witzel
> Sent: Monday, September 18, 2006 11:41 AM

> Hi Ron,
>
> I've asked David Griswold who posts over in vm-dev about reusing Squeak's
> ObjectMemory, the answer was: rather not (because slangish, because
> squeakish). And earlier Craig asked him if they want the VM be written in
> Smalltalk, the answer was: too huge a project for now, but in the long
> term self-hosting and self-debugging would be great.
>
> BTW the Strongtalk list is @
> - http://tech.groups.yahoo.com/group/strongtalk/
>
> This perhaps looks like a not so fast development project; also
> performance for them is critical due to startup and compilation pauses.
> But perhaps they will find acceptable material - resuable things - and
> also funds and hands with VM knowledge.
>
> Time will show. Indeed, David wrote that their goal is producing a version
> of the Strongtalk VM for Squeak ...
>
> /Klaus
>
> On Mon, 18 Sep 2006 16:29:15 +0200, Ron wrote:
> > Klaus wrote:
> >> Let's bring Squeak to the masses. Or, am I wrong with this?
> >
> > No you are right here, but we need to get organized and support the
> > community that is needed to take over from the previous "owners" of
> > squeak.
> >
> >> I run a commercial business and want to base my success on Squeak.
> >
> > [+1 big]
> >
> > When do nominations for the foundation start!
> >
> > Ron
> >
> > P.S. Klaus have you looked at the StrongTalk VM yet?
>
>



Reply | Threaded
Open this post in threaded view
|

Re: Strongtalk VM for Squeak [was: Squeak for the masses? [was: primitiveApplyToFromTo]]

Klaus D. Witzel
On Mon, 18 Sep 2006 17:55:52 +0200, Ron wrote:

>
> Interesting questions.  I've been watching the Strongtalk group.  Does
> either of these issues, reusing ObjectMemory, or having a smalltalk vm  
> limit
> in your opinion the benefits of the Strongtalk vm?  From Dan's comments  
> and
> from the apparent speed and packaging benefits I would think that we  
> should
> support a Strongtalk VM for squeak in what ever way they could provide  
> it.

And the license.

> If we accepted that the base VM is C++ then couldn't plugins still be  
> slang,
> (or the slang plugins still be supported by the base Strongtalk vm) or is
> this too much for the squeak community to accept?

There will be clever hackers, moving sources back and forth between VM's,  
there always are clever hackers.

/Klaus

> Ron
>
>> From: Klaus D. Witzel
>> Sent: Monday, September 18, 2006 11:41 AM
>
>> Hi Ron,
>>
>> I've asked David Griswold who posts over in vm-dev about reusing  
>> Squeak's
>> ObjectMemory, the answer was: rather not (because slangish, because
>> squeakish). And earlier Craig asked him if they want the VM be written  
>> in
>> Smalltalk, the answer was: too huge a project for now, but in the long
>> term self-hosting and self-debugging would be great.
>>
>> BTW the Strongtalk list is @
>> - http://tech.groups.yahoo.com/group/strongtalk/
>>
>> This perhaps looks like a not so fast development project; also
>> performance for them is critical due to startup and compilation pauses.
>> But perhaps they will find acceptable material - resuable things - and
>> also funds and hands with VM knowledge.
>>
>> Time will show. Indeed, David wrote that their goal is producing a  
>> version
>> of the Strongtalk VM for Squeak ...
>>
>> /Klaus
>>
>> On Mon, 18 Sep 2006 16:29:15 +0200, Ron wrote:
>> > Klaus wrote:
>> >> Let's bring Squeak to the masses. Or, am I wrong with this?
>> >
>> > No you are right here, but we need to get organized and support the
>> > community that is needed to take over from the previous "owners" of
>> > squeak.
>> >
>> >> I run a commercial business and want to base my success on Squeak.
>> >
>> > [+1 big]
>> >
>> > When do nominations for the foundation start!
>> >
>> > Ron
>> >
>> > P.S. Klaus have you looked at the StrongTalk VM yet?
>>


Reply | Threaded
Open this post in threaded view
|

Re: Strongtalk VM for Squeak

Jecel Assumpcao Jr
In reply to this post by Ron Teitelbaum
Ron Teitelbaum wrote:
> If we accepted that the base VM is C++ then couldn't plugins still be slang,
> (or the slang plugins still be supported by the base Strongtalk vm) or is
> this too much for the squeak community to accept?

Note that when the Squeak project was started there was already an Open
Source (BSD license) Smalltalk VM written in C++. I am talking about
Self 4.0 hosting GNU Smalltalk, which at the time outperformed all
available VMs including the commercial ones. And this work had been done
by the group from which one of Squeak's creators had come from, so we
can be sure he was very familiar with it.

I think it would be true to say that Squeak was started as a reaction
against what you are suggesting. The goal was portability and not
performance, though projects such as Ian's Jitter were encouraged. I had
a very good experience using Jitter 2 back in the Squeak 2.3 days, for
example, but didn't care enough about performance to keep at it and
found myself using the regular VM just as often (and exclusively on
later Squeaks).

A more radical change to the Squeak VM was Anthony Hannan's VI4 work,
which gave us better performance and real closures. But though his new
bytecodes were cleaner, my impression is that he felt the gain wasn't
enough to justify losing the historical connection to the "blue book"
design. I always worry about the implementation itself as an educational
object (and not just the eToys layer) and so like to take these issues
into consideration. Recent versions of Little Smalltalk, for example,
are much improved over the original but now they no longer match the
book and are less valuable as a teaching tool. Anthony later created the
"closure compiler" which worked with unmodified VMs and my impression
was that this, unlike what Lex said, actually has been included in
official Squeak.

While I am very glad that Strongtalk has finally been open sourced (and
so has Klein, the "Self written in Self" VM which probably matches
Squeak's goals better) even if someone does adapt it to run Squeak I
wouldn't bet on it being officially adopted by the community. I think
Ian's current work has a far better chance.

-- Jecel

Reply | Threaded
Open this post in threaded view
|

RE: Strongtalk VM for Squeak

Ron Teitelbaum
Jecel,

Thanks for your response!

The performance improvements of a Strongtalk VM appear to be quite
substantial.  There are a number of other things that interest me, including
the compiling of code based on what code is used.  It would be difficult,
considering the people involved in the strongtalk project and given Dan's
comments, to dismiss this opportunity with, "been there, done that".  I
assume that the Strongtalk community will develop with or without Squeak,
the real question is should we as a community work closely with strongtalk
so that a strongtalking squeak vm is an option, even if it is not fully
adopted by the community?

I do understand the argument of compatibility vs. performance, but
performance should not be discounted, especially if the gains are
significant, if this community is ready to move into business application
development.  

Ron



> From: Jecel Assumpcao Jr
> Sent: Monday, September 18, 2006 2:10 PM
>
> Ron Teitelbaum wrote:
> > If we accepted that the base VM is C++ then couldn't plugins still be
> slang,
> > (or the slang plugins still be supported by the base Strongtalk vm) or
> is
> > this too much for the squeak community to accept?
>
> Note that when the Squeak project was started there was already an Open
> Source (BSD license) Smalltalk VM written in C++. I am talking about
> Self 4.0 hosting GNU Smalltalk, which at the time outperformed all
> available VMs including the commercial ones. And this work had been done
> by the group from which one of Squeak's creators had come from, so we
> can be sure he was very familiar with it.
>
> I think it would be true to say that Squeak was started as a reaction
> against what you are suggesting. The goal was portability and not
> performance, though projects such as Ian's Jitter were encouraged. I had
> a very good experience using Jitter 2 back in the Squeak 2.3 days, for
> example, but didn't care enough about performance to keep at it and
> found myself using the regular VM just as often (and exclusively on
> later Squeaks).
>
> A more radical change to the Squeak VM was Anthony Hannan's VI4 work,
> which gave us better performance and real closures. But though his new
> bytecodes were cleaner, my impression is that he felt the gain wasn't
> enough to justify losing the historical connection to the "blue book"
> design. I always worry about the implementation itself as an educational
> object (and not just the eToys layer) and so like to take these issues
> into consideration. Recent versions of Little Smalltalk, for example,
> are much improved over the original but now they no longer match the
> book and are less valuable as a teaching tool. Anthony later created the
> "closure compiler" which worked with unmodified VMs and my impression
> was that this, unlike what Lex said, actually has been included in
> official Squeak.
>
> While I am very glad that Strongtalk has finally been open sourced (and
> so has Klein, the "Self written in Self" VM which probably matches
> Squeak's goals better) even if someone does adapt it to run Squeak I
> wouldn't bet on it being officially adopted by the community. I think
> Ian's current work has a far better chance.
>
> -- Jecel
>



Reply | Threaded
Open this post in threaded view
|

Re: [Enh][VM] primitiveApplyToFromTo for the heart of theenumeration of collections?

J J-6
In reply to this post by Bryce Kampjes
>From: Bryce Kampjes <[hidden email]>
>Reply-To: The general-purpose Squeak developers
>list<[hidden email]>
>To: The general-purpose Squeak developers
>list<[hidden email]>
>Subject: Re: [Enh][VM] primitiveApplyToFromTo for the heart of
>theenumeration of collections?
>Date: Sun, 17 Sep 2006 21:04:39 +0100
>
>Exupery already optimises do: by a factor of 50%.

But I'm not talking about Exupery.  In fact I don't think anyone (else) is.

I do thing Exupery is a good thing.  I hope you can get it going so fast it
competes
with c++ and beats Java.  But even if it does, we will still want to develop
smalltalk
code in the interpreted environment, so speed counts there too.

>
>The library should also be readable. This is Smalltalk, we all read
>the library code all the time. But I'm repeating myself. There is
>a value judgement between readability and speed. We differ in I don't
>feel speed is worth it at all costs.
>

You and I don't differ on this.  I think readability is important.  In fact
that is what this whole
thing is about for me.  Right now people are writing algorythms directly
instead of using
the library, because the library code is 3 times slower.  That hurts
redability and
maintainability.

>As yet no-one has demonstrated a single practical use of occurencesOf:
>where the speed difference would matter. No one has shown any
>realistic benchmarks where speeding up do: and friends would matter.
>

I don't get it.  Right now occurencesOf: impliments a counter.  Instead of
using the
library message count: it duplicates the code.  Why?  Well maybe because
count: didn't
exist when it was made.  So we asked about just changing it, and then
Andreas (I think it was)
pointed out that that change would make the occurencesOf: method 3 times
slower.
This is a problem.  You agree right?

If Klaus' proposal is wrong ok.  But what is right.  There must be some way
to make count:
not have such a high cost of use compared to just reimplimenting it over and
over.



12345