Skip to content

RainerWinkler/Fuel

 
 

Repository files navigation

Fuel

Status of automated builds

master

Pharo Squeak
Build status: Pharo-8.0 Build status: Squeak-5.3
Build status: Pharo-8.0, 64-bits Build status: Squeak-5.3
Build status: Pharo-7.0 Build status: Squeak-5.2
Build status: Pharo-7.0, 64-bits Build status: Squeak-5.2, 64-bits

Version 3.0.0

Pharo Squeak
Build status: Pharo-7.0 Build status: Squeak-5.2
Build status: Pharo-7.0, 64-bits -

Version 2.2.0

Pharo Squeak
Build status: Pharo-7.0 Build status: Squeak-5.1
Build status: Pharo-7.0, 64-bits Build status: Squeak-4.6
Build status: Pharo-6.1 Build status: Squeak-4.5
Build status: Pharo-6.1, 64-bits -
Build status: Pharo-6.0 -
Build status: Pharo-5.0 -
Build status: Pharo-4.0 -
Build status: Pharo-3.0 -

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.

Properties

  • Binary format.
  • Object-Oriented design.
  • No special VM-support needed.
  • Modular (clear division in packages).
  • Can serialize/materialize not only plain objects but also classes, traits, methods, closures, contexts, packages, etc.
  • Support for global references.
  • Very customizable: ignore certain instance variables, substitute objects by others, pre and post serialization and materialization actions, etc.
  • Supports class rename and class reshape.
  • Good test coverage (almost 600 unit tests).
  • Large suite of benchmarks.

Installation

Pharo >= 7.0

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

Pharo >= 3 and <= 6.1

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

Squeak >= 5.2

Metacello new repository: 'github://theseion/Fuel:3.0.0/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.

More documentation

The main hub for documentation is our page at RMoD, INRIA

About

Fuel, the Smalltalk object serializer

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Smalltalk 95.4%
  • Shell 2.6%
  • HTML 2.0%