<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!--
(C) Copyright 2002-4 Robert Ramey - http://www.rrsd.com . 
Use, modification and distribution is subject to the Boost Software
License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../boost.css">
<link rel="stylesheet" type="text/css" href="style.css">
<title>Serialization - To Do</title>
</head>
<body link="#0000ff" vlink="#800080">
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary="header">
  <tr> 
    <td valign="top" width="300"> 
      <h3><a href="../../../index.htm"><img height="86" width="277" alt="C++ Boost" src="../../../boost.png" border="0"></a></h3>
    </td>
    <td valign="top"> 
      <h1 align="center">Serialization</h1>
      <h2 align="center">To Do</h2>
    </td>
  </tr>
</table>
<hr>
<dl class="index">
  <dt><a href="#portablebinaryarchives">Portable Binary Archives</a></dt>
  <dt><a href="#performancetesting">Performance Testing and Profiling</a></dt>
  <dt><a href="#backversioning">Back Versioning</a></dt>
  <dt><a href="#nortti">Testing for Environments with No RTTI</a></dt>
  <dt><a href="new_case_studies.html">Additional Case Studies</a></dt>
</dl>

These are enhancements that the serialization library needs but have not been done.
Some of these projects, though tricky, are not huge and would be suitable
for someone who has a limited time to spend on them.  In particular, they
might be of interest as student projects such as the Google Summer of Code.

<h2><a name="portablebinaryarchives"></a>Portable Binary Archives</h2>
Currently there is a portable binary archive in the examples directory.
It is not regularly submitted to the exhaustive boost testing regimen
but it is tested occasionally and has been used in production code.
<p>
Its missing the following:
<ul>
  <li>Addition of portable floating point types.  This is not trivial.  In addition to
  handling floating point types of varying sizes, It requires
  handling invalid floating point numbers (NaNs) in a portable manner.
  <li>Some way to test archive portability within the Boost testing regimen.
  <li>Integration into the Boost testing similar to the other archive classes.
</ul>

<h2><a name="performancetesting"></a>Performance Testing and Profiling</h2>

I've managed to setup performance profiling using the following:
<ul>
  <li>current (as I write this) Boost.Build tools.
  <li>the gcc compiler.
  <li>and a shell script - profile.sh
  <li>library_status program from the tools/regression/src directory
</ul>
Invoking profile script produces a 
<a href="performance_status.html">table</a>
which shows the results of each test and links to the actual
profile.
<p>
The first thing I did was include some of the serialization library tests.
It became immediatly apparent that these tests were totally unsuitable
for performance testing and that new tests needed to be written for this 
purpose.  These tests would highlight the location of any performance
bottlenecks in the serialization library.  Whenever I've subjected my
code in the past to this type of analysis, I've always been suprised
to find bottlenecks in totally unanticipated places and fixing those
has always lead to large improvements in performance.  I expect that
this project would have a huge impact on the utility of the serialization
library.

<h2><a name="backversioning"></a>Back Versioning</h2>

It has been suggested that a useful feature of the library would be
the ability to create "older versions" of archives.  Currently,
the library permits one make programs that are guarenteed
the ability to load archives with classes of a previous version. 
But there is not way to save classes in accordance with a
previous version.  At first I dismissed this a a huge project
with small demand.  A cursory examination of the code revealed
that this would not be very difficult.  It would require some
small changes in code and some additional tests.  Also it
would require special treatment in the documentation - perhaps
a case study.


<h2><a name="nortti"></a>Environments without RTTI</h2>

I note that some have commented that this library requires RTTI.
This is not strictly true.  The examples and almost all the
tests presume the existence of RTTI.  But it should be possible
to use the library without it.  The example used for testing is an 
<code style="white-space: normal">extended_typeinfo</code> 
implemenation which presumes that all classes names have been exported. 
So, to make this library compatible for platforms without RTTI, 
a set of tests, examples and new manual section would have to be created

<hr>
<p>Revised 1 November, 2008 
<p><i>&copy; Copyright <a href="http://www.rrsd.com">Robert Ramey</a> 2002-2008. 
Distributed under the Boost Software License, Version 1.0. (See
accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
</i></p>
</body>
</html>
