Home

Awesome

Fuel

Description

A general-purpose object serialization framework developed in Pharo. Fuel is developed under the MIT license.

Concrete

We don't aspire to have a dialect-interchange format. This enables us to serialize special objects like contexts, block closures, exceptions, compiled methods and classes. Although there are ports to other dialects, Fuel development is Pharo-centric.

Flexible

Depending on the context, there could be multiple ways of serializing the same object. For example, a class can be considered either a global or a regular object. In the former case, it will be encoded just its name; in the latter case, the class will be encoded in detail, with its method dictionary, etc.

Fast

We worry about to have the best performance. We developed a complete benchmark suite to help analyse the performance with diverse sample sets, as well as compare against other serializers. Our pickling algorithm allows outstanding materialization performance, as well as very good serialization performance too.

Object-Oriented Design

From the beginning it was a constraint to have a good object-oriented design and to do not need any special support from the VM. In addition, Fuel has a complete test suite, with a high coverage. We also worry about writing comments on classes and methods.

Projects using Fuel

We would love to see your project here too ;)!

Status of automated builds

Pharo

Build status: Pharo 13 (alpha) Build status: Pharo 12

master5.2.25.1.05.0.64.1.13.0.43.0.3
Build status: Pharo 11.0Build status: Pharo 11.0-----
Build status: Pharo 10.0Build status: Pharo 10.0Build status: Pharo 10.0Build status: Pharo 10.0Build status: Pharo 10.0Build status: Pharo 10.0Build status: Pharo 10.0
Build status: Pharo 9.0Build status: Pharo 9.0Build status: Pharo 9.0Build status: Pharo 9.0Build status: Pharo 9.0Build status: Pharo 9.0Build status: Pharo 9.0
Build status: Pharo 8.0Build status: Pharo 8.0Build status: Pharo 8.0Build status: Pharo 8.0Build status: Pharo 8.0Build status: Pharo 8.0Build status: Pharo 8.0
Build status: Pharo 7.0Build status: Pharo 7.0Build status: Pharo 7.0Build status: Pharo 7.0Build status: Pharo 7.0Build status: Pharo 7.0Build status: Pharo 7.0

Squeak

master5.2.25.1.05.0.64.1.13.0.43.0.3
Build status: Squeak alphaBuild status: Squeak alphaBuild status: Squeak alphaBuild status: Squeak alpha
Build status: Squeak 6.0Build status: Squeak 6.0Build status: Squeak 6.0Build status: Squeak 6.0
Build status: Squeak 5.3Build status: Squeak 5.3Build status: Squeak 5.3Build status: Squeak 5.3Build status: Squeak 5.3Build status: Squeak 5.3Build status: Squeak 5.3
Build status: Squeak 5.2Build status: Squeak 5.2Build status: Squeak 5.2Build status: Squeak 5.2Build status: Squeak 5.2Build status: Squeak 5.2Build status: Squeak 5.2

Properties

Installation

Pharo >= 12

As of Pharo 12, Fuel will no longer be backwards compatible and each version will live on a separate branch.

Metacello new
    repository: 'github://theseion/Fuel:Pharo12/repository';
    baseline: 'Fuel';
    load.

Pharo >= 7.0

Metacello new
    repository: 'github://theseion/Fuel:5.2.2/repository';
    baseline: 'Fuel';
    load.

Pharo >= 3 and <= 6.1

Metacello new
    repository: 'http://smalltalkhub.com/mc/Pharo/Fuel/main';
    configuration: 'Fuel';
    load.
<details> <summary>Pharo < 3</summary>
Gofer new
    url: 'http://smalltalkhub.com/mc/Pharo/Fuel/main';
    package: 'ConfigurationOfFuel';
    load.
(Smalltalk at: #ConfigurationOfFuel) load.
</details> <details> <summary>Pharo 1.1.1</summary>
Gofer new
    url: 'http://smalltalkhub.com/mc/Pharo/Fuel/main';
    package: 'ConfigurationOfFuel';
    load.
(Smalltalk at: #ConfigurationOfFuel) project load: '1.9.4'.
</details>

Squeak >= 5.2

Metacello new
    repository: 'github://theseion/Fuel:5.2.2/repository';
    baseline: 'Fuel';
    load.

Squeak >= 4.1 and <= 5.1

Installer monticello
    http: 'http://smalltalkhub.com/mc/Pharo/Fuel/main';
    addPackage: 'ConfigurationOfFuel';
    install.
(Smalltalk at: #ConfigurationOfFuel) load.

Report bugs

You may very well find something that is broken. When you do, please open an issue in the GitHub bug tracker and we'll get back to you promptly.

Documentation

The documentation is generated from this repository and lives here.

Origins

Fuel started its life as a thesis project by @marianopeck at RMoD, Inria. @tinchodias later worked on it as part of his own work (also at RMoD).

The Fuel team would like to thank RMoD and especially @Ducasse for the support and for letting us continue development as an open source project.