Hello guys, I finally success (with the help of Igor) to trace and create a new Smalltalk kernel based on Pharo. The new born weight 2.2Mb and includes 230 classes ;) You can try it here: Gofer new squeaksource: 'PharoTaskForces'; package: 'SystemTracing'; load. Gofer new squeaksource: 'Seed'; package: 'Seed-HazelBuilder'; load. HazelTracer2 writeImage: 'hazel.image'. If you have an error in Point>>#printOn: , you can use this fix I want to thank Igor again, because he helps me a lot :) Ben
Hi Ben, I tried, and it works. But what can I do then? When I run your image (by just double clicking on it), I have a sound without nothing appearing. Do you have some more information about Hazel? What can I do with the image? How can I use it? Cheers, Alexandre On 4 Mar 2011, at 09:51, Benjamin wrote:
Hello guys,
I finally success (with the help of Igor) to trace and create a new Smalltalk kernel based on Pharo. The new born weight 2.2Mb and includes 230 classes ;)
You can try it here:
Gofer new squeaksource: 'PharoTaskForces'; package: 'SystemTracing'; load.
Gofer new squeaksource: 'Seed'; package: 'Seed-HazelBuilder'; load.
HazelTracer2 writeImage: 'hazel.image'.
If you have an error in Point>>#printOn: , you can use this fix <FixPointPrintOn.1.cs>
I want to thank Igor again, because he helps me a lot :)
Ben
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
For now, it just beeping to prove that the image is living :) For now, there is no interaction because the VM should have new primitives to provides textual interactivity. But if you want to play, you can change the method HazelTracer2>>#freshProcess Thanks for your feedback, Ben On Mar 4, 2011, at 1:57 PM, Alexandre Bergel wrote:
Hi Ben,
I tried, and it works. But what can I do then? When I run your image (by just double clicking on it), I have a sound without nothing appearing. Do you have some more information about Hazel? What can I do with the image? How can I use it?
Cheers, Alexandre
On 4 Mar 2011, at 09:51, Benjamin wrote:
Hello guys,
I finally success (with the help of Igor) to trace and create a new Smalltalk kernel based on Pharo. The new born weight 2.2Mb and includes 230 classes ;)
You can try it here:
Gofer new squeaksource: 'PharoTaskForces'; package: 'SystemTracing'; load.
Gofer new squeaksource: 'Seed'; package: 'Seed-HazelBuilder'; load.
HazelTracer2 writeImage: 'hazel.image'.
If you have an error in Point>>#printOn: , you can use this fix <FixPointPrintOn.1.cs>
I want to thank Igor again, because he helps me a lot :)
Ben
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
For now, there is no interaction because the VM should have new primitives to provides textual interactivity. But if you want to play, you can change the method HazelTracer2>>#freshProcess
This is cool! One could imagine to have a read eval loop here. Alexandre
Thanks for your feedback,
Ben
On Mar 4, 2011, at 1:57 PM, Alexandre Bergel wrote:
Hi Ben,
I tried, and it works. But what can I do then? When I run your image (by just double clicking on it), I have a sound without nothing appearing. Do you have some more information about Hazel? What can I do with the image? How can I use it?
Cheers, Alexandre
On 4 Mar 2011, at 09:51, Benjamin wrote:
Hello guys,
I finally success (with the help of Igor) to trace and create a new Smalltalk kernel based on Pharo. The new born weight 2.2Mb and includes 230 classes ;)
You can try it here:
Gofer new squeaksource: 'PharoTaskForces'; package: 'SystemTracing'; load.
Gofer new squeaksource: 'Seed'; package: 'Seed-HazelBuilder'; load.
HazelTracer2 writeImage: 'hazel.image'.
If you have an error in Point>>#printOn: , you can use this fix <FixPointPrintOn.1.cs>
I want to thank Igor again, because he helps me a lot :)
Ben
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi, with some ugly hacks i tried to run InterpreterSimulator, I hope it will help you. Try this: Gofer new squeaksource: 'VMMaker'; package: 'VMMaker'; load. (skip warnings) Load patches. Regenerate image HazelTracer2 writeImage: 'hazel.image'. Open Transcript and run the simulator: (InterpreterSimulator new openOn: 'hazel.image') test for freshProcess with the code 4 factorial. [true] whileTrue: [Beeper primitiveBeep]. the is the result: 16r00022330 BlockClosure>>#newProcess 16r0023F7B0 HazelMissingVariable>>#doesNotUnderstand: 16r0023F80C Integer>>#factorial 16r0023F868 Integer>>#factorial 16r0023F8C4 Integer>>#factorial 16r0023F920 Integer>>#factorial 16r0023F97C Integer>>#factorial 16r0023F920 Integer>>#factorial 16r0023F8C4 Integer>>#factorial 16r0023F868 Integer>>#factorial 16r0023F80C Integer>>#factorial 16r0023F7B0 HazelMissingVariable>>#doesNotUnderstand:BEEP BEEP BEEP BEEP ... This shows how much we need working InterpreterSimulator for current images :-) It works quite long for Pharo-Kernel too and on Pharo-Core it interprets a few methods as well. Cheers, -- Pavel On Fri, Mar 4, 2011 at 2:07 PM, Benjamin <benjamin.vanryseghem.pharo@gmail.com> wrote:
For now, it just beeping to prove that the image is living :)
For now, there is no interaction because the VM should have new primitives to provides textual interactivity. But if you want to play, you can change the method HazelTracer2>>#freshProcess
Thanks for your feedback,
Ben
On Mar 4, 2011, at 1:57 PM, Alexandre Bergel wrote:
Hi Ben,
I tried, and it works. But what can I do then? When I run your image (by just double clicking on it), I have a sound without nothing appearing. Do you have some more information about Hazel? What can I do with the image? How can I use it?
Cheers, Alexandre
On 4 Mar 2011, at 09:51, Benjamin wrote:
Hello guys,
I finally success (with the help of Igor) to trace and create a new Smalltalk kernel based on Pharo. The new born weight 2.2Mb and includes 230 classes ;)
You can try it here:
Gofer new    squeaksource: 'PharoTaskForces';    package: 'SystemTracing';    load.
Gofer new    squeaksource: 'Seed';    package: 'Seed-HazelBuilder';    load.
HazelTracer2 writeImage: 'hazel.image'.
If you have an error in Point>>#printOn: , you can use this fix <FixPointPrintOn.1.cs>
I want to thank Igor again, because he helps me a lot :)
Ben
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel  http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Great! does it have the same code base as the current Pharo-Kernel? Cheers, -- Pavel On Fri, Mar 4, 2011 at 1:51 PM, Benjamin <benjamin.vanryseghem.pharo@gmail.com> wrote:
Hello guys,
I finally success (with the help of Igor) to trace and create a new Smalltalk kernel based on Pharo. The new born weight 2.2Mb and includes 230 classes ;)
You can try it here:
Gofer new     squeaksource: 'PharoTaskForces';     package: 'SystemTracing';     load.
Gofer new     squeaksource: 'Seed';     package: 'Seed-HazelBuilder';     load.
HazelTracer2 writeImage: 'hazel.image'.
If you have an error in Point>>#printOn: , you can use this fix
I want to thank Igor again, because he helps me a lot :)
Ben
yes!!! The idea is that we have no a process where we can produce a core and in parallel continue to improve it. We should integrate all the seed bug entries and move on :) Great day today. I'm happy Stef On Mar 4, 2011, at 2:23 PM, Pavel Krivanek wrote:
Great!
does it have the same code base as the current Pharo-Kernel?
Cheers, -- Pavel
On Fri, Mar 4, 2011 at 1:51 PM, Benjamin <benjamin.vanryseghem.pharo@gmail.com> wrote:
Hello guys,
I finally success (with the help of Igor) to trace and create a new Smalltalk kernel based on Pharo. The new born weight 2.2Mb and includes 230 classes ;)
You can try it here:
Gofer new squeaksource: 'PharoTaskForces'; package: 'SystemTracing'; load.
Gofer new squeaksource: 'Seed'; package: 'Seed-HazelBuilder'; load.
HazelTracer2 writeImage: 'hazel.image'.
If you have an error in Point>>#printOn: , you can use this fix
I want to thank Igor again, because he helps me a lot :)
Ben
Hi Ben, On Fri, Mar 4, 2011 at 4:51 AM, Benjamin < benjamin.vanryseghem.pharo@gmail.com> wrote:
Hello guys,
I finally success (with the help of Igor) to trace and create a new Smalltalk kernel based on Pharo. The new born weight 2.2Mb and includes 230 classes ;)
Woot!!!!! Is this still a tracer or does it create a new kernel from source? If it's still a tracer when do you think you'll have a creator and what are you calling it? great news thanks Eliot
You can try it here:
Gofer new squeaksource: 'PharoTaskForces'; package: 'SystemTracing'; load.
Gofer new squeaksource: 'Seed'; package: 'Seed-HazelBuilder'; load.
HazelTracer2 writeImage: 'hazel.image'.
If you have an error in Point>>#printOn: , you can use this fix
I want to thank Igor again, because he helps me a lot :)
Ben
On Mar 4, 2011, at 4:38 PM, Eliot Miranda wrote:
Hi Ben,
On Fri, Mar 4, 2011 at 4:51 AM, Benjamin <benjamin.vanryseghem.pharo@gmail.com> wrote: Hello guys,
I finally success (with the help of Igor) to trace and create a new Smalltalk kernel based on Pharo. The new born weight 2.2Mb and includes 230 classes ;)
Woot!!!!! Is this still a tracer or does it create a new kernel from source?
It's a tracer that uses a list of classes (your kernel) to serialize a new image. One of the planned step is to use a minimal image and try to recompile code from source :)
If it's still a tracer when do you think you'll have a creator and what are you calling it?
I do not understand your question :( Ben ;)
great news thanks Eliot
You can try it here:
Gofer new squeaksource: 'PharoTaskForces'; package: 'SystemTracing'; load.
Gofer new squeaksource: 'Seed'; package: 'Seed-HazelBuilder'; load.
HazelTracer2 writeImage: 'hazel.image'.
If you have an error in Point>>#printOn: , you can use this fix
I want to thank Igor again, because he helps me a lot :)
Ben
On Fri, Mar 4, 2011 at 8:07 AM, Benjamin < benjamin.vanryseghem.pharo@gmail.com> wrote:
On Mar 4, 2011, at 4:38 PM, Eliot Miranda wrote:
Hi Ben,
On Fri, Mar 4, 2011 at 4:51 AM, Benjamin < benjamin.vanryseghem.pharo@gmail.com> wrote:
Hello guys,
I finally success (with the help of Igor) to trace and create a new Smalltalk kernel based on Pharo. The new born weight 2.2Mb and includes 230 classes ;)
Woot!!!!! Is this still a tracer or does it create a new kernel from source?
It's a tracer that uses a list of classes (your kernel) to serialize a new image.
One of the planned step is to use a minimal image and try to recompile code from source :)
If it's still a tracer when do you think you'll have a creator and what are you calling it?
I do not understand your question :(
I mean what are your plans regarding recompiling from source. What's the name of this step and when are you planning to start work on it? It's the step I'm really waiting for :) best, Eliot
Ben ;)
great news thanks Eliot
You can try it here:
Gofer new squeaksource: 'PharoTaskForces'; package: 'SystemTracing'; load.
Gofer new squeaksource: 'Seed'; package: 'Seed-HazelBuilder'; load.
HazelTracer2 writeImage: 'hazel.image'.
If you have an error in Point>>#printOn: , you can use this fix
I want to thank Igor again, because he helps me a lot :)
Ben
If it's still a tracer when do you think you'll have a creator and what are you calling it?
I do not understand your question :(
I mean what are your plans regarding recompiling from source. What's the name of this step and when are you planning to start work on it? It's the step I'm really waiting for :)
We do not know. We should continue to clean the system and the problem with source bootstrapping is that this is static in the sense that until the moment where we get a usable system we will have to trace changes in the kernel and push them back in the source bootstrap. So we want it too :) but I think that there is also a space for generating specific image based on dynamic collection. May be this one will be pineKernel :) http://uktv.co.uk/food/ingredient/aid/503745 "pignon" Stef
Woot!!!!! Is this still a tracer or does it create a new kernel from source? If it's still a tracer when do you think you'll have a creator and what are you calling it?
From source may be a way to go but only for the smallest core. I would like to play with a source bootstrap. For now we use a tracer and we should learn also how to build dynamically cores (like aljandro nurturing)
Stef
On Sat, Mar 5, 2011 at 12:12 AM, Stéphane Ducasse <stephane.ducasse@inria.fr
wrote:
Woot!!!!! Is this still a tracer or does it create a new kernel from source? If it's still a tracer when do you think you'll have a creator and what are you calling it?
From source may be a way to go but only for the smallest core.
Of course. From source one produces the smallest thing that can bring up the rest of the system. IMO, collections, numbers, compiler, files & a stdi/o read-eval-print loop. But form source is /vital/ to be able to produce a new object representation and that's absolutely necessary to improve performance. Using the tracer makes things like changing the bytecode set or replacing characters with immediate characters more difficult. There's also value in having a declarative definition of the core system.
I would like to play with a source bootstrap. For now we use a tracer and we should learn also how to build dynamically cores (like aljandro nurturing)
Stef
On Mar 5, 2011, at 5:15 PM, Eliot Miranda wrote:
On Sat, Mar 5, 2011 at 12:12 AM, Stéphane Ducasse <stephane.ducasse@inria.fr> wrote:
Woot!!!!! Is this still a tracer or does it create a new kernel from source? If it's still a tracer when do you think you'll have a creator and what are you calling it?
From source may be a way to go but only for the smallest core.
Of course. From source one produces the smallest thing that can bring up the rest of the system. IMO, collections, numbers, compiler, files & a stdi/o read-eval-print loop.
But form source is /vital/ to be able to produce a new object representation and that's absolutely necessary to improve performance. Using the tracer makes things like changing the bytecode set or replacing characters with immediate characters more difficult. There's also value in having a declarative definition of the core system.
Yes. now our problem is not really to have a source code bootstrap for a smalltalk. Gwenael did that in 3 days for his smalltalk but he was controlling all the details (all his object have named and variable size) and only one kind. With Pharo we are reverse engineering format and other hardcoded knowledge with bitAnd: and bitshift: when it would have been so much simpler to have better names. So we will go there but first we should extract the knowledge from the mud. Stef
I would like to play with a source bootstrap. For now we use a tracer and we should learn also how to build dynamically cores (like aljandro nurturing)
Stef
COOOOL And I missed the birth, shit! Monday you have to tell me what you did to fix the last meters of the run. I see that it was boring to write slides :))) Stef On Mar 4, 2011, at 1:51 PM, Benjamin wrote:
Hello guys,
I finally success (with the help of Igor) to trace and create a new Smalltalk kernel based on Pharo. The new born weight 2.2Mb and includes 230 classes ;)
You can try it here:
Gofer new squeaksource: 'PharoTaskForces'; package: 'SystemTracing'; load.
Gofer new squeaksource: 'Seed'; package: 'Seed-HazelBuilder'; load.
HazelTracer2 writeImage: 'hazel.image'.
If you have an error in Point>>#printOn: , you can use this fix <FixPointPrintOn.1.cs>
I want to thank Igor again, because he helps me a lot :)
Ben
On Fri, 04 Mar 2011 13:51:46 +0100, Benjamin wrote:
I finally success (with the help of Igor) to trace and create a new Smalltalk kernel based on Pharo. The new born weight 2.2Mb and includes 230 classes ;)
Your image helps me a lot. I'm trying to get the Squeak VM compiling with Adobe Alchemy. Alchemy is a C compiler targeting the flash VM. My initial approach is to stub about all entry points expect for ioBeep() which prints a debug message. But I had problems loading a normal image. I think it's just too big for flash to handle. In any case this kernel image worked wonderfully! Thanks!
Your image helps me a lot.
I'm trying to get the Squeak VM compiling with Adobe Alchemy.
tell us more :)
Alchemy is a C compiler targeting the flash VM.
? the flash use bytecode? why does it need a C compiler?
My initial approach is to stub about all entry points expect for ioBeep() which prints a debug message. But I had problems loading a normal image. I think it's just too big for flash to handle. In any case this kernel image worked wonderfully!
Tell us more :) Stef
Thanks!
Your image helps me a lot.
I'm trying to get the Squeak VM compiling with Adobe Alchemy.
tell us more :)
I'm exploring ways to use Smalltalk inside a web page. There are already few interesting Javascript converters and Smalltalk inspired projects like the Clamato and the Lively Kernel. But it'd be nice to run unchanged code from Pharo or Squeak directly. The simplest way to bring Pharo on the web would be to run the existing VM inside a web page. The Squeak plug-in does that already but good luck getting anyone to install it. There are at least two solutions aiming to bring native code to the web without installing plug-ins - Google Native Client provides a sandboxed environment for x86 code - Alchemy (a research project at Adobe) compiles C into the bytecode language interpreted by Flash. Since Flash seems to have wider adoption than Native Client I'm doing a little experiment with it. I just took the VMMaker generated C code for the Squeak VM and passed it through the Alchemy compiler to get something that runs on top of the Flash plug-in. It's too soon to tell if this kind of nested VM is really usable. Performance will undoubtedly be an issue but I can at least run the Hazel image and have it beep in a loop which is encouraging. It seems Flash also supports some dynamic class loading which could enable performance improvements but the execution model while a bit better than Javascript doesn't really compare with Smalltalk. I don't see how we could support continuations for the debugger with pure AVM bytecode for instance. Anyways just recompiling the existing interpreter with Alchemy compiler requires a minimum of work so I'm focusing on that now. Will let you know how it goes.
On Mon, Mar 7, 2011 at 1:29 PM, Alexandre Jasmin <alexandre.jasmin@gmail.com
wrote:
Your image helps me a lot.
I'm trying to get the Squeak VM compiling with Adobe Alchemy.
tell us more :)
I'm exploring ways to use Smalltalk inside a web page.
There are already few interesting Javascript converters and Smalltalk inspired projects like the Clamato and the Lively Kernel. But it'd be nice to run unchanged code from Pharo or Squeak directly.
The simplest way to bring Pharo on the web would be to run the existing VM inside a web page. The Squeak plug-in does that already but good luck getting anyone to install it.
There are at least two solutions aiming to bring native code to the web without installing plug-ins - Google Native Client provides a sandboxed environment for x86 code - Alchemy (a research project at Adobe) compiles C into the bytecode language interpreted by Flash.
Since Flash seems to have wider adoption than Native Client I'm doing a little experiment with it. I just took the VMMaker generated C code for the Squeak VM and passed it through the Alchemy compiler to get something that runs on top of the Flash plug-in.
It's too soon to tell if this kind of nested VM is really usable. Performance will undoubtedly be an issue but I can at least run the Hazel image and have it beep in a loop which is encouraging.
It seems Flash also supports some dynamic class loading which could enable performance improvements but the execution model while a bit better than Javascript doesn't really compare with Smalltalk. I don't see how we could support continuations for the debugger with pure AVM bytecode for instance. Anyways just recompiling the existing interpreter with Alchemy compiler requires a minimum of work so I'm focusing on that now.
Will let you know how it goes.
Really interesteing. Keep us informed!
On Mar 7, 2011, at 1:29 PM, Alexandre Jasmin wrote:
Your image helps me a lot.
I'm trying to get the Squeak VM compiling with Adobe Alchemy.
tell us more :)
I'm exploring ways to use Smalltalk inside a web page.
There are already few interesting Javascript converters and Smalltalk inspired projects like the Clamato and the Lively Kernel. But it'd be nice to run unchanged code from Pharo or Squeak directly.
The simplest way to bring Pharo on the web would be to run the existing VM inside a web page. The Squeak plug-in does that already but good luck getting anyone to install it.
There are at least two solutions aiming to bring native code to the web without installing plug-ins - Google Native Client provides a sandboxed environment for x86 code
We would love to have somebody working on the google native client for pharo.
- Alchemy (a research project at Adobe) compiles C into the bytecode language interpreted by Flash.
Since Flash seems to have wider adoption than Native Client I'm doing a little experiment with it. I just took the VMMaker generated C code for the Squeak VM and passed it through the Alchemy compiler to get something that runs on top of the Flash plug-in.
Ok now I understand.
It's too soon to tell if this kind of nested VM is really usable. Performance will undoubtedly be an issue but I can at least run the Hazel image and have it beep in a loop which is encouraging.
Fascinating!
It seems Flash also supports some dynamic class loading which could enable performance improvements but the execution model while a bit better than Javascript doesn't really compare with Smalltalk. I don't see how we could support continuations for the debugger with pure AVM bytecode for instance. Anyways just recompiling the existing interpreter with Alchemy compiler requires a minimum of work so I'm focusing on that now.
Will let you know how it goes.
Thanks a lot. Ben is already really happy to see 3 or 4 months of works been used by somebody else. It is a great feedback. Stef
On Mar 7, 2011, at 11:04 AM, Alexandre Jasmin wrote:
On Fri, 04 Mar 2011 13:51:46 +0100, Benjamin wrote:
I finally success (with the help of Igor) to trace and create a new Smalltalk kernel based on Pharo. The new born weight 2.2Mb and includes 230 classes ;)
Your image helps me a lot.
I'm trying to get the Squeak VM compiling with Adobe Alchemy. Alchemy is a C compiler targeting the flash VM.
My initial approach is to stub about all entry points expect for ioBeep() which prints a debug message. But I had problems loading a normal image. I think it's just too big for flash to handle. In any case this kernel image worked wonderfully!
Thanks!
I'm glad that my work could help someone :) As Stef said, if you can provide us more info, it will be really cool ;) Thanks for your feedback ;) Ben
participants (7)
-
Alexandre Bergel -
Alexandre Jasmin -
Benjamin -
Eliot Miranda -
Mariano Martinez Peck -
Pavel Krivanek -
Stéphane Ducasse