On Wed, Dec 8, 2010 at 9:05 PM, Alexandre Bergel <alexandre@bergel.eu> wrote:
>> It look cool!
>> Is this a better ImageSegment?
>
> there is no VM code implied and you do not get all the problems of imageSegment.
> You should ask is it better than SmartRefStreams.
> Yes
> Now the code has not been optimized

Ah ok! How to deal with stubs is the difference with ImageSegment then.


The difference is that in Fuel there is no managment for "shared objects". Fuel is not for swapping (there are no stubs/proxies and becomes), and the idea is that you write on a file, ALL (not only those objects that are ONLY accessible by the roots, like in ImageSegment) the objects reachable from user defined roots.

Fuel is similar to ReferenceStream and subclasses, a XML serializer, or any serializers, etc...but MOSTLY, to Parcels. It is very similar to VisualWorks parcel.

Another important thing is that it is binary. The idea is that maybe in a future we have a Monticello that doesn't need a mcz (code) + Compiler, but instead, just load binary code (fuel files). This would be muuuch faster that current Monticello, and even more, for minimal images, we wouldn't need a Compiler.
Finally, Fuel is designed (like Parcels) to be very fast at loading time :)

Cheers

Mariano


It looks exciting!

Alexandre


>
>>
>> Alexandre
>>
>>
>> On 8 Dec 2010, at 13:50, Martin Dias wrote:
>>
>>> Hi all
>>>
>>> Last months I and Tristan have been working on Fuel project, an object
>>> binary serialization tool. The idea is that objects are much more
>>> times loaded than stored, therefore it is worth to spend time while
>>> storing in order to have faster loading and user experience. We
>>> present an implementation of a pickle format that is based on
>>> clustering similar objects.
>>>
>>> There is a summary of the project below, but more complete information
>>> is available here: http://rmod.lille.inria.fr/web/pier/software/Fuel
>>>
>>> The implementation still needs a lot of work to be really useful,
>>> optimizations should be done, but we'll be glad to get feedback of the
>>> community.
>>>
>>>
>>> = Pickle format =
>>>
>>> The pickle format and the serialization algorithm main idea, is
>>> explained in this slides:
>>>
>>> http://www.slideshare.net/tinchodias/fuel-serialization-in-an-example
>>>
>>>
>>> = Current features =
>>>
>>> - Class shape changing (when a variable has been added, or removed, or
>>> its index changed)
>>> - Serialize most of the basic objects.
>>> - Serialize (almost) any CompiledMethod
>>> - Detection of global or class variables
>>> - Support for cyclic object graphs
>>> - Tests
>>>
>>>
>>> = Next steps =
>>>
>>> - Improve version checking.
>>> - Optimize performance.
>>> - Serialize more kinds of objects:
>>> -- Class with its complete description.
>>> -- Method contexts
>>> -- Active block closures
>>> -- Continuation
>>> - Some improvements for the user:
>>> -- pre and post actions to be executed.
>>> -- easily say 'this object is singleton'.
>>> - Partial loading of a stored graph.
>>> - Fast statistics/brief info extraction of a stored graph.
>>> - ConfigurationOfFuel.
>>> - Be able to deploy materialization behavior only (independent from
>>> the serialization behavior)
>>>
>>>
>>> = Download =
>>>
>>> In a Pharo 1.1 or 1.1.1 evaluate:
>>>
>>> Gofer new
>>> � � squeaksource: 'Fuel';
>>> � � version: 'Fuel-MartinDias.74';
>>> � � version: 'FuelBenchmarks-MartinDias.4';
>>> � � load.
>>>
>>>
>>> = Benchmarks =
>>>
>>> You can run benchmarks executing this line (results in Transcript):
>>>
>>> FLBenchmarks newBasic run.
>>>
>>>
>>> Thank you!
>>> Martin Dias
>>>
>>
>> --
>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>> Alexandre Bergel �http://www.bergel.eu
>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>
>>
>>
>>
>>
>>
>
>

--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel �http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.