]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/serialization/doc/todo.html
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / serialization / doc / todo.html
CommitLineData
7c673cae
FG
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html>
3<!--
4(C) Copyright 2002-4 Robert Ramey - http://www.rrsd.com .
5Use, modification and distribution is subject to the Boost Software
6License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
7http://www.boost.org/LICENSE_1_0.txt)
8-->
9<head>
10<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
11<link rel="stylesheet" type="text/css" href="../../../boost.css">
12<link rel="stylesheet" type="text/css" href="style.css">
13<title>Serialization - To Do</title>
14</head>
15<body link="#0000ff" vlink="#800080">
16<table border="0" cellpadding="7" cellspacing="0" width="100%" summary="header">
17 <tr>
18 <td valign="top" width="300">
19 <h3><a href="../../../index.htm"><img height="86" width="277" alt="C++ Boost" src="../../../boost.png" border="0"></a></h3>
20 </td>
21 <td valign="top">
22 <h1 align="center">Serialization</h1>
23 <h2 align="center">To Do</h2>
24 </td>
25 </tr>
26</table>
27<hr>
28<dl class="index">
29 <dt><a href="#portablebinaryarchives">Portable Binary Archives</a></dt>
30 <dt><a href="#performancetesting">Performance Testing and Profiling</a></dt>
31 <dt><a href="#backversioning">Back Versioning</a></dt>
32 <dt><a href="#nortti">Testing for Environments with No RTTI</a></dt>
33 <dt><a href="new_case_studies.html">Additional Case Studies</a></dt>
34</dl>
35
36These are enhancements that the serialization library needs but have not been done.
37Some of these projects, though tricky, are not huge and would be suitable
38for someone who has a limited time to spend on them. In particular, they
39might be of interest as student projects such as the Google Summer of Code.
40
41<h2><a name="portablebinaryarchives"></a>Portable Binary Archives</h2>
42Currently there is a portable binary archive in the examples directory.
43It is not regularly submitted to the exhaustive boost testing regimen
44but it is tested occasionally and has been used in production code.
45<p>
46It's missing the following:
47<ul>
48 <li>Addition of portable floating point types. This is not trivial. In addition to
49 handling floating point types of varying sizes, It requires
50 handling invalid floating point numbers (NaNs) in a portable manner.
51 <li>Integration into the Boost testing regimen similar to the other archive classes.
52</ul>
53
54<h2><a name="performancetesting"></a>Performance Testing and Profiling</h2>
55
56I've managed to setup performance profiling using the following:
57<ul>
58 <li>current (as I write this) Boost.Build tools.
59 <li>the gcc compiler.
60 <li>and a shell script - profile.sh
61 <li>library_status program from the tools/regression/src directory
62</ul>
63Invoking profile script produces a
64<a href="performance_status.html">table</a>
65which shows the results of each test and links to the actual
66profile.
67<p>
68The first thing I did was include some of the serialization library tests.
69It became immediately apparent that these tests were totally unsuitable
70for performance testing and that new tests needed to be written for this
71purpose. These tests would highlight the location of any performance
72bottlenecks in the serialization library. Whenever I've subjected my
73code in the past to this type of analysis, I've always been surprised
74to find bottlenecks in totally unanticipated places and fixing those
75has always led to large improvements in performance. I expect that
76this project would have a huge impact on the utility of the serialization
77library.
78
79<h2><a name="backversioning"></a>Back Versioning</h2>
80
81It has been suggested that a useful feature of the library would be
82the ability to create "older versions" of archives. Currently,
83the library permits one to make programs that are guaranteed
84the ability to load archives with classes of a previous version.
85But there is no way to save classes in accordance with a
86previous version. At first I dismissed this as a huge project
87with small demand. A cursory examination of the code revealed
88that this would not be very difficult. It would require some
89small changes in code and some additional tests. Also it
90would require special treatment in the documentation - perhaps
91a case study.
92
93
94<h2><a name="nortti"></a>Environments without RTTI</h2>
95
96I note that some have commented that this library requires RTTI.
97This is not strictly true. The examples and almost all the
98tests presume the existence of RTTI. But it should be possible
99to use the library without it. The example used for testing is an
100<code style="white-space: normal">extended_typeinfo</code>
101implemenation which presumes that all classes names have been exported.
102So, to make this library compatible for platforms without RTTI,
103a set of tests, examples and new manual section would have to be created.
104
105<hr>
106<p>Revised 1 November, 2008
107<p><i>&copy; Copyright <a href="http://www.rrsd.com">Robert Ramey</a> 2002-2008.
108Distributed under the Boost Software License, Version 1.0. (See
109accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
110</i></p>
111</body>
112</html>