Runtime obesity

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

Runtime obesity

Christian Haider
Nachricht
Hi,
 
the runtimes are getting bigger and bigger... Here is my data point for the discussion:
The size of the exe with compressed image:
7.3.1: 5120 KB
7.4: 5604 KB
 
My code remained the same and I used the same settings for the packager (just for the windows platform with only the windows UI).
 
I really hope that this trend (holding for a couple of releases now) will not continue.
With all the talk about building up images, I fear to face 20 MB+ images in the future.
This would mean the end of VisualWorks for desktop tools (maybe not for the applications, since people are prepared to get a coffee when starting up the program).
 
cheers (worried),
    Christian
Reply | Threaded
Open this post in threaded view
|

Re: Runtime obesity

jarober
I discussed this with Alan, who did a lot of work on the RTP this last
release.  He'll correct me if I miss something :)

As I understand it, the older rtp was stripping out things that
realistically should not have been stripped out, while the newer one is
more careful.

Something you might try: In preview/packaging, you'll find base.im.  The
stock visual.im is over 11 MB, while base.im is just under 9.

At 02:45 AM 3/7/2006, you wrote:

>Hi,
>
>the runtimes are getting bigger and bigger... Here is my data point for
>the discussion:
>The size of the exe with compressed image:
>7.3.1: 5120 KB
>7.4: 5604 KB
>
>My code remained the same and I used the same settings for the packager
>(just for the windows platform with only the windows UI).
>
>I really hope that this trend (holding for a couple of releases now) will
>not continue.
>With all the talk about building up images, I fear to face 20 MB+ images
>in the future.
>This would mean the end of VisualWorks for desktop tools (maybe not for
>the applications, since people are prepared to get a coffee when starting
>up the program).
>
>cheers (worried),
>     Christian

<Talk Small and Carry a Big Class Library>
James Robertson, Product Manager, Cincom Smalltalk
http://www.cincomsmalltalk.com/blog/blogView

Reply | Threaded
Open this post in threaded view
|

AW: Runtime obesity

Christian Haider
I am using the base.im since it was introduced...

I understand that the packager is more careful now and that is ok for the
newcomer. But in the case where it worked before, it just means that it
includes many things now that are obviously not needed.

There is a nice way to tell the packager which classes and selectors are to
be included (#dynamicallyReferencedClasses and friends). Could Cincom think
about something along the lines to exclude things to be packaged (maybe
#notReferencedXXX and friends).

Cheers,
        Christian

> -----Ursprüngliche Nachricht-----
> Von: James Robertson [mailto:[hidden email]]
> Gesendet: Dienstag, 7. März 2006 13:43
> An: [hidden email]
> Betreff: Re: Runtime obesity
>
>
> I discussed this with Alan, who did a lot of work on the RTP
> this last
> release.  He'll correct me if I miss something :)
>
> As I understand it, the older rtp was stripping out things that
> realistically should not have been stripped out, while the
> newer one is
> more careful.
>
> Something you might try: In preview/packaging, you'll find
> base.im.  The
> stock visual.im is over 11 MB, while base.im is just under 9.
>
> At 02:45 AM 3/7/2006, you wrote:
> >Hi,
> >
> >the runtimes are getting bigger and bigger... Here is my
> data point for
> >the discussion:
> >The size of the exe with compressed image:
> >7.3.1: 5120 KB
> >7.4: 5604 KB
> >
> >My code remained the same and I used the same settings for
> the packager
> >(just for the windows platform with only the windows UI).
> >
> >I really hope that this trend (holding for a couple of
> releases now) will
> >not continue.
> >With all the talk about building up images, I fear to face
> 20 MB+ images
> >in the future.
> >This would mean the end of VisualWorks for desktop tools
> (maybe not for
> >the applications, since people are prepared to get a coffee
> when starting
> >up the program).
> >
> >cheers (worried),
> >     Christian
>
> <Talk Small and Carry a Big Class Library>
> James Robertson, Product Manager, Cincom Smalltalk
> http://www.cincomsmalltalk.com/blog/blogView
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: AW: Runtime obesity

Alan Knight-2
At 08:54 AM 3/7/2006, Christian Haider wrote:
>I am using the base.im since it was introduced...
>
>I understand that the packager is more careful now and that is ok for the
>newcomer. But in the case where it worked before, it just means that it
>includes many things now that are obviously not needed.

I don't think I'd consider it quite that way. In the case before it would have been including only part of something, so it would have obviously not worked, except that the code was never run. So before it also included many things that were obviously not needed, just not enough to make them actually work. So, where the old one would leave half of, say, the settings framework in, the new one will leave all of it, so settings will actually work. If you want to not include them, then it's much easier than it was to look at what's been included or excluded and remove particular packages, either within RTP, or by just not having them in the image to start with. And of course in many circumtsnaces the old version left out many things that obviously were needed.

The only thing I'm aware of that was actually added to the base image in 7.4 were the Standard IO Streams.

So if you're just using the same settings as previously, it would probably be a good idea to review your settings, since the entire organizational principle for RTP changed, and it's much easier to exclude, e.g. class extensions which may drag along large extra chunks of code.

>There is a nice way to tell the packager which classes and selectors are to
>be included (#dynamicallyReferencedClasses and friends). Could Cincom think
>about something along the lines to exclude things to be packaged (maybe
>#notReferencedXXX and friends).

That seems reasonable, although I think it would mostly only be useful for user code. For libraries, I don't really know what will and won't be used. And if I do know that something is definitely not going to be needed at runtime, rather than annotating the code to indicate that it should be stripped, I think I would be better off to put the development-time and run-time code in different packages.

Perhaps a more useful annotation would be one on packages to tell RTP that this package should by default, be unloaded before stripping. Or if we had a code annotation, to treat it as meaning that a particular reference should not be counted, e.g. this class uses a symbol that might be a class name in other circumstances, but I know it's not used that way.


>Cheers,
>        Christian
>
>> -----Ursprüngliche Nachricht-----
>> Von: James Robertson [mailto:[hidden email]]
>> Gesendet: Dienstag, 7. März 2006 13:43
>> An: [hidden email]
>> Betreff: Re: Runtime obesity
>>
>>
>> I discussed this with Alan, who did a lot of work on the RTP
>> this last
>> release.  He'll correct me if I miss something :)
>>
>> As I understand it, the older rtp was stripping out things that
>> realistically should not have been stripped out, while the
>> newer one is
>> more careful.
>>
>> Something you might try: In preview/packaging, you'll find
>> base.im.  The
>> stock visual.im is over 11 MB, while base.im is just under 9.
>>
>> At 02:45 AM 3/7/2006, you wrote:
>> >Hi,
>> >
>> >the runtimes are getting bigger and bigger... Here is my
>> data point for
>> >the discussion:
>> >The size of the exe with compressed image:
>> >7.3.1: 5120 KB
>> >7.4: 5604 KB
>> >
>> >My code remained the same and I used the same settings for
>> the packager
>> >(just for the windows platform with only the windows UI).
>> >
>> >I really hope that this trend (holding for a couple of
>> releases now) will
>> >not continue.
>> >With all the talk about building up images, I fear to face
>> 20 MB+ images
>> >in the future.
>> >This would mean the end of VisualWorks for desktop tools
>> (maybe not for
>> >the applications, since people are prepared to get a coffee
>> when starting
>> >up the program).
>> >
>> >cheers (worried),
>> >     Christian
>>
>> <Talk Small and Carry a Big Class Library>
>> James Robertson, Product Manager, Cincom Smalltalk
>> http://www.cincomsmalltalk.com/blog/blogView
>>
>>
>>

--
Alan Knight [|], Cincom Smalltalk Development
[hidden email]
[hidden email]
http://www.cincom.com/smalltalk

"The Static Typing Philosophy: Make it fast. Make it right. Make it run." - Niall Ross

Reply | Threaded
Open this post in threaded view
|

Re: AW: Runtime obesity

Carl Gundel
Perhaps it would be a good idea to have a BOF for the runtime packager at Smalltalk Solutions.  A detailed walkthrough of how to best use it would be very helpful.  Or, maybe just make a screencast and put it on the web.  I know there is a very simple example screencast by James, but an in-depth one would be great.  There's a lot of stuff to know about the RTP.   :-)

-Carl Gundel, author of Liberty BASIC
http://www.libertybasic.com

 ..... Original Message .......
On Tue, 07 Mar 2006 09:42:25 -0500 Alan Knight <[hidden email]> wrote:

>At 08:54 AM 3/7/2006, Christian Haider wrote:
>>I am using the base.im since it was introduced...
>>
>>I understand that the packager is more careful now and that is ok for the
>>newcomer. But in the case where it worked before, it just means that it
>>includes many things now that are obviously not needed.
>
>I don't think I'd consider it quite that way. In the case before it would have been including only part of something, so it would have obviously not worked, except that the code was never run. So before it also included many things that were obviously not needed, just not enough to make them actually work. So, where the old one would leave half of, say, the settings framework in, the new one will leave all of it, so settings will actually work. If you want to not include them, then it's much easier than it was to look at what's been included or excluded and remove particular packages, either within RTP, or by just not having them in the image to start with. And of course in many circumtsnaces the old version left out many things that obviously were needed.
>
>The only thing I'm aware of that was actually added to the base image in 7.4 were the Standard IO Streams.
>
>So if you're just using the same settings as previously, it would probably be a good idea to review your settings, since the entire organizational principle for RTP changed, and it's much easier to exclude, e.g. class extensions which may drag along large extra chunks of code.
>
>>There is a nice way to tell the packager which classes and selectors are to
>>be included (#dynamicallyReferencedClasses and friends). Could Cincom think
>>about something along the lines to exclude things to be packaged (maybe
>>#notReferencedXXX and friends).
>
>That seems reasonable, although I think it would mostly only be useful for user code. For libraries, I don't really know what will and won't be used. And if I do know that something is definitely not going to be needed at runtime, rather than annotating the code to indicate that it should be stripped, I think I would be better off to put the development-time and run-time code in different packages.
>
>Perhaps a more useful annotation would be one on packages to tell RTP that this package should by default, be unloaded before stripping. Or if we had a code annotation, to treat it as meaning that a particular reference should not be counted, e.g. this class uses a symbol that might be a class name in other circumstances, but I know it's not used that way.
>
>
>>Cheers,
>>        Christian
>>
>>> -----Ursprüngliche Nachricht-----
>>> Von: James Robertson [mailto:[hidden email]]
>>> Gesendet: Dienstag, 7. März 2006 13:43
>>> An: [hidden email]
>>> Betreff: Re: Runtime obesity
>>>
>>>
>>> I discussed this with Alan, who did a lot of work on the RTP
>>> this last
>>> release.  He'll correct me if I miss something :)
>>>
>>> As I understand it, the older rtp was stripping out things that
>>> realistically should not have been stripped out, while the
>>> newer one is
>>> more careful.
>>>
>>> Something you might try: In preview/packaging, you'll find
>>> base.im.  The
>>> stock visual.im is over 11 MB, while base.im is just under 9.
>>>
>>> At 02:45 AM 3/7/2006, you wrote:
>>> >Hi,
>>> >

Reply | Threaded
Open this post in threaded view
|

AW: AW: Runtime obesity

Christian Haider
In reply to this post by Alan Knight-2
Thank you for the explanation. Maybe I will gain more confidence in the
packager.

I think I will invest more time in trying to unload parcels more
agressively.
BTW, I always create the runtime from a fresh base.im with an automated
procedure (i.e. reproducible). Unfortunately many parcels load many others
via their prerequisites which makes it hard to judge what of it is actually
needed. I will experiment and report back.

Cheers,
        Christian

> -----Ursprüngliche Nachricht-----
> Von: Alan Knight [mailto:[hidden email]]
> Gesendet: Dienstag, 7. März 2006 15:42
> An: [hidden email]; [hidden email]
> Betreff: Re: AW: Runtime obesity
>
>
> At 08:54 AM 3/7/2006, Christian Haider wrote:
> >I am using the base.im since it was introduced...
> >
> >I understand that the packager is more careful now and that
> is ok for the
> >newcomer. But in the case where it worked before, it just
> means that it
> >includes many things now that are obviously not needed.
>
> I don't think I'd consider it quite that way. In the case
> before it would have been including only part of something,
> so it would have obviously not worked, except that the code
> was never run. So before it also included many things that
> were obviously not needed, just not enough to make them
> actually work. So, where the old one would leave half of,
> say, the settings framework in, the new one will leave all of
> it, so settings will actually work. If you want to not
> include them, then it's much easier than it was to look at
> what's been included or excluded and remove particular
> packages, either within RTP, or by just not having them in
> the image to start with. And of course in many circumtsnaces
> the old version left out many things that obviously were needed.
>
> The only thing I'm aware of that was actually added to the
> base image in 7.4 were the Standard IO Streams.
>
> So if you're just using the same settings as previously, it
> would probably be a good idea to review your settings, since
> the entire organizational principle for RTP changed, and it's
> much easier to exclude, e.g. class extensions which may drag
> along large extra chunks of code.
>
> >There is a nice way to tell the packager which classes and
> selectors are to
> >be included (#dynamicallyReferencedClasses and friends).
> Could Cincom think
> >about something along the lines to exclude things to be
> packaged (maybe
> >#notReferencedXXX and friends).
>
> That seems reasonable, although I think it would mostly only
> be useful for user code. For libraries, I don't really know
> what will and won't be used. And if I do know that something
> is definitely not going to be needed at runtime, rather than
> annotating the code to indicate that it should be stripped, I
> think I would be better off to put the development-time and
> run-time code in different packages.
>
> Perhaps a more useful annotation would be one on packages to
> tell RTP that this package should by default, be unloaded
> before stripping. Or if we had a code annotation, to treat it
> as meaning that a particular reference should not be counted,
> e.g. this class uses a symbol that might be a class name in
> other circumstances, but I know it's not used that way.
>
>
> >Cheers,
> >        Christian
> >
> >> -----Ursprüngliche Nachricht-----
> >> Von: James Robertson [mailto:[hidden email]]
> >> Gesendet: Dienstag, 7. März 2006 13:43
> >> An: [hidden email]
> >> Betreff: Re: Runtime obesity
> >>
> >>
> >> I discussed this with Alan, who did a lot of work on the RTP
> >> this last
> >> release.  He'll correct me if I miss something :)
> >>
> >> As I understand it, the older rtp was stripping out things that
> >> realistically should not have been stripped out, while the
> >> newer one is
> >> more careful.
> >>
> >> Something you might try: In preview/packaging, you'll find
> >> base.im.  The
> >> stock visual.im is over 11 MB, while base.im is just under 9.
> >>
> >> At 02:45 AM 3/7/2006, you wrote:
> >> >Hi,
> >> >
> >> >the runtimes are getting bigger and bigger... Here is my
> >> data point for
> >> >the discussion:
> >> >The size of the exe with compressed image:
> >> >7.3.1: 5120 KB
> >> >7.4: 5604 KB
> >> >
> >> >My code remained the same and I used the same settings for
> >> the packager
> >> >(just for the windows platform with only the windows UI).
> >> >
> >> >I really hope that this trend (holding for a couple of
> >> releases now) will
> >> >not continue.
> >> >With all the talk about building up images, I fear to face
> >> 20 MB+ images
> >> >in the future.
> >> >This would mean the end of VisualWorks for desktop tools
> >> (maybe not for
> >> >the applications, since people are prepared to get a coffee
> >> when starting
> >> >up the program).
> >> >
> >> >cheers (worried),
> >> >     Christian
> >>
> >> <Talk Small and Carry a Big Class Library>
> >> James Robertson, Product Manager, Cincom Smalltalk
> >> http://www.cincomsmalltalk.com/blog/blogView
> >>
> >>
> >>
>
> --
> Alan Knight [|], Cincom Smalltalk Development
> [hidden email]
> [hidden email]
> http://www.cincom.com/smalltalk
>
> "The Static Typing Philosophy: Make it fast. Make it right.
> Make it run." - Niall Ross
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: AW: Runtime obesity

Charles A. Monteiro-2
In reply to this post by Carl Gundel
I think it would be more interesting to organize a BOF where all of us  
that are attempting "build up" Smalltalk Runtime Environment approaches to  
deployment get together and talk about what works , what does not, how to  
get a smaller base.im than the 8mb provided, although I can appreciate  
that you Carl may want as small an image as possible and therefore  
stripping I want a smaller SRE , I also would not mind talking about how  
to securely load parcels, authenticate parcels etc.

So I'm game if anybody is interested, Bruce perhaps :)

-Charles

On Tue, 07 Mar 2006 04:06:00 -0500, Carl Gundel <[hidden email]>  
wrote:

> Perhaps it would be a good idea to have a BOF for the runtime packager  
> at Smalltalk Solutions.  A detailed walkthrough of how to best use it  
> would be very helpful.  Or, maybe just make a screencast and put it on  
> the web.  I know there is a very simple example screencast by James, but  
> an in-depth one would be great.  There's a lot of stuff to know about  
> the RTP.   :-)
>
> -Carl Gundel, author of Liberty BASIC
> http://www.libertybasic.com
>
>  ..... Original Message .......
> On Tue, 07 Mar 2006 09:42:25 -0500 Alan Knight <[hidden email]> wrote:
>> At 08:54 AM 3/7/2006, Christian Haider wrote:
>>> I am using the base.im since it was introduced...
>>>
>>> I understand that the packager is more careful now and that is ok for  
>>> the
>>> newcomer. But in the case where it worked before, it just means that it
>>> includes many things now that are obviously not needed.
>>
>> I don't think I'd consider it quite that way. In the case before it  
>> would have been including only part of something, so it would have  
>> obviously not worked, except that the code was never run. So before it  
>> also included many things that were obviously not needed, just not  
>> enough to make them actually work. So, where the old one would leave  
>> half of, say, the settings framework in, the new one will leave all of  
>> it, so settings will actually work. If you want to not include them,  
>> then it's much easier than it was to look at what's been included or  
>> excluded and remove particular packages, either within RTP, or by just  
>> not having them in the image to start with. And of course in many  
>> circumtsnaces the old version left out many things that obviously were  
>> needed.
>>
>> The only thing I'm aware of that was actually added to the base image  
>> in 7.4 were the Standard IO Streams.
>>
>> So if you're just using the same settings as previously, it would  
>> probably be a good idea to review your settings, since the entire  
>> organizational principle for RTP changed, and it's much easier to  
>> exclude, e.g. class extensions which may drag along large extra chunks  
>> of code.
>>
>>> There is a nice way to tell the packager which classes and selectors  
>>> are to
>>> be included (#dynamicallyReferencedClasses and friends). Could Cincom  
>>> think
>>> about something along the lines to exclude things to be packaged (maybe
>>> #notReferencedXXX and friends).
>>
>> That seems reasonable, although I think it would mostly only be useful  
>> for user code. For libraries, I don't really know what will and won't  
>> be used. And if I do know that something is definitely not going to be  
>> needed at runtime, rather than annotating the code to indicate that it  
>> should be stripped, I think I would be better off to put the  
>> development-time and run-time code in different packages.
>>
>> Perhaps a more useful annotation would be one on packages to tell RTP  
>> that this package should by default, be unloaded before stripping. Or  
>> if we had a code annotation, to treat it as meaning that a particular  
>> reference should not be counted, e.g. this class uses a symbol that  
>> might be a class name in other circumstances, but I know it's not used  
>> that way.
>>
>>
>>> Cheers,
>>>        Christian
>>>
>>>> -----Ursprüngliche Nachricht-----
>>>> Von: James Robertson [mailto:[hidden email]]
>>>> Gesendet: Dienstag, 7. März 2006 13:43
>>>> An: [hidden email]
>>>> Betreff: Re: Runtime obesity
>>>>
>>>>
>>>> I discussed this with Alan, who did a lot of work on the RTP
>>>> this last
>>>> release.  He'll correct me if I miss something :)
>>>>
>>>> As I understand it, the older rtp was stripping out things that
>>>> realistically should not have been stripped out, while the
>>>> newer one is
>>>> more careful.
>>>>
>>>> Something you might try: In preview/packaging, you'll find
>>>> base.im.  The
>>>> stock visual.im is over 11 MB, while base.im is just under 9.
>>>>
>>>> At 02:45 AM 3/7/2006, you wrote:
>>>> >Hi,
>>>> >



--
Charles A. Monteiro

Reply | Threaded
Open this post in threaded view
|

Re: AW: Runtime obesity

Carl Gundel
I think that's a fine idea.  Cincom should have someone participate in
the BOF too.

-Carl

On Mar 7, 2006, at 12:47 PM, Charles A. Monteiro wrote:

> I think it would be more interesting to organize a BOF where all of us
> that are attempting "build up" Smalltalk Runtime Environment
> approaches to deployment get together and talk about what works , what
> does not, how to get a smaller base.im than the 8mb provided, although
> I can appreciate that you Carl may want as small an image as possible
> and therefore stripping I want a smaller SRE , I also would not mind
> talking about how to securely load parcels, authenticate parcels etc.
>
> So I'm game if anybody is interested, Bruce perhaps :)

Reply | Threaded
Open this post in threaded view
|

Re: AW: Runtime obesity

Bruce Badger
In reply to this post by Charles A. Monteiro-2
On 08/03/06, Charles A. Monteiro <[hidden email]> wrote:

> So I'm game if anybody is interested, Bruce perhaps :)

Sure!

I think a build-up BOF would be fairly short, though:

 Users: "We want a smaller better understood base.im"

 Cincom: "We know.  We're working on it."

 All: "Beer!"

Perhaps a BOF on "Deployment" would be the way to go.  Then we can
talk about the base.im for the first 10 seconds, and then talk about
RTP and perhaps get input from people using other Smalltalk
implementations too.

All the best,
   Bruce
--
Make the most of your skills - with OpenSkills
http://www.openskills.org/

Reply | Threaded
Open this post in threaded view
|

Re: AW: Runtime obesity

Alejandro F. Reimondo
Hi all,

An interesting path to be explored can be the generation
 of images inside running images (called image gestation).

I have built many images and cross-VM images
 (e.g. building new smalltalk 3D ambiences for
 entertrainment industry, when we didn´t have
 a running VM), resulting in interesting images
 from 80kb -for helloWorld on console- to
 complete running application environments.

The technique start from gestation of a minimum
 environment inside a running host; and use the
 host´s tools (browsers and inspectors, & automated
 nutrition tools) to put methods inside the child image.
Then a system tracer is run to dump child image
 contents (patching and cutting references to host
 image) and doing custom primitive transforms if
 required (e.g. when generating cross image development)

I have encountered that building images by gestation
 is much more easy than shrinking running images;
 because you build the image in a constructive
 manner (on real running requirements) and not by
 reduction.

One of the most valuable nutrient tools has been
 method tracers that register method activations.
They can be used to record the methods requiered
 while evaluating an expression in the host image,
 and then inject the collected methods (and classes)
 onto the child image.

More details and samples can be found at
 http://www.aleReimondo.com.ar/ImageGestation

best,
Ale.


----- Original Message -----
From: "Bruce Badger" <[hidden email]>
To: "Vwnc" <[hidden email]>
Sent: Tuesday, March 07, 2006 5:24 PM
Subject: Re: AW: Runtime obesity


On 08/03/06, Charles A. Monteiro <[hidden email]> wrote:

> So I'm game if anybody is interested, Bruce perhaps :)

Sure!

I think a build-up BOF would be fairly short, though:

 Users: "We want a smaller better understood base.im"

 Cincom: "We know.  We're working on it."

 All: "Beer!"

Perhaps a BOF on "Deployment" would be the way to go.  Then we can
talk about the base.im for the first 10 seconds, and then talk about
RTP and perhaps get input from people using other Smalltalk
implementations too.

All the best,
   Bruce
--
Make the most of your skills - with OpenSkills
http://www.openskills.org/

Reply | Threaded
Open this post in threaded view
|

Re: AW: Runtime obesity

Alejandro F. Reimondo
Hi (again),

My last email was on image gestation...
 e.g. the use of the objects in the runing environment
 to build a new environment from bigbang objects.
Another interesting point to explore is the creation
 of a custom VM to run the generated images...
The tool that generates the new image and dump
 it on disk, also knows what primitives are really
 requiered and, if we have a model of the VM in
 the image, we can also write the VM code adapted
 to minimum requitrements for generated image.
The reduction of VM size (and customization of VM
 according to runtime schemas) is as important as
 image size when images are reduced.

best,
Ale.



----- Original Message -----
From: "Alejandro F. Reimondo" <[hidden email]>
To: "Bruce Badger" <[hidden email]>
Cc: "smalltalking" <[hidden email]>; <[hidden email]>
Sent: Tuesday, March 07, 2006 6:32 PM
Subject: Re: AW: Runtime obesity


> Hi all,
>
> An interesting path to be explored can be the generation
>  of images inside running images (called image gestation).
>
> I have built many images and cross-VM images
>  (e.g. building new smalltalk 3D ambiences for
>  entertrainment industry, when we didn´t have
>  a running VM), resulting in interesting images
>  from 80kb -for helloWorld on console- to
>  complete running application environments.
>
> The technique start from gestation of a minimum
>  environment inside a running host; and use the
>  host´s tools (browsers and inspectors, & automated
>  nutrition tools) to put methods inside the child image.
> Then a system tracer is run to dump child image
>  contents (patching and cutting references to host
>  image) and doing custom primitive transforms if
>  required (e.g. when generating cross image development)
>
> I have encountered that building images by gestation
>  is much more easy than shrinking running images;
>  because you build the image in a constructive
>  manner (on real running requirements) and not by
>  reduction.
>
> One of the most valuable nutrient tools has been
>  method tracers that register method activations.
> They can be used to record the methods requiered
>  while evaluating an expression in the host image,
>  and then inject the collected methods (and classes)
>  onto the child image.
>
> More details and samples can be found at
>  http://www.aleReimondo.com.ar/ImageGestation
>
> best,
> Ale.
>
>
> ----- Original Message -----
> From: "Bruce Badger" <[hidden email]>
> To: "Vwnc" <[hidden email]>
> Sent: Tuesday, March 07, 2006 5:24 PM
> Subject: Re: AW: Runtime obesity
>
>
> On 08/03/06, Charles A. Monteiro <[hidden email]> wrote:
>
> > So I'm game if anybody is interested, Bruce perhaps :)
>
> Sure!
>
> I think a build-up BOF would be fairly short, though:
>
>  Users: "We want a smaller better understood base.im"
>
>  Cincom: "We know.  We're working on it."
>
>  All: "Beer!"
>
> Perhaps a BOF on "Deployment" would be the way to go.  Then we can
> talk about the base.im for the first 10 seconds, and then talk about
> RTP and perhaps get input from people using other Smalltalk
> implementations too.
>
> All the best,
>    Bruce
> --
> Make the most of your skills - with OpenSkills
> http://www.openskills.org/
>

Reply | Threaded
Open this post in threaded view
|

Re: AW: Runtime obesity

Carl Gundel
In reply to this post by Alejandro F. Reimondo
Alejandro,

This seems very similar to what Craig Latta is doing with Spoon.  Both
your work and his are on Squeak.  Any thoughts on how hard would this
be to implement on VW?

-Carl

On Mar 7, 2006, at 4:32 PM, Alejandro F. Reimondo wrote:

> Hi all,
>
> An interesting path to be explored can be the generation
>  of images inside running images (called image gestation).
>
> I have built many images and cross-VM images
>  (e.g. building new smalltalk 3D ambiences for
>  entertrainment industry, when we didn´t have
>  a running VM), resulting in interesting images
>  from 80kb -for helloWorld on console- to
>  complete running application environments.
>
> The technique start from gestation of a minimum
>  environment inside a running host; and use the
>  host´s tools (browsers and inspectors, & automated
>  nutrition tools) to put methods inside the child image.
> Then a system tracer is run to dump child image
>  contents (patching and cutting references to host
>  image) and doing custom primitive transforms if
>  required (e.g. when generating cross image development)
>
> I have encountered that building images by gestation
>  is much more easy than shrinking running images;
>  because you build the image in a constructive
>  manner (on real running requirements) and not by
>  reduction.
>
> One of the most valuable nutrient tools has been
>  method tracers that register method activations.
> They can be used to record the methods requiered
>  while evaluating an expression in the host image,
>  and then inject the collected methods (and classes)
>  onto the child image.
>
> More details and samples can be found at
>  http://www.aleReimondo.com.ar/ImageGestation
>
> best,
> Ale.

Reply | Threaded
Open this post in threaded view
|

Re[2]: AW: Runtime obesity

Michael Lucas-Smith
In reply to this post by Charles A. Monteiro-2
I'd definitely be attending that BOF. I have a lot of experience with
this stuff now and I can throw out some real numbers from our
experience packaging XML WithStyle.

Cheers,
Michael

> I think it would be more interesting to organize a BOF where all of us
> that are attempting "build up" Smalltalk Runtime Environment approaches to
> deployment get together and talk about what works , what does not, how to
> get a smaller base.im than the 8mb provided, although I can appreciate
> that you Carl may want as small an image as possible and therefore  
> stripping I want a smaller SRE , I also would not mind talking about how
> to securely load parcels, authenticate parcels etc.

> So I'm game if anybody is interested, Bruce perhaps :)

> -Charles

> On Tue, 07 Mar 2006 04:06:00 -0500, Carl Gundel <[hidden email]>
> wrote:

>> Perhaps it would be a good idea to have a BOF for the runtime packager  
>> at Smalltalk Solutions.  A detailed walkthrough of how to best use it  
>> would be very helpful.  Or, maybe just make a screencast and put it on  
>> the web.  I know there is a very simple example screencast by James, but  
>> an in-depth one would be great.  There's a lot of stuff to know about  
>> the RTP.   :-)
>>
>> -Carl Gundel, author of Liberty BASIC
>> http://www.libertybasic.com
>>
>>  ..... Original Message .......
>> On Tue, 07 Mar 2006 09:42:25 -0500 Alan Knight <[hidden email]> wrote:
>>> At 08:54 AM 3/7/2006, Christian Haider wrote:
>>>> I am using the base.im since it was introduced...
>>>>
>>>> I understand that the packager is more careful now and that is ok for  
>>>> the
>>>> newcomer. But in the case where it worked before, it just means that it
>>>> includes many things now that are obviously not needed.
>>>
>>> I don't think I'd consider it quite that way. In the case before it  
>>> would have been including only part of something, so it would have  
>>> obviously not worked, except that the code was never run. So before it  
>>> also included many things that were obviously not needed, just not  
>>> enough to make them actually work. So, where the old one would leave  
>>> half of, say, the settings framework in, the new one will leave all of  
>>> it, so settings will actually work. If you want to not include them,  
>>> then it's much easier than it was to look at what's been included or  
>>> excluded and remove particular packages, either within RTP, or by just  
>>> not having them in the image to start with. And of course in many  
>>> circumtsnaces the old version left out many things that obviously were  
>>> needed.
>>>
>>> The only thing I'm aware of that was actually added to the base image  
>>> in 7.4 were the Standard IO Streams.
>>>
>>> So if you're just using the same settings as previously, it would  
>>> probably be a good idea to review your settings, since the entire  
>>> organizational principle for RTP changed, and it's much easier to  
>>> exclude, e.g. class extensions which may drag along large extra chunks  
>>> of code.
>>>
>>>> There is a nice way to tell the packager which classes and selectors  
>>>> are to
>>>> be included (#dynamicallyReferencedClasses and friends). Could Cincom  
>>>> think
>>>> about something along the lines to exclude things to be packaged (maybe
>>>> #notReferencedXXX and friends).
>>>
>>> That seems reasonable, although I think it would mostly only be useful  
>>> for user code. For libraries, I don't really know what will and won't  
>>> be used. And if I do know that something is definitely not going to be  
>>> needed at runtime, rather than annotating the code to indicate that it  
>>> should be stripped, I think I would be better off to put the  
>>> development-time and run-time code in different packages.
>>>
>>> Perhaps a more useful annotation would be one on packages to tell RTP  
>>> that this package should by default, be unloaded before stripping. Or  
>>> if we had a code annotation, to treat it as meaning that a particular  
>>> reference should not be counted, e.g. this class uses a symbol that  
>>> might be a class name in other circumstances, but I know it's not used  
>>> that way.
>>>
>>>
>>>> Cheers,
>>>>        Christian
>>>>
>>>>> -----Ursprüngliche Nachricht-----
>>>>> Von: James Robertson [mailto:[hidden email]]
>>>>> Gesendet: Dienstag, 7. März 2006 13:43
>>>>> An: [hidden email]
>>>>> Betreff: Re: Runtime obesity
>>>>>
>>>>>
>>>>> I discussed this with Alan, who did a lot of work on the RTP
>>>>> this last
>>>>> release.  He'll correct me if I miss something :)
>>>>>
>>>>> As I understand it, the older rtp was stripping out things that
>>>>> realistically should not have been stripped out, while the
>>>>> newer one is
>>>>> more careful.
>>>>>
>>>>> Something you might try: In preview/packaging, you'll find
>>>>> base.im.  The
>>>>> stock visual.im is over 11 MB, while base.im is just under 9.
>>>>>
>>>>> At 02:45 AM 3/7/2006, you wrote:
>>>>> >Hi,
>>>>> >




Reply | Threaded
Open this post in threaded view
|

Re: Re[2]: AW: Runtime obesity

Travis Griggs
On Mar 7, 2006, at 15:02, Michael Lucas-Smith wrote:

I'd definitely be attending that BOF. I have a lot of experience with

this stuff now and I can throw out some real numbers from our

experience packaging XML WithStyle.


Cheers,

Michael


I think it would be more interesting to organize a BOF where all of us

that are attempting "build up" Smalltalk Runtime Environment approaches to

deployment get together and talk about what works , what does not, how to

get a smaller base.im than the 8mb provided, although I can appreciate

that you Carl may want as small an image as possible and therefore  

stripping I want a smaller SRE , I also would not mind talking about how

to securely load parcels, authenticate parcels etc.


So I'm game if anybody is interested, Bruce perhaps :)


I'll definitely be at that BOF too.

--
Travis Griggs
Objologist
"I think that we should be men first, and subjects afterward." - Henry David Thoreau






DISCLAIMER: This email is bound by the terms and conditions
described at
http://www.key.net/disclaimer.htm

Reply | Threaded
Open this post in threaded view
|

Re: AW: Runtime obesity

Alejandro F. Reimondo
In reply to this post by Carl Gundel
Hi Carl,

>Any thoughts on how hard would this
>be to implement on VW?

One of the requirements of my work is that it must
 a exist a SystemTracer or any other form to dump
 a new image from the running system.
The SystemTracer was present in smalltalk/80
 and Digitalk Smalltalks. New version of commertial
 smalltalks remove this facility prohibiting the users
 to build images from runing object system, truncating
 the power of the object environment to build "applications"
 and "programs", instead of real object systems (organic
 software); and prohibiting to make severe changes
 to the environment.

I must implement the gestation framework using
 squeak because VisualSmalltalk (the platform I use to
 make my essays) has a severe limitation: it does not
 let the user to build images nor core library SLL
 (e.g. parcels). It was a limitation imposed by the
 provider in VS version that reduced the power
 of people using the platform and force us to
 use non-commertial platforms like Squeak.
The gestation framework is entirelly written
 in Smalltalk, and does not requiere any primitive
 support (only method activation tracer requieres
 a VM change, but it is only required to automate
 nutrition of the child image)

best,
Ale.



----- Original Message -----
From: "Carl Gundel" <[hidden email]>
To: "'Vwnc'" <[hidden email]>
Sent: Tuesday, March 07, 2006 7:47 PM
Subject: Re: AW: Runtime obesity


Alejandro,

This seems very similar to what Craig Latta is doing with Spoon.  Both
your work and his are on Squeak.  Any thoughts on how hard would this
be to implement on VW?

-Carl

On Mar 7, 2006, at 4:32 PM, Alejandro F. Reimondo wrote:

> Hi all,
>
> An interesting path to be explored can be the generation
>  of images inside running images (called image gestation).
>
> I have built many images and cross-VM images
>  (e.g. building new smalltalk 3D ambiences for
>  entertrainment industry, when we didn´t have
>  a running VM), resulting in interesting images
>  from 80kb -for helloWorld on console- to
>  complete running application environments.
>
> The technique start from gestation of a minimum
>  environment inside a running host; and use the
>  host´s tools (browsers and inspectors, & automated
>  nutrition tools) to put methods inside the child image.
> Then a system tracer is run to dump child image
>  contents (patching and cutting references to host
>  image) and doing custom primitive transforms if
>  required (e.g. when generating cross image development)
>
> I have encountered that building images by gestation
>  is much more easy than shrinking running images;
>  because you build the image in a constructive
>  manner (on real running requirements) and not by
>  reduction.
>
> One of the most valuable nutrient tools has been
>  method tracers that register method activations.
> They can be used to record the methods requiered
>  while evaluating an expression in the host image,
>  and then inject the collected methods (and classes)
>  onto the child image.
>
> More details and samples can be found at
>  http://www.aleReimondo.com.ar/ImageGestation
>
> best,
> Ale.

Reply | Threaded
Open this post in threaded view
|

Re: Re[2]: AW: Runtime obesity

Charles A. Monteiro-2
In reply to this post by Michael Lucas-Smith
anybody that wants to attend this BOF can send email to me personally at:  
[hidden email], I'll keep a list. I'll also talk to the organizers  
and try to figure what we need to do upfront so that we don't have to  
scramble last minute, if we are lucky maybe we can even get a room booked  
or figure out that we need to go to a Starbucks or whatever. I think we  
should come up with an outline of what the issues are etc, so that the BOF  
is not just total improv. I'll brainstorm something. I'll forward any info  
 from the organizers.

If we do this I think we have a much better chance of having a productive  
BOF that may generate some good docs who knows may be some code.

-Charles

On Tue, 07 Mar 2006 18:02:05 -0500, Michael Lucas-Smith  
<[hidden email]> wrote:

> I'd definitely be attending that BOF. I have a lot of experience with
> this stuff now and I can throw out some real numbers from our
> experience packaging XML WithStyle.
>
> Cheers,
> Michael
>
>> I think it would be more interesting to organize a BOF where all of us
>> that are attempting "build up" Smalltalk Runtime Environment approaches  
>> to
>> deployment get together and talk about what works , what does not, how  
>> to
>> get a smaller base.im than the 8mb provided, although I can appreciate
>> that you Carl may want as small an image as possible and therefore
>> stripping I want a smaller SRE , I also would not mind talking about how
>> to securely load parcels, authenticate parcels etc.
>
>> So I'm game if anybody is interested, Bruce perhaps :)
>
>> -Charles
>
>> On Tue, 07 Mar 2006 04:06:00 -0500, Carl Gundel <[hidden email]>
>> wrote:
>
>>> Perhaps it would be a good idea to have a BOF for the runtime packager
>>> at Smalltalk Solutions.  A detailed walkthrough of how to best use it
>>> would be very helpful.  Or, maybe just make a screencast and put it on
>>> the web.  I know there is a very simple example screencast by James,  
>>> but
>>> an in-depth one would be great.  There's a lot of stuff to know about
>>> the RTP.   :-)
>>>
>>> -Carl Gundel, author of Liberty BASIC
>>> http://www.libertybasic.com
>>>
>>>  ..... Original Message .......
>>> On Tue, 07 Mar 2006 09:42:25 -0500 Alan Knight <[hidden email]> wrote:
>>>> At 08:54 AM 3/7/2006, Christian Haider wrote:
>>>>> I am using the base.im since it was introduced...
>>>>>
>>>>> I understand that the packager is more careful now and that is ok for
>>>>> the
>>>>> newcomer. But in the case where it worked before, it just means that  
>>>>> it
>>>>> includes many things now that are obviously not needed.
>>>>
>>>> I don't think I'd consider it quite that way. In the case before it
>>>> would have been including only part of something, so it would have
>>>> obviously not worked, except that the code was never run. So before it
>>>> also included many things that were obviously not needed, just not
>>>> enough to make them actually work. So, where the old one would leave
>>>> half of, say, the settings framework in, the new one will leave all of
>>>> it, so settings will actually work. If you want to not include them,
>>>> then it's much easier than it was to look at what's been included or
>>>> excluded and remove particular packages, either within RTP, or by just
>>>> not having them in the image to start with. And of course in many
>>>> circumtsnaces the old version left out many things that obviously were
>>>> needed.
>>>>
>>>> The only thing I'm aware of that was actually added to the base image
>>>> in 7.4 were the Standard IO Streams.
>>>>
>>>> So if you're just using the same settings as previously, it would
>>>> probably be a good idea to review your settings, since the entire
>>>> organizational principle for RTP changed, and it's much easier to
>>>> exclude, e.g. class extensions which may drag along large extra chunks
>>>> of code.
>>>>
>>>>> There is a nice way to tell the packager which classes and selectors
>>>>> are to
>>>>> be included (#dynamicallyReferencedClasses and friends). Could Cincom
>>>>> think
>>>>> about something along the lines to exclude things to be packaged  
>>>>> (maybe
>>>>> #notReferencedXXX and friends).
>>>>
>>>> That seems reasonable, although I think it would mostly only be useful
>>>> for user code. For libraries, I don't really know what will and won't
>>>> be used. And if I do know that something is definitely not going to be
>>>> needed at runtime, rather than annotating the code to indicate that it
>>>> should be stripped, I think I would be better off to put the
>>>> development-time and run-time code in different packages.
>>>>
>>>> Perhaps a more useful annotation would be one on packages to tell RTP
>>>> that this package should by default, be unloaded before stripping. Or
>>>> if we had a code annotation, to treat it as meaning that a particular
>>>> reference should not be counted, e.g. this class uses a symbol that
>>>> might be a class name in other circumstances, but I know it's not used
>>>> that way.
>>>>
>>>>
>>>>> Cheers,
>>>>>        Christian
>>>>>
>>>>>> -----Ursprüngliche Nachricht-----
>>>>>> Von: James Robertson [mailto:[hidden email]]
>>>>>> Gesendet: Dienstag, 7. März 2006 13:43
>>>>>> An: [hidden email]
>>>>>> Betreff: Re: Runtime obesity
>>>>>>
>>>>>>
>>>>>> I discussed this with Alan, who did a lot of work on the RTP
>>>>>> this last
>>>>>> release.  He'll correct me if I miss something :)
>>>>>>
>>>>>> As I understand it, the older rtp was stripping out things that
>>>>>> realistically should not have been stripped out, while the
>>>>>> newer one is
>>>>>> more careful.
>>>>>>
>>>>>> Something you might try: In preview/packaging, you'll find
>>>>>> base.im.  The
>>>>>> stock visual.im is over 11 MB, while base.im is just under 9.
>>>>>>
>>>>>> At 02:45 AM 3/7/2006, you wrote:
>>>>>> >Hi,
>>>>>> >
>
>
>



--
Charles A. Monteiro

Reply | Threaded
Open this post in threaded view
|

Re: AW: Runtime obesity

Charles A. Monteiro-2
In reply to this post by Bruce Badger
well, what I had in mind did not involve Cincom :) , I simply don't want  
to wait, in a way this would be more like a CampSmalltalk i.e. not if we  
would actually code but it would be more about how can we make this a  
better base.im. Combine ideas, check out what Terry Raymond has done with  
his stripping thing, check out what Michael has etc talk about deployment  
issues across a network etc.

I actually don't think it would be short at all.

-Charles

On Tue, 07 Mar 2006 15:24:13 -0500, Bruce Badger <[hidden email]>  
wrote:

> On 08/03/06, Charles A. Monteiro <[hidden email]> wrote:
>
>> So I'm game if anybody is interested, Bruce perhaps :)
>
> Sure!
>
> I think a build-up BOF would be fairly short, though:
>
>  Users: "We want a smaller better understood base.im"
>
>  Cincom: "We know.  We're working on it."
>
>  All: "Beer!"
>
> Perhaps a BOF on "Deployment" would be the way to go.  Then we can
> talk about the base.im for the first 10 seconds, and then talk about
> RTP and perhaps get input from people using other Smalltalk
> implementations too.
>
> All the best,
>    Bruce
> --
> Make the most of your skills - with OpenSkills
> http://www.openskills.org/



--
Charles A. Monteiro

Reply | Threaded
Open this post in threaded view
|

Re: AW: Runtime obesity

Charles A. Monteiro-2
In reply to this post by Alejandro F. Reimondo
Alejandro:

I think many of us would very much enjoy speaking with you regarding this  
subject so I hope you can make it to Smalltalk Solutions this year and  
attend the BOF. Also I would suggest that this would be a great topic for  
a presentation at a future Smalltalk Solutions so I would encourage you to  
submit next year.

Saludos,

Charles

-

On Tue, 07 Mar 2006 16:53:12 -0500, Alejandro F. Reimondo  
<[hidden email]> wrote:

> Hi (again),
>
> My last email was on image gestation...
>  e.g. the use of the objects in the runing environment
>  to build a new environment from bigbang objects.
> Another interesting point to explore is the creation
>  of a custom VM to run the generated images...
> The tool that generates the new image and dump
>  it on disk, also knows what primitives are really
>  requiered and, if we have a model of the VM in
>  the image, we can also write the VM code adapted
>  to minimum requitrements for generated image.
> The reduction of VM size (and customization of VM
>  according to runtime schemas) is as important as
>  image size when images are reduced.
>
> best,
> Ale.
>
>
>
> ----- Original Message -----
> From: "Alejandro F. Reimondo" <[hidden email]>
> To: "Bruce Badger" <[hidden email]>
> Cc: "smalltalking" <[hidden email]>; <[hidden email]>
> Sent: Tuesday, March 07, 2006 6:32 PM
> Subject: Re: AW: Runtime obesity
>
>
>> Hi all,
>>
>> An interesting path to be explored can be the generation
>>  of images inside running images (called image gestation).
>>
>> I have built many images and cross-VM images
>>  (e.g. building new smalltalk 3D ambiences for
>>  entertrainment industry, when we didn´t have
>>  a running VM), resulting in interesting images
>>  from 80kb -for helloWorld on console- to
>>  complete running application environments.
>>
>> The technique start from gestation of a minimum
>>  environment inside a running host; and use the
>>  host´s tools (browsers and inspectors, & automated
>>  nutrition tools) to put methods inside the child image.
>> Then a system tracer is run to dump child image
>>  contents (patching and cutting references to host
>>  image) and doing custom primitive transforms if
>>  required (e.g. when generating cross image development)
>>
>> I have encountered that building images by gestation
>>  is much more easy than shrinking running images;
>>  because you build the image in a constructive
>>  manner (on real running requirements) and not by
>>  reduction.
>>
>> One of the most valuable nutrient tools has been
>>  method tracers that register method activations.
>> They can be used to record the methods requiered
>>  while evaluating an expression in the host image,
>>  and then inject the collected methods (and classes)
>>  onto the child image.
>>
>> More details and samples can be found at
>>  http://www.aleReimondo.com.ar/ImageGestation
>>
>> best,
>> Ale.
>>
>>
>> ----- Original Message -----
>> From: "Bruce Badger" <[hidden email]>
>> To: "Vwnc" <[hidden email]>
>> Sent: Tuesday, March 07, 2006 5:24 PM
>> Subject: Re: AW: Runtime obesity
>>
>>
>> On 08/03/06, Charles A. Monteiro <[hidden email]> wrote:
>>
>> > So I'm game if anybody is interested, Bruce perhaps :)
>>
>> Sure!
>>
>> I think a build-up BOF would be fairly short, though:
>>
>>  Users: "We want a smaller better understood base.im"
>>
>>  Cincom: "We know.  We're working on it."
>>
>>  All: "Beer!"
>>
>> Perhaps a BOF on "Deployment" would be the way to go.  Then we can
>> talk about the base.im for the first 10 seconds, and then talk about
>> RTP and perhaps get input from people using other Smalltalk
>> implementations too.
>>
>> All the best,
>>    Bruce
>> --
>> Make the most of your skills - with OpenSkills
>> http://www.openskills.org/
>>



--
Charles A. Monteiro

Reply | Threaded
Open this post in threaded view
|

Re: AW: Runtime obesity

Charles A. Monteiro-2
In reply to this post by Alejandro F. Reimondo
Alejandro:

I am not familiar with the SystemTracer and I'm curious how it is  
different from "snapshoting" to a new image. Is it that with a  
SystemTracer one could actually "snapshot" a subset of the current image?

Any info is appreciated.

gracias,

-Charles

On Wed, 08 Mar 2006 09:10:36 -0500, Alejandro F. Reimondo  
<[hidden email]> wrote:

> Hi Carl,
>
>> Any thoughts on how hard would this
>> be to implement on VW?
>
> One of the requirements of my work is that it must
>  a exist a SystemTracer or any other form to dump
>  a new image from the running system.
> The SystemTracer was present in smalltalk/80
>  and Digitalk Smalltalks. New version of commertial
>  smalltalks remove this facility prohibiting the users
>  to build images from runing object system, truncating
>  the power of the object environment to build "applications"
>  and "programs", instead of real object systems (organic
>  software); and prohibiting to make severe changes
>  to the environment.
>
> I must implement the gestation framework using
>  squeak because VisualSmalltalk (the platform I use to
>  make my essays) has a severe limitation: it does not
>  let the user to build images nor core library SLL
>  (e.g. parcels). It was a limitation imposed by the
>  provider in VS version that reduced the power
>  of people using the platform and force us to
>  use non-commertial platforms like Squeak.
> The gestation framework is entirelly written
>  in Smalltalk, and does not requiere any primitive
>  support (only method activation tracer requieres
>  a VM change, but it is only required to automate
>  nutrition of the child image)
>
> best,
> Ale.
>
>
>
> ----- Original Message -----
> From: "Carl Gundel" <[hidden email]>
> To: "'Vwnc'" <[hidden email]>
> Sent: Tuesday, March 07, 2006 7:47 PM
> Subject: Re: AW: Runtime obesity
>
>
> Alejandro,
>
> This seems very similar to what Craig Latta is doing with Spoon.  Both
> your work and his are on Squeak.  Any thoughts on how hard would this
> be to implement on VW?
>
> -Carl
>
> On Mar 7, 2006, at 4:32 PM, Alejandro F. Reimondo wrote:
>
>> Hi all,
>>
>> An interesting path to be explored can be the generation
>>  of images inside running images (called image gestation).
>>
>> I have built many images and cross-VM images
>>  (e.g. building new smalltalk 3D ambiences for
>>  entertrainment industry, when we didn´t have
>>  a running VM), resulting in interesting images
>>  from 80kb -for helloWorld on console- to
>>  complete running application environments.
>>
>> The technique start from gestation of a minimum
>>  environment inside a running host; and use the
>>  host´s tools (browsers and inspectors, & automated
>>  nutrition tools) to put methods inside the child image.
>> Then a system tracer is run to dump child image
>>  contents (patching and cutting references to host
>>  image) and doing custom primitive transforms if
>>  required (e.g. when generating cross image development)
>>
>> I have encountered that building images by gestation
>>  is much more easy than shrinking running images;
>>  because you build the image in a constructive
>>  manner (on real running requirements) and not by
>>  reduction.
>>
>> One of the most valuable nutrient tools has been
>>  method tracers that register method activations.
>> They can be used to record the methods requiered
>>  while evaluating an expression in the host image,
>>  and then inject the collected methods (and classes)
>>  onto the child image.
>>
>> More details and samples can be found at
>>  http://www.aleReimondo.com.ar/ImageGestation
>>
>> best,
>> Ale.



--
Charles A. Monteiro

Reply | Threaded
Open this post in threaded view
|

Re: AW: Runtime obesity

Colin Putney

On Mar 8, 2006, at 10:47 AM, Charles A. Monteiro wrote:

> I am not familiar with the SystemTracer and I'm curious how it is  
> different from "snapshoting" to a new image. Is it that with a  
> SystemTracer one could actually "snapshot" a subset of the current  
> image?

Basically, the SystemTracer walks over some objects and writes them  
to an image file. It's used for situations where a normal snapshot  
isn't quite what you want. With Squeak it's used to convert between  
image formats: the original conversion from Apple Smalltalk to Squeak  
was done this way, for example, and more recently to convert images  
for use with 64-bit VMs.

If I understand Alejandro's work correctly, he is doing a snapshot of  
a subset of the system. He builds up an image by adding objects to  
it: a SystemDictionary, classes, methods, "cannonical" objects like  
true, false, and nil, processes and their activation contexts, etc.  
Then he runs a SystemTracer over these objects, and writes them out  
to an image file.

Alejandro, do you also convert to VisualSmalltalk's image format when  
you run the SystemTracer?

Colin