Giter Club home page Giter Club logo

fuel's Introduction

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

master 5.0.1 4.1.1 3.0.4 3.0.3 3.0.2 3.0.1 3.0.0 2.2.0
Build status: Pharo alpha Build status: Pharo alpha Build status: Pharo alpha Build status: Pharo alpha Build status: Pharo alpha - - - -
Build status: Pharo 9.0 Build status: Pharo 9.0 Build status: Pharo 9.0 Build status: Pharo 9.0 Build status: Pharo 9.0 - - - -
Build status: Pharo 8.0 Build status: Pharo 8.0 Build status: Pharo 8.0 Build status: Pharo 8.0 Build status: Pharo 8.0 - - - -
Build status: Pharo 7.0 Build status: Pharo 7.0 Build status: Pharo 7.0 Build status: Pharo 7.0 Build status: Pharo 7.0 Build status: Pharo 7.0 Build status: Pharo 7.0 Build status: Pharo-7.0 Build status: Pharo-7.0
- - - - - - - - Build status: Pharo-6.1
- - - - - - - - Build status: Pharo-6.0
- - - - - - - - Build status: Pharo-5.0
- - - - - - - - Build status: Pharo-4.0
- - - - - - - - Build status: Pharo-3.0

Squeak

master 5.0.1 4.1.1 3.0.4 3.0.3 3.0.2 3.0.1 3.0.0 2.2.0
Build status: Squeak alpha Build status: Squeak alpha Build status: Squeak alpha - - - - - -
Build status: Squeak 5.3 Build status: Squeak 5.3 Build status: Squeak 5.3 Build status: Squeak 5.3 Build status: Squeak 5.3 Build status: Squeak-5.3, 64-bits Build status: Squeak-5.3 - -
Build status: Squeak 5.2 Build status: Squeak 5.2 Build status: Squeak 5.2 Build status: Squeak 5.2 Build status: Squeak 5.2 Build status: Squeak-5.2, 64-bits Build status: Squeak-5.2, 64-bits Build status: Squeak-5.2, 64-bits -
- - - - - - - - Build status: Squeak-5.1
- - - - - - - Build status: Squeak-4.6
- - - - - - - - Build status: Squeak-4.5

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 (over 700 unit tests).
  • Large suite of benchmarks.

Installation

Pharo >= 7.0

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

Pharo >= 3 and <= 6.1

Metacello new
    repository: 'http://smalltalkhub.com/mc/Pharo/Fuel/main';
    configuration: 'Fuel';
    load.
Pharo < 3
Gofer new
    url: 'http://smalltalkhub.com/mc/Pharo/Fuel/main';
    package: 'ConfigurationOfFuel';
    load.
(Smalltalk at: #ConfigurationOfFuel) load.
Pharo 1.1.1
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:5.0.1/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.

fuel's People

Contributors

theseion avatar fniephaus avatar n1ckbren avatar rainerwinkler avatar seandenigris avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.