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

Philippe Marschall philippe.marschall at gmail.com
Wed May 25 00:39:58 EDT 2011

2011/5/24 Martin Dias <tinchodias at gmail.com>:
> Hi folks. I am really happy to announce that ESUG is sponsoring me for Fuel
> development through the ESUG SummerTalk. I am Martin Dias, a student at
> Buenos Aires, Argentina. The idea behind this SummerTalk is to implement
> Fuel, a binary, fast and general-purpose object graph serializer in Pharo.
> It is based on VisualWorks' Parcels ideas.

Please excuse me if this is the wrong forum to discuss things.

> Actually, the project has already started since several months. Tristan
> Bourgois and I started with the project while doing an internship with RMoD,
> INRIA. Since a couple of months, Mariano Martinez Peck joined the team, and
> now he is the official mentor in the SummerTalk.
> ESUG website for SummertTalk:
> http://www.esug.org/wiki/pier/Promotion/SummerTalk/SummerTalk2011
> The website with all the necessary information is here:
> http://rmod.lille.inria.fr/web/pier/software/Fuel
> It even includes slides explaining the algorithm. In addition, a paper is in
> progress.

Could you make the slides available in some other format than Flash?

> For the moment, Fuel already provides the following features:
> - Fast pickle format. It is much faster to materialize than to serialize.

What has led to the conclusion that materialization is more important
than serialization? I can image scenarios when there is a one to one
relationship and scenarios where serialization is more important (e.g.
session replication).

> - Correctly support class reshape (when the class of serialized objects has
> changed).

So what do you do when an instance variable was added? Set it to nil
and hope that everything will continue to work?

> - Serialize ANY kind of object. For the moment there is no object to our
> knowledge that we cannot serialize and materialize.

Really? You serialize Socket, Process, FileStream and something
meaningful happens?

> - Be able to completely serialize classes and traits (not just a global
> name).
> - Support cycles and avoid duplicates in the graph.
> - Integration to Moose with an extension to export and import their models.
> - Detection of globals: for example if you serialize Transcript, it is not
> duplicated and instead managed as a global reference.
> - Solve common problems like Set rehash.
> - Buffered writing: we use a buffered write stream for the serialization
> part (thanks Sven!).
> - No need of special support from the VM.
> - Try to have a good object oriented design.
> - Well tested (about 120 tests, for the moment).
> - Large set of benchmarks (even benchmarks for Moose extension).
> And of course, there are a lot features for the future. You can see some of
> them in the website and some in the issue tracker:
> http://code.google.com/p/fuel/issues/list
> We really appreciate all kind of feedback and comments. If you want to try
> it, check in the website how to do it. It is extremely easy.
> Once again, I want to thank a lot to ESUG for sponsoring the project. I plan
> to create a "news" section in the website with some RSS. I will keep you
> informed.


More information about the Esug-list mailing list