Re: [Esug-list] ESUG SummerTalk - Fuel, binary object serializer

MD
Marcus Denker
Thu, May 26, 2011 7:51 AM

On May 25, 2011, at 7:35 PM, Yoshiki Ohshima wrote:

At Wed, 25 May 2011 15:28:00 +0200,
Mariano Martinez Peck wrote:

One of the most important uses we want to do with Fuel (in a future) is to be able to use it for Monticello (to replace mzc).
The idea in addition is to be able to boostrap a really small pharo image (hetzel) and be able to load stuff without needing a compiler.

Sounds interesting!  Can I learn about "hetzel" somewhere?

We are working on how to build minimal Pharo kernels (with the goal of a declarative bootstrap so you can build your own
version of Smalltalk running in the normal Pharo image to experiment with new language features, as one example, or
create a minimal image for deployment).

There is some information from Nicolas Paez who worked on this when visiting RMOD last year:

http://www.fast.org.ar/smalltalks2010/videos/Seed+project%3A+The+challenge+of+creating+a+Smalltalk+kernel
http://rmod.lille.inria.fr/archives/talks/2010-Smalltalks-Paez-Seed.pdf

The status is that we learned a lot and continue to work on it... more to come later ;-)

Marcus

--
Marcus Denker  -- http://www.marcusdenker.de
INRIA Lille -- Nord Europe. Team RMoD.

On May 25, 2011, at 7:35 PM, Yoshiki Ohshima wrote: > At Wed, 25 May 2011 15:28:00 +0200, > Mariano Martinez Peck wrote: >> >> One of the most important uses we want to do with Fuel (in a future) is to be able to use it for Monticello (to replace mzc). >> The idea in addition is to be able to boostrap a really small pharo image (hetzel) and be able to load stuff without needing a compiler. > > Sounds interesting! Can I learn about "hetzel" somewhere? > We are working on how to build minimal Pharo kernels (with the goal of a declarative bootstrap so you can build your own version of Smalltalk running in the normal Pharo image to experiment with new language features, as one example, or create a minimal image for deployment). There is some information from Nicolas Paez who worked on this when visiting RMOD last year: http://www.fast.org.ar/smalltalks2010/videos/Seed+project%3A+The+challenge+of+creating+a+Smalltalk+kernel http://rmod.lille.inria.fr/archives/talks/2010-Smalltalks-Paez-Seed.pdf The status is that we learned a lot and continue to work on it... more to come later ;-) Marcus -- Marcus Denker -- http://www.marcusdenker.de INRIA Lille -- Nord Europe. Team RMoD.
MM
Mariano Martinez Peck
Thu, May 26, 2011 8:03 AM

On Thu, May 26, 2011 at 9:51 AM, Marcus Denker marcus.denker@inria.frwrote:

On May 25, 2011, at 7:35 PM, Yoshiki Ohshima wrote:

At Wed, 25 May 2011 15:28:00 +0200,
Mariano Martinez Peck wrote:

One of the most important uses we want to do with Fuel (in a future) is

to be able to use it for Monticello (to replace mzc).

The idea in addition is to be able to boostrap a really small pharo

image (hetzel) and be able to load stuff without needing a compiler.

Sounds interesting!  Can I learn about "hetzel" somewhere?

We are working on how to build minimal Pharo kernels (with the goal of a
declarative bootstrap so you can build your own
version of Smalltalk running in the normal Pharo image to experiment with
new language features, as one example, or
create a minimal image for deployment).

There is some information from Nicolas Paez who worked on this when
visiting RMOD last year:

http://www.fast.org.ar/smalltalks2010/videos/Seed+project%3A+The+challenge+of+creating+a+Smalltalk+kernel
http://rmod.lille.inria.fr/archives/talks/2010-Smalltalks-Paez-Seed.pdf

The status is that we learned a lot and continue to work on it... more to
come later ;-)

Ben is now working in the project. He will soon create a website inside RMOD
with some more information.
He has also some slides and a full report explaing about it :)

    Marcus

--
Marcus Denker  -- http://www.marcusdenker.de
INRIA Lille -- Nord Europe. Team RMoD.


Esug-list mailing list
Esug-list@lists.esug.org
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org

On Thu, May 26, 2011 at 9:51 AM, Marcus Denker <marcus.denker@inria.fr>wrote: > > On May 25, 2011, at 7:35 PM, Yoshiki Ohshima wrote: > > > At Wed, 25 May 2011 15:28:00 +0200, > > Mariano Martinez Peck wrote: > >> > >> One of the most important uses we want to do with Fuel (in a future) is > to be able to use it for Monticello (to replace mzc). > >> The idea in addition is to be able to boostrap a really small pharo > image (hetzel) and be able to load stuff without needing a compiler. > > > > Sounds interesting! Can I learn about "hetzel" somewhere? > > > We are working on how to build minimal Pharo kernels (with the goal of a > declarative bootstrap so you can build your own > version of Smalltalk running in the normal Pharo image to experiment with > new language features, as one example, or > create a minimal image for deployment). > > There is some information from Nicolas Paez who worked on this when > visiting RMOD last year: > > > http://www.fast.org.ar/smalltalks2010/videos/Seed+project%3A+The+challenge+of+creating+a+Smalltalk+kernel > http://rmod.lille.inria.fr/archives/talks/2010-Smalltalks-Paez-Seed.pdf > > The status is that we learned a lot and continue to work on it... more to > come later ;-) > > Ben is now working in the project. He will soon create a website inside RMOD with some more information. He has also some slides and a full report explaing about it :) > Marcus > > -- > Marcus Denker -- http://www.marcusdenker.de > INRIA Lille -- Nord Europe. Team RMoD. > > > _______________________________________________ > Esug-list mailing list > Esug-list@lists.esug.org > http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org > -- Mariano http://marianopeck.wordpress.com
YO
Yoshiki Ohshima
Thu, May 26, 2011 6:13 PM

At Thu, 26 May 2011 09:51:00 +0200,
Marcus Denker wrote:

On May 25, 2011, at 7:35 PM, Yoshiki Ohshima wrote:

At Wed, 25 May 2011 15:28:00 +0200,
Mariano Martinez Peck wrote:

One of the most important uses we want to do with Fuel (in a future) is to be able to use it for Monticello (to replace mzc).
The idea in addition is to be able to boostrap a really small pharo image (hetzel) and be able to load stuff without needing a compiler.

Sounds interesting!  Can I learn about "hetzel" somewhere?

We are working on how to build minimal Pharo kernels (with the goal of a declarative bootstrap so you can build your own
version of Smalltalk running in the normal Pharo image to experiment with new language features, as one example, or
create a minimal image for deployment).

There is some information from Nicolas Paez who worked on this when visiting RMOD last year:

http://www.fast.org.ar/smalltalks2010/videos/Seed+project%3A+The+challenge+of+creating+a+Smalltalk+kernel
http://rmod.lille.inria.fr/archives/talks/2010-Smalltalks-Paez-Seed.pdf

The status is that we learned a lot and continue to work on it... more to come later ;-)

Yay!

Declarative bootstrap is good.  MicroSqueak is mostly classes and
code with a bit of setup, so I thought if the tracer
(MicroSqueakImageBuilder) takes somewhat different format but
essentially with the same information, you can build an image and then
whatever code loader that can load Compiler, you can get to a working
state.  But as you say, there must be details and I'm all curious to
learn also!

-- Yoshiki

At Thu, 26 May 2011 09:51:00 +0200, Marcus Denker wrote: > > On May 25, 2011, at 7:35 PM, Yoshiki Ohshima wrote: > > > At Wed, 25 May 2011 15:28:00 +0200, > > Mariano Martinez Peck wrote: > >> > >> One of the most important uses we want to do with Fuel (in a future) is to be able to use it for Monticello (to replace mzc). > >> The idea in addition is to be able to boostrap a really small pharo image (hetzel) and be able to load stuff without needing a compiler. > > > > Sounds interesting! Can I learn about "hetzel" somewhere? > > > We are working on how to build minimal Pharo kernels (with the goal of a declarative bootstrap so you can build your own > version of Smalltalk running in the normal Pharo image to experiment with new language features, as one example, or > create a minimal image for deployment). > > There is some information from Nicolas Paez who worked on this when visiting RMOD last year: > > http://www.fast.org.ar/smalltalks2010/videos/Seed+project%3A+The+challenge+of+creating+a+Smalltalk+kernel > http://rmod.lille.inria.fr/archives/talks/2010-Smalltalks-Paez-Seed.pdf > > The status is that we learned a lot and continue to work on it... more to come later ;-) Yay! Declarative bootstrap is good. MicroSqueak is mostly classes and code with a bit of setup, so I thought if the tracer (MicroSqueakImageBuilder) takes somewhat different format but essentially with the same information, you can build an image and then whatever code loader that can load Compiler, you can get to a working state. But as you say, there must be details and I'm all curious to learn also! -- Yoshiki
YO
Yoshiki Ohshima
Thu, May 26, 2011 7:29 PM

BTW, the page (http://rmod.lille.inria.fr/web/pier/software/Fuel)
says:

Gofer new
squeaksource: 'Fuel';
package: 'ConfigurationOfFuel';
load.
((Smalltalk at: #ConfigurationOfFuel) project =latestVersion) load: #(Core Tests Benchmarks).

it does not appear to be a valid expression.  What is the right
expression?

-- Yoshiki

BTW, the page (http://rmod.lille.inria.fr/web/pier/software/Fuel) says: Gofer new squeaksource: 'Fuel'; package: 'ConfigurationOfFuel'; load. ((Smalltalk at: #ConfigurationOfFuel) project =latestVersion) load: #(Core Tests Benchmarks). it does not appear to be a valid expression. What is the right expression? -- Yoshiki
MM
Mariano Martinez Peck
Thu, May 26, 2011 7:41 PM

On Thu, May 26, 2011 at 9:29 PM, Yoshiki Ohshima yoshiki@vpri.org wrote:

BTW, the page (http://rmod.lille.inria.fr/web/pier/software/Fuel)
says:

Gofer new
squeaksource: 'Fuel';
package: 'ConfigurationOfFuel';
load.
((Smalltalk at: #ConfigurationOfFuel) project =latestVersion) load: #(Core
Tests Benchmarks).

it does not appear to be a valid expression.  What is the right
expression?

the =

Try:

Gofer new
squeaksource: 'Fuel';
package: 'ConfigurationOfFuel';
load.
((Smalltalk at: #ConfigurationOfFuel) project latestVersion) load: #(Core
Tests Benchmarks).

On Thu, May 26, 2011 at 9:29 PM, Yoshiki Ohshima <yoshiki@vpri.org> wrote: > BTW, the page (http://rmod.lille.inria.fr/web/pier/software/Fuel) > says: > > Gofer new > squeaksource: 'Fuel'; > package: 'ConfigurationOfFuel'; > load. > ((Smalltalk at: #ConfigurationOfFuel) project =latestVersion) load: #(Core > Tests Benchmarks). > > it does not appear to be a valid expression. What is the right > expression? > the = Try: Gofer new squeaksource: 'Fuel'; package: 'ConfigurationOfFuel'; load. ((Smalltalk at: #ConfigurationOfFuel) project latestVersion) load: #(Core Tests Benchmarks). > > -- Yoshiki > > > _______________________________________________ > Esug-list mailing list > Esug-list@lists.esug.org > http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org > -- Mariano http://marianopeck.wordpress.com
MD
Martin Dias
Thu, May 26, 2011 7:45 PM

On Thu, May 26, 2011 at 4:41 PM, Mariano Martinez Peck <
marianopeck@gmail.com> wrote:

On Thu, May 26, 2011 at 9:29 PM, Yoshiki Ohshima yoshiki@vpri.org wrote:

BTW, the page (http://rmod.lille.inria.fr/web/pier/software/Fuel)
says:

Gofer new
squeaksource: 'Fuel';
package: 'ConfigurationOfFuel';
load.
((Smalltalk at: #ConfigurationOfFuel) project =latestVersion) load: #(Core
Tests Benchmarks).

it does not appear to be a valid expression.  What is the right
expression?

the =

Hi!
Sorry, now it is fixed.

Try:

Gofer new
squeaksource: 'Fuel';
package: 'ConfigurationOfFuel';
load.
((Smalltalk at: #ConfigurationOfFuel) project latestVersion) load: #(Core
Tests Benchmarks).

On Thu, May 26, 2011 at 4:41 PM, Mariano Martinez Peck < marianopeck@gmail.com> wrote: > > > On Thu, May 26, 2011 at 9:29 PM, Yoshiki Ohshima <yoshiki@vpri.org> wrote: > >> BTW, the page (http://rmod.lille.inria.fr/web/pier/software/Fuel) >> says: >> >> Gofer new >> squeaksource: 'Fuel'; >> package: 'ConfigurationOfFuel'; >> load. >> ((Smalltalk at: #ConfigurationOfFuel) project =latestVersion) load: #(Core >> Tests Benchmarks). >> >> it does not appear to be a valid expression. What is the right >> expression? >> > > the = > > Hi! Sorry, now it is fixed. > Try: > > > > Gofer new > squeaksource: 'Fuel'; > package: 'ConfigurationOfFuel'; > load. > ((Smalltalk at: #ConfigurationOfFuel) project latestVersion) load: #(Core > Tests Benchmarks). > > > >> >> -- Yoshiki >> >> >> _______________________________________________ >> Esug-list mailing list >> Esug-list@lists.esug.org >> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org >> > > > > -- > Mariano > http://marianopeck.wordpress.com > > > _______________________________________________ > Esug-list mailing list > Esug-list@lists.esug.org > http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org > >
YO
Yoshiki Ohshima
Fri, May 27, 2011 10:37 PM

At Thu, 26 May 2011 16:45:38 -0300,
Martin Dias wrote:

On Thu, May 26, 2011 at 4:41 PM, Mariano Martinez Peck marianopeck@gmail.com wrote:

 On Thu, May 26, 2011 at 9:29 PM, Yoshiki Ohshima <yoshiki@vpri.org> wrote:

     BTW, the page (http://rmod.lille.inria.fr/web/pier/software/Fuel)
     says:
    
     Gofer new
            squeaksource: 'Fuel';
            package: 'ConfigurationOfFuel';
            load.
     ((Smalltalk at: #ConfigurationOfFuel) project =latestVersion) load: #(Core Tests Benchmarks).
    
     it does not appear to be a valid expression.  What is the right
     expression?

 the =

Hi!
Sorry, now it is fixed.

Thanks!  I tried it a bit and I'm officially impressed with its
performancce ^^;

I had a simple serializer/materializer that only handles class
definitions and compiled methods (and initialization of classes).  But
Fuel seems faster than that for a factor of two or so for reading
methods.  (Mine was more on simplicity so it has only a few methods
and does some slow way to read sized-strings, as well as generous 4
byte padding.  It does make difference when it comes to performance.)

-- Yoshiki

At Thu, 26 May 2011 16:45:38 -0300, Martin Dias wrote: > > > On Thu, May 26, 2011 at 4:41 PM, Mariano Martinez Peck <marianopeck@gmail.com> wrote: > > On Thu, May 26, 2011 at 9:29 PM, Yoshiki Ohshima <yoshiki@vpri.org> wrote: > > BTW, the page (http://rmod.lille.inria.fr/web/pier/software/Fuel) > says: > > Gofer new >        squeaksource: 'Fuel'; >        package: 'ConfigurationOfFuel'; >        load. > ((Smalltalk at: #ConfigurationOfFuel) project =latestVersion) load: #(Core Tests Benchmarks). > > it does not appear to be a valid expression.  What is the right > expression? > > the = > > Hi! > Sorry, now it is fixed. Thanks! I tried it a bit and I'm officially impressed with its performancce ^^; I had a simple serializer/materializer that only handles class definitions and compiled methods (and initialization of classes). But Fuel seems faster than that for a factor of two or so for reading methods. (Mine was more on simplicity so it has only a few methods and does some slow way to read sized-strings, as well as generous 4 byte padding. It does make difference when it comes to performance.) -- Yoshiki
MD
Martin Dias
Fri, May 27, 2011 10:53 PM

On Fri, May 27, 2011 at 7:37 PM, Yoshiki Ohshima yoshiki@vpri.org wrote:

At Thu, 26 May 2011 16:45:38 -0300,
Martin Dias wrote:

On Thu, May 26, 2011 at 4:41 PM, Mariano Martinez Peck <

 On Thu, May 26, 2011 at 9:29 PM, Yoshiki Ohshima <yoshiki@vpri.org>

wrote:

     BTW, the page (http://rmod.lille.inria.fr/web/pier/software/Fuel

)

     says:

     Gofer new
            squeaksource: 'Fuel';
            package: 'ConfigurationOfFuel';
            load.
     ((Smalltalk at: #ConfigurationOfFuel) project =latestVersion)

load: #(Core Tests Benchmarks).

     it does not appear to be a valid expression.  What is the right
     expression?

 the =

Hi!
Sorry, now it is fixed.

Thanks!  I tried it a bit and I'm officially impressed with its
performancce ^^;

I had a simple serializer/materializer that only handles class
definitions and compiled methods (and initialization of classes).  But
Fuel seems faster than that for a factor of two or so for reading
methods.  (Mine was more on simplicity so it has only a few methods
and does some slow way to read sized-strings, as well as generous 4
byte padding.  It does make difference when it comes to performance.)

Sounds great! Do you have it in a public repository?

On Fri, May 27, 2011 at 7:37 PM, Yoshiki Ohshima <yoshiki@vpri.org> wrote: > At Thu, 26 May 2011 16:45:38 -0300, > Martin Dias wrote: > > > > > > On Thu, May 26, 2011 at 4:41 PM, Mariano Martinez Peck < > marianopeck@gmail.com> wrote: > > > > On Thu, May 26, 2011 at 9:29 PM, Yoshiki Ohshima <yoshiki@vpri.org> > wrote: > > > > BTW, the page (http://rmod.lille.inria.fr/web/pier/software/Fuel > ) > > says: > > > > Gofer new > > squeaksource: 'Fuel'; > > package: 'ConfigurationOfFuel'; > > load. > > ((Smalltalk at: #ConfigurationOfFuel) project =latestVersion) > load: #(Core Tests Benchmarks). > > > > it does not appear to be a valid expression. What is the right > > expression? > > > > the = > > > > Hi! > > Sorry, now it is fixed. > > Thanks! I tried it a bit and I'm officially impressed with its > performancce ^^; > > I had a simple serializer/materializer that only handles class > definitions and compiled methods (and initialization of classes). But > Fuel seems faster than that for a factor of two or so for reading > methods. (Mine was more on simplicity so it has only a few methods > and does some slow way to read sized-strings, as well as generous 4 > byte padding. It does make difference when it comes to performance.) > Sounds great! Do you have it in a public repository? > > -- Yoshiki > > _______________________________________________ > Esug-list mailing list > Esug-list@lists.esug.org > http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org >
YO
Yoshiki Ohshima
Sat, May 28, 2011 12:55 AM

At Fri, 27 May 2011 19:53:46 -0300,
Martin Dias wrote:

  Thanks!  I tried it a bit and I'm officially impressed with its
 performancce ^^;

  I had a simple serializer/materializer that only handles class
 definitions and compiled methods (and initialization of classes).  But
 Fuel seems faster than that for a factor of two or so for reading
 methods.  (Mine was more on simplicity so it has only a few methods
 and does some slow way to read sized-strings, as well as generous 4
 byte padding.  It does make difference when it comes to performance.)

Sounds great! Do you have it in a public repository?

Sure.  It is here:

https://github.com/yoshikiohshima/SqueakBootstrapper

The system is just enough to load a compiler so it does not handle
curly braces nor pragmas or primitives.  But By setting the path to
the Squeak VM in the Makefile, it should run on major platforms where
the VM takes command line arguments.

-- Yoshiki

At Fri, 27 May 2011 19:53:46 -0300, Martin Dias wrote: > >  Thanks!  I tried it a bit and I'm officially impressed with its > performancce ^^; > >  I had a simple serializer/materializer that only handles class > definitions and compiled methods (and initialization of classes).  But > Fuel seems faster than that for a factor of two or so for reading > methods.  (Mine was more on simplicity so it has only a few methods > and does some slow way to read sized-strings, as well as generous 4 > byte padding.  It does make difference when it comes to performance.) > > Sounds great! Do you have it in a public repository? Sure. It is here: https://github.com/yoshikiohshima/SqueakBootstrapper The system is just enough to load a compiler so it does not handle curly braces nor pragmas or primitives. But By setting the path to the Squeak VM in the Makefile, it should run on major platforms where the VM takes command line arguments. -- Yoshiki
SD
Stéphane Ducasse
Sat, May 28, 2011 7:33 AM

Yoshiki

if you want to help testing, improving fuel you are welcome.
The idea is to make it fast fast fast without vm support.

Stef

On May 28, 2011, at 12:37 AM, Yoshiki Ohshima wrote:

At Thu, 26 May 2011 16:45:38 -0300,
Martin Dias wrote:

On Thu, May 26, 2011 at 4:41 PM, Mariano Martinez Peck marianopeck@gmail.com wrote:

On Thu, May 26, 2011 at 9:29 PM, Yoshiki Ohshima <yoshiki@vpri.org> wrote:

    BTW, the page (http://rmod.lille.inria.fr/web/pier/software/Fuel)
    says:

    Gofer new
           squeaksource: 'Fuel';
           package: 'ConfigurationOfFuel';
           load.
    ((Smalltalk at: #ConfigurationOfFuel) project =latestVersion) load: #(Core Tests Benchmarks).

    it does not appear to be a valid expression.  What is the right
    expression?

the =

Hi!
Sorry, now it is fixed.

Thanks!  I tried it a bit and I'm officially impressed with its
performancce ^^;

I had a simple serializer/materializer that only handles class
definitions and compiled methods (and initialization of classes).  But
Fuel seems faster than that for a factor of two or so for reading
methods.  (Mine was more on simplicity so it has only a few methods
and does some slow way to read sized-strings, as well as generous 4
byte padding.  It does make difference when it comes to performance.)

-- Yoshiki


Esug-list mailing list
Esug-list@lists.esug.org
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org

Yoshiki if you want to help testing, improving fuel you are welcome. The idea is to make it fast fast fast without vm support. Stef On May 28, 2011, at 12:37 AM, Yoshiki Ohshima wrote: > At Thu, 26 May 2011 16:45:38 -0300, > Martin Dias wrote: >> >> >> On Thu, May 26, 2011 at 4:41 PM, Mariano Martinez Peck <marianopeck@gmail.com> wrote: >> >> On Thu, May 26, 2011 at 9:29 PM, Yoshiki Ohshima <yoshiki@vpri.org> wrote: >> >> BTW, the page (http://rmod.lille.inria.fr/web/pier/software/Fuel) >> says: >> >> Gofer new >> squeaksource: 'Fuel'; >> package: 'ConfigurationOfFuel'; >> load. >> ((Smalltalk at: #ConfigurationOfFuel) project =latestVersion) load: #(Core Tests Benchmarks). >> >> it does not appear to be a valid expression. What is the right >> expression? >> >> the = >> >> Hi! >> Sorry, now it is fixed. > > Thanks! I tried it a bit and I'm officially impressed with its > performancce ^^; > > I had a simple serializer/materializer that only handles class > definitions and compiled methods (and initialization of classes). But > Fuel seems faster than that for a factor of two or so for reading > methods. (Mine was more on simplicity so it has only a few methods > and does some slow way to read sized-strings, as well as generous 4 > byte padding. It does make difference when it comes to performance.) > > -- Yoshiki > > _______________________________________________ > Esug-list mailing list > Esug-list@lists.esug.org > http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org