Title YAML archives for Boost.serialization
Student Esteban Fernandez Gonzalez
Mentor Jose Lorenzo de Guzman
Abstract
PROJECT DESCRIPTION
-------------------

At the moment, Boost.Serialization offers three archives (formats) for serializing objects: binary (which is Boost specific and not portable), text (a Boost specific text format) and XML. While these three seem to be enough for almost all needs, a format that is portable and interoperable with other languages, while still being lightweight fills the gap between the XML (portable, but heavyweight), text (Boost-specific) and binary (Boost-specific and not portable) and should be extremely useful for a variety of applications.

One of the alternatives to XML that has gained some popularity is YAML (YAML Ain't Markup Language). YAML uses a simpler syntax, suitable as an exchange format for network protocols. Also, there're a wide variety of parsers available for many languages, guaranteeing interoperability in heterogeneous systems. It has great popularity among Python and Ruby communities.

The main goal of this project is to implement an archive for Boost.Serialization, that uses YAML as an exchange format. YAML already supports object tracking (complex object graphs) and class versioning, so it's not necessary to use external specifications for accomplying tasks that Boost.serialization implements. This involves writing a parser with LibYAML (that will be replaced with a Boost.Spirit-based one), implementing a YAML writer for all the integral types and making it portable to as many platforms as possible. As secondary goals, other related Boost side-projects include a YAML writer for Boost.Program_Options and Boost.Spirit ASTs, which currently only allows XML dumping.