Fuel

is a fast open-source general-purpose binary object serialization framework developed by Mariano Martinez-Peck, Martìn Dias and Max Leske. page

Part of the speed of Fuel comes from the idea that objects are loaded more often than stored. This makes it worth to spend more time while storing to yield faster loading. Also, its storage scheme is based on the pickle format that puts similar objects into groups for efficiency and performance. As a result, Fuel has been shown to be one of the fastest object loaders, while still being a really fast object saver. Moreover, Fuel can serialize nearly any object in the image, it can even serialize a full execution stack and later reload it!

In the context of the `IDRAChangesHandler` the changes are retrieved from an `EpMonitor`, then these changes are serialized using *Fuel* [DPDA11] on the communication channel with other `IDRAChangesHandlers` and finally the store is reset, starting a new Epicea session. The reset is necessary because otherwise the next changes will include the old ones.

[DPDA11] Mart ́ın Dias, Mariano Martinez Peck, St ́ephane Ducasse, and Gabriela Ar ́evalo. Clustered serialization with fuel. In Proceedings of the International Workshop on Smalltalk Technologies, IWST ’11, pages 1:1–1:13, New York, NY, USA, 2011. ACM

DIAS, Martín, PECK, Mariano Martinez, DUCASSE, Stéphane and ARÉVALO, Gabriela, 2011. Clustered serialization with fuel. In: Proceedings of the International Workshop on Smalltalk Technologies. Online. New York, NY, USA: Association for Computing Machinery. 23 August 2011. p. 1–13. [Accessed 8 June 2021]. IWST ’11. ISBN 978-1-4503-1050-5. DOI 10.1145/2166929.2166930.

> Serializing object graphs is an important activity since objects should be stored and reloaded on different environments. There is a plethora of frameworks to serialize objects based on recursive parsing of the object graphs. However such approaches are often too slow. Most approaches are limited in their provided features. For example, several serializers do not support class shape changes, global references, transient references or hooks to execute something before or after being stored or loaded. Moreover, to be faster, some serializers are not written taking into account the object-oriented paradigm and they are sometimes even implemented in the Virtual Machine hampering code portability. VM-based serializers such as ImageSegment are difficult to understand, maintain, and fix. For the final user, it means a serializer which is difficult to customize, adapt or extend to his own needs. In this paper we present a general purpose object graph serializer based on a pickling format and algorithm. We implement and validate this approach in the Pharo Smalltalk environment. We demonstrate that we can build a really fast serializer without specific VM support, with a clean object-oriented design, and providing most possible required features for a serializer. We show that our approach is faster that traditional serializers and compare favorably with ImageSegment as soon as serialized objects are not in isolation.