[squeak-dev] new blog post plus closure bootstrap code

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

[squeak-dev] new blog post plus closure bootstrap code

Eliot Miranda-2
Hi All,

    I've made a significant step today in making available the first cut of my closure scheme.  There is a new blog post on www.mirandabanda.org/cogblog about the closure bytecodes which at the end includes a pointer to the bootstrap @ www.mirandabanda.org/files/Cog/Closures0808/Bootstrap/.  The bootstrap has been tested on internal Qwaq images, and on Croquet 1.0 and Squeak 3.9.  I'd love to hear of other ports, e.g. to 3.10 and to Spoon.  I'm interested in bug reports (I haven't yet tested eToys) and code reviews and tying up loose ends (for example I broke decompile with temp names and haven't fixed it).

Thanks and enjoy.


Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] new blog post plus closure bootstrap code

David T. Lewis
On Tue, Jul 22, 2008 at 06:14:51PM -0700, Eliot Miranda wrote:
> Hi All,
>     I've made a significant step today in making available the first cut of
> my closure scheme.  There is a new blog post on
> www.mirandabanda.org/cogblogabout the closure bytecodes which at the
> end includes a pointer to the
> bootstrap @ www.mirandabanda.org/files/Cog/Closures0808/Bootstrap/.

There is a lot to digest here. Very interesting reading, well written,
and thorough. Eliot, thank you for publishing this and for making it
available to all of us.

Dave


Reply | Threaded
Open this post in threaded view
|

[squeak-dev] Re: new blog post plus closure bootstrap code

Klaus D. Witzel
In reply to this post by Eliot Miranda-2
Hi Eliot,

on Wed, 23 Jul 2008 03:14:51 +0200, you wrote:

> Hi All,
>     I've made a significant step today in making available the first cut  
> of
> my closure scheme.  There is a new blog post on
> www.mirandabanda.org/cogblogabout the closure bytecodes which at the
> end includes a pointer to the
> bootstrap @ www.mirandabanda.org/files/Cog/Closures0808/Bootstrap/.  The
> bootstrap has been tested on internal Qwaq images, and on Croquet 1.0 and
> Squeak 3.9.

Terrific !

> I'd love to hear of other ports, e.g. to 3.10 and to Spoon.
>  I'm interested in bug reports (I haven't yet tested eToys) and code  
> reviews

I've parsed quite a bunch of the .cs files from your directory and found  
only *good* things (since I have not much to compare against when reading  
them with a web browser ;) like for example #methodClass during boot; also  
putting (s := myStream upToEnd) into Parser's loop on  
ReparseAfterSourceEditing; also the new bytecodes which look damned cool !  
:)

Wish I could compare more, against original methods and by using Smalltalk  
tools for example, what 3.9 plus VMMaker did you use (patches?). Can I  
prepare an .image by myself or do you intend to upload a prepared one?

/Klaus

> and tying up loose ends (for example I broke decompile with temp names  
> and
> haven't fixed it).
>
> Thanks and enjoy.



Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: new blog post plus closure bootstrap code

Eliot Miranda-2


On Wed, Jul 23, 2008 at 6:34 AM, Klaus D. Witzel <[hidden email]> wrote:
Hi Eliot,


on Wed, 23 Jul 2008 03:14:51 +0200, you wrote:

Hi All,
   I've made a significant step today in making available the first cut of
my closure scheme.  There is a new blog post on
www.mirandabanda.org/cogblogabout the closure bytecodes which at the

end includes a pointer to the
bootstrap @ www.mirandabanda.org/files/Cog/Closures0808/Bootstrap/.  The
bootstrap has been tested on internal Qwaq images, and on Croquet 1.0 and
Squeak 3.9.

Terrific !


I'd love to hear of other ports, e.g. to 3.10 and to Spoon.
 I'm interested in bug reports (I haven't yet tested eToys) and code reviews

I've parsed quite a bunch of the .cs files from your directory and found only *good* things (since I have not much to compare against when reading them with a web browser ;) like for example #methodClass during boot; also putting (s := myStream upToEnd) into Parser's loop on ReparseAfterSourceEditing; also the new bytecodes which look damned cool ! :)

Wish I could compare more, against original methods and by using Smalltalk tools for example, what 3.9 plus VMMaker did you use (patches?). Can I prepare an .image by myself or do you intend to upload a prepared one?

I didn't use a VMMaker in 3.9.  I simply used the modified Qwaq VM to run all bootstraps.  But I did run the bootstrap in Qwaq internal images, Croquet 1.0.18 and Squeak3.9-final-7067.

I think at this stage the code is too green for me to upload a prepared image.  I'd rather people built their own.  That way I can still fix and change details before things get too frozen.

One example is whether to use indexed inst vars to hold copied values in BlockClosure, or as I do currently to use an Array.  If using an inst var closure creation is slower but adding inst vars is easy.  If using indexed inst vars then either the VM makes it impossible to add inst vars (something up with which I shall not put) or the code for evaluation is slowed down because the VM needs to find the size of the closure and the number of named slots.  So there needs to be a performance evaluation done of each approach.

Another example is temp names for the debugger and for sourceless methods.  I'm not sure I've got the former right and I broke the latter.  I suspect that there is a middle ground that solves both of these.

So for now build your own images and contact me with comments, suggestions fixes etc, either directly or to the blog.  Eventually I'll have to grok some form of issue tracking (and suggestions are welcome) but for now I'll keep it cheap and cheerful.



/Klaus


and tying up loose ends (for example I broke decompile with temp names and
haven't fixed it).

Thanks and enjoy.






Reply | Threaded
Open this post in threaded view
|

[squeak-dev] Re: new blog post plus closure bootstrap code

Klaus D. Witzel
On Wed, 23 Jul 2008 17:14:38 +0200, Eliot Miranda wrote:

> On Wed, Jul 23, 2008 at 6:34 AM, Klaus D. Witzel wrote:
...
>> ... example, what 3.9 plus VMMaker did you use (patches?). Can I
>> prepare an .image by myself or do you intend to upload a prepared one?
>
> I didn't use a VMMaker in 3.9.  I simply used the modified Qwaq VM to run
> all bootstraps.

Hm, then my question should have been: is this modified VM available for  
the win32's?

> But I did run the bootstrap in Qwaq internal images,
> Croquet 1.0.18 and Squeak3.9-final-7067.
>
> I think at this stage the code is too green for me to upload a prepared
> image.  I'd rather people built their own.  That way I can still fix and
> change details before things get too frozen.

Okay. I was reflecting mainly the VM source code changes here. I'll skip  
them.

> One example is whether to use indexed inst vars to hold copied values in
> BlockClosure, or as I do currently to use an Array.  If using an inst var
> closure creation is slower but adding inst vars is easy.

Since there where 1-2 questions during recent years, for adding instVars  
to some subclass of ContextPart, why not?

> If using indexed
> inst vars then either the VM makes it impossible to add inst vars  
> (something
> up with which I shall not put) or the code for evaluation is slowed down
> because the VM needs to find the size of the closure and the number of  
> named
> slots.  So there needs to be a performance evaluation done of each  
> approach.

Performance of loading the array oop from its slot v.s. computing # of  
named slots? How about just incrementing stackPointer for allocating the  
closure's slots (as is done for method temps) when the BlockClosure is  
created. Of course this then needs a base value (like initial IP has).

> Another example is temp names for the debugger and for sourceless  
> methods.
>  I'm not sure I've got the former right and I broke the latter.  I  
> suspect
> that there is a middle ground that solves both of these.

This was also a problem for the current Decompiler (IIRC Stef posted such  
an example long time ago).

> So for now build your own images and contact me with comments,  
> suggestions
> fixes etc, either directly or to the blog.

Will see what is possible by using 3.8 as base (most likely not before  
Saturday).

> Eventually I'll have to grok
> some form of issue tracking (and suggestions are welcome) but for now  
> I'll keep it cheap and cheerful.
>
>>
>> /Klaus
>>
>>  and tying up loose ends (for example I broke decompile with temp names  
>> and
>>> haven't fixed it).
>>>
>>> Thanks and enjoy.
>>>
>>


Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: new blog post plus closure bootstrap code

Eliot Miranda-2


On Wed, Jul 23, 2008 at 10:57 AM, Klaus D. Witzel <[hidden email]> wrote:
On Wed, 23 Jul 2008 17:14:38 +0200, Eliot Miranda wrote:

On Wed, Jul 23, 2008 at 6:34 AM, Klaus D. Witzel wrote:
...
... example, what 3.9 plus VMMaker did you use (patches?). Can I

prepare an .image by myself or do you intend to upload a prepared one?

I didn't use a VMMaker in 3.9.  I simply used the modified Qwaq VM to run
all bootstraps.

Hm, then my question should have been: is this modified VM available for the win32's?

No VMs are available.  Right now you have to roll your own.  I don't have the time or expertise to provide an adequate sampling of VMs.  I don't even have a clear picture of what different VMs are out there.  Note that Qwaq's VM contains properietary code, so I cant simply make that available.  So take your own VMMaker package or download one, apply the changeset and spit out your own.  I guess we could try to get it tother to produce a 3.9 VM for the three x86 platforms, Mac OS X, Win32 & Intel Linux.  But I'm not going to do this anytime soon.  I'm not an expert in building and configuring Squeak VMs for general consumption.  I'd rather leave that to the likes of Tim, John, Andreas and Ian.  Noblese oblige ;)
 

But I did run the bootstrap in Qwaq internal images,
Croquet 1.0.18 and Squeak3.9-final-7067.

I think at this stage the code is too green for me to upload a prepared
image.  I'd rather people built their own.  That way I can still fix and
change details before things get too frozen.

Okay. I was reflecting mainly the VM source code changes here. I'll skip them.


One example is whether to use indexed inst vars to hold copied values in
BlockClosure, or as I do currently to use an Array.  If using an inst var
closure creation is slower but adding inst vars is easy.

Since there where 1-2 questions during recent years, for adding instVars to some subclass of ContextPart, why not?


If using indexed
inst vars then either the VM makes it impossible to add inst vars (something
up with which I shall not put) or the code for evaluation is slowed down
because the VM needs to find the size of the closure and the number of named
slots.  So there needs to be a performance evaluation done of each approach.

Performance of loading the array oop from its slot v.s. computing # of named slots? How about just incrementing stackPointer for allocating the closure's slots (as is done for method temps) when the BlockClosure is created. Of course this then needs a base value (like initial IP has).


Another example is temp names for the debugger and for sourceless methods.
 I'm not sure I've got the former right and I broke the latter.  I suspect
that there is a middle ground that solves both of these.

This was also a problem for the current Decompiler (IIRC Stef posted such an example long time ago).


So for now build your own images and contact me with comments, suggestions
fixes etc, either directly or to the blog.

Will see what is possible by using 3.8 as base (most likely not before Saturday).


Eventually I'll have to grok
some form of issue tracking (and suggestions are welcome) but for now I'll keep it cheap and cheerful.


/Klaus

 and tying up loose ends (for example I broke decompile with temp names and
haven't fixed it).

Thanks and enjoy.







Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: new blog post plus closure bootstrap code

Igor Stasenko
Good news Elliot! To what i see, changes you made are not too hard to
merge with Hydra changes. :)
Too bad, i had little time to work with Hydra for last two weeks.

There are little news, except that Hydra able to run Qwaq Forums on
win32, and it does it quite stable.

Yesterday i started writing a CodeGenerator changes overview, i think
i'll finish it tomorrow.

I'm also planned to release an update of Hydra sources and VMMaker
package.. but i postponing release day by day.. because i'm little
nervous, can't really tell the reason..
Maybe because, if these changes, after some evaluation show that VM is
quite stable, this will mean declaring a Hydra VM entering a Beta
stage (on win32 platform only for now).  :)


--
Best regards,
Igor Stasenko AKA sig.

Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: new blog post plus closure bootstrap code

Eliot Miranda-2


On Wed, Jul 23, 2008 at 12:38 PM, Igor Stasenko <[hidden email]> wrote:
Good news Elliot! To what i see, changes you made are not too hard to
merge with Hydra changes. :)

Good.  I would be very surprised if I did anything incompatible.  I want to change as little as possible only to enable closures and a context-to-stack mapping VM.  I would doubt that either my Stack VM or a JIT that derives from it would have significant conflicts with Hydra and that these would be resolvable quite easily.  You are making VMs play together I'm merely speeding up the execution core.


Too bad, i had little time to work with Hydra for last two weeks.

There are little news, except that Hydra able to run Qwaq Forums on
win32, and it does it quite stable.

Excellent.  The StackVM is nearly able to run forums (it at least starts up).  I'm taking a couple of days away form it to finish some blog posts on closures.
 
Yesterday i started writing a CodeGenerator changes overview, i think
i'll finish it tomorrow.

I'm also planned to release an update of Hydra sources and VMMaker
package.. but i postponing release day by day.. because i'm little
nervous, can't really tell the reason..
Maybe because, if these changes, after some evaluation show that VM is
quite stable, this will mean declaring a Hydra VM entering a Beta
stage (on win32 platform only for now).  :)

I think you should wait until after ESUG.  We should meet at ESUG, show each other our modifications and then publish a merge.  What do you think?



Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: new blog post plus closure bootstrap code

johnmci
In reply to this post by Eliot Miranda-2

On Jul 23, 2008, at 8:24 PM, Eliot Miranda wrote:

>
>
> On Wed, Jul 23, 2008 at 10:57 AM, Klaus D. Witzel <[hidden email]
> > wrote:
> On Wed, 23 Jul 2008 17:14:38 +0200, Eliot Miranda wrote:
>
> On Wed, Jul 23, 2008 at 6:34 AM, Klaus D. Witzel wrote:
> ...
> ... example, what 3.9 plus VMMaker did you use (patches?). Can I
>
> prepare an .image by myself or do you intend to upload a prepared one?
>
> I didn't use a VMMaker in 3.9.  I simply used the modified Qwaq VM  
> to run
> all bootstraps.
>
> Hm, then my question should have been: is this modified VM available  
> for the win32's?
>
> No VMs are available.  Right now you have to roll your own.  I don't  
> have the time or expertise to provide an adequate sampling of VMs.  
> I don't even have a clear picture of what different VMs are out  
> there.  Note that Qwaq's VM contains properietary code, so I cant  
> simply make that available.  So take your own VMMaker package or  
> download one, apply the changeset and spit out your own.  I guess we  
> could try to get it tother to produce a 3.9 VM for the three x86  
> platforms, Mac OS X, Win32 & Intel Linux.  But I'm not going to do  
> this anytime soon.  I'm not an expert in building and configuring  
> Squeak VMs for general consumption.  I'd rather leave that to the  
> likes of Tim, John, Andreas and Ian.  Noblese oblige ;)



I'll try to make a build of a macintosh version sometime early next  
week.

--
=
=
=
========================================================================
John M. McIntosh <[hidden email]>
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
=
=
=
========================================================================