| <!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 - Release Notes</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"> | |
| Release Notes</h2> | |
| </td> | |
| </tr> | |
| </table> | |
| <hr> | |
| <dl class="index"> | |
| <dt><a href="#differences_1_43">Differences from version 1.43</a></dt> | |
| <dt><a href="#differences_1_42">Differences from version 1.42</a></dt> | |
| <dt><a href="#differences_1_41">Differences from version 1.41</a></dt> | |
| <dt><a href="#differences_1_40">Differences from version 1.40</a></dt> | |
| <dt><a href="#differences_1_39">Differences from version 1.39</a></dt> | |
| <dt><a href="#differences_1_37">Differences from version 1.37</a></dt> | |
| <dt><a href="#differences_1_35">Differences from version 1.35</a></dt> | |
| <dt><a href="#differences_1_34">Differences from version 1.34</a></dt> | |
| <dt><a href="#differences_1_33">Differences from version 1.33</a></dt> | |
| <dt><a href="#differences_1_32">Differences from version 1.32</a></dt> | |
| <dt><a href="#todo">Pending Issues</a></dt> | |
| </dl> | |
| As of this writing, there are no known bugs. However, due to compiler/library | |
| quirks and or bugs, some tests fail with some combinations of compilers and | |
| libraries. | |
| <h2><a name="differences_1_43"></a>Differences from Boost 1.43</h2> | |
| <ul> | |
| <li>fixed bug in the serialization of virtual base classes. Due | |
| to heroic efforts by Takatoshi Kondo. | |
| <li>Native binary archives created under versions 1.42 and 1.43 | |
| suffer from a serious problem. It's likely they won't be readable | |
| by this latest version. This due to the fact that 1.42 made some | |
| changes in the binary format of some types. Normally this could | |
| be addressed by detecting the library version number written into | |
| the archive header. Unfortunately, this library version number | |
| was not incremented at 1.42 as it should have been. So now we have | |
| two different binary archive versions with the same library version | |
| number. | |
| <p> | |
| This has been addressed by including a small utility in the example | |
| directory named fix_six.cpp. This should be run with the command line<br> | |
| <code><pre> | |
| fix_six <file name> | |
| </pre></code> | |
| This will assign 7 to the library version number of the archive. This | |
| fix will need to ba applied to native binary archives created with | |
| boost versions 1.42 and 1.43. | |
| </ul> | |
| <h2><a name="differences_1_42"></a>Differences from Boost 1.42</h2> | |
| <ul> | |
| <li>fixed failure of shared_ptr serialization when serializing pointers | |
| created from enable_shared_from_this. | |
| <li>added example for a simple archive which can be used as a debug log. | |
| This example illustrates the implemenation of the archive concept to aid | |
| understanding required to create one's own archive classes. The resulting | |
| archive is useful for debugging in that it only 160 lines of code and is | |
| header only - that is, it doesn't required linking to the serialization library. | |
| <li>replaced example used to show how to derive from an existing archive. | |
| This example creates an XML archive class which doesn't include serialization | |
| traits such as class_id, class_version, etc. It might be useful for exporting | |
| one's class information to osme XML processor and/or debugging programs. | |
| <li>compile time warnings have been implemented to detect practices which | |
| though correct, will result in operation or side effects different than | |
| a user probably intends. | |
| <li>Some memory leaks associated with void_cast have been fixed. | |
| </ul> | |
| <h2><a name="differences_1_41"></a>Differences from Boost 1.41</h2> | |
| <ul> | |
| <li>adjustments have been made to minimize compile time warnings. | |
| <li>compile time warnings have been implemented to detect practices which | |
| though correct, will result in operation or side effects different than | |
| a user probably intends. | |
| <li>Some memory leaks associated with void_cast have been fixed. | |
| </ul> | |
| <h2><a name="differences_1_40"></a>Differences from Boost 1.40</h2> | |
| This library has been tested against Boost version 1.39 and 1.40. | |
| <p> | |
| Changes have been made to archive classes included with the library. Users who | |
| have used these a guide to making their own archive classes will find that | |
| these will likely no longer compile. This can be remedied by making the | |
| following changes in the code which instantiates these archive classes. | |
| </p> | |
| Old Code:<br> | |
| <code><pre> | |
| ... | |
| #include <boost/archive/impl/archive_pointer_iserializer.ipp> | |
| ... | |
| template class detail::archive_pointer_iserializer<naked_text_iarchive> ; | |
| ... | |
| template class detail::archive_pointer_iserializer<text_iarchive> ; | |
| </pre></code>should be replaced with this new code: <code><pre> | |
| #include <boost/archive/impl/archive_serializer_map.ipp> | |
| ... | |
| template class detail::archive_serializer_map<naked_text_iarchive> ; | |
| ... | |
| template class detail::archive_serializer_map<text_iarchive> ; | |
| </pre></code> | |
| <!-- | |
| <p> | |
| The serialization library uses the boost spirit package to load XML archives. | |
| We have found that all tests pass using spirit 1.6x. Spirit 1.8 and higher does not work with | |
| older compilers - specifically MSVC 6, Borland and GCC < 3.0. | |
| If you are using one of these compilers, you may download a version | |
| of spirit 1.6 <a href="http://spirit.sourceforge.net/index.php?doc=download/index.html">here</a>. | |
| To use this downloaded version rather than the one included with boost, | |
| set an environmental variable SPIRIT_ROOT to be equal to the root | |
| directory where the downloaded copy of spirit has been placed. E. G. | |
| <pre><code> | |
| set SPIRIT_ROOT=c:/spirit16 | |
| </code></pre> | |
| If you're not using bjam and the Jamfile to build the library, be sure that | |
| the directory which contains the version of spirit you plan to use is placed | |
| at the front of the list of include paths. | |
| --> | |
| <h2><a name="differences_1_39"></a>Differences from Boost 1.39</h2> | |
| <ul> | |
| <li> | |
| It is now possible to serialize an object through a pointer to a class which | |
| implements its own <code style="white-space: normal">new/delete</code> | |
| operators. This functionaly is not available on some compilers. | |
| <li> | |
| serialization of polymorphic objects has been sped up considerably. | |
| </ul> | |
| As of this writing, all bug reports filed as TRAK tickets have been addressed. | |
| There are some TRAK tickets pending which would best be described as feature | |
| requests. See <a href="#todo">Pending Issues</a>. | |
| <h2><a name="differences_1_37"></a>Differences from Boost 1.37</h2> | |
| There are no new features in this version. As of this writing, all bug reports | |
| filed as TRAK tickets have been addressed. There are some TRAK tickets pending | |
| which would best be described as feature requests. See <a href="#todo">Pending | |
| Issues</a>. | |
| <h2><a name="differences_1_36"></a>Differences from Boost 1.36</h2> | |
| There are no new features in this version. As of this writing, all bug reports | |
| filed as TRAK tickets have been addressed. | |
| <h2><a name="differences_1_35"></a>Differences from Boost 1.35</h2> | |
| <ul> | |
| <li> | |
| The library is now thread safe. That is, multiple archives can be open in | |
| different threads. This has been implmented with a lock-free algorithm to avoid | |
| any performance bottlenecks. | |
| <li> | |
| Serialization of types defined in shared libraries is now supported. shared | |
| libraries (DLLS) can be loaded/unloaded dynamically at runtime. This includes | |
| the serialization of instances of abstract base classes so that a program can | |
| be written so as to be compatible with as yet undefined and un-implemented | |
| code. | |
| <li> | |
| The extended type info system has been enhanced to in order to implement the | |
| above. It is now a general purpose system for creating and casting of types | |
| about which is only known a string ID and an abstract base class. | |
| <li> | |
| All bug reports filed as TRAK tickets have been addressed. | |
| <li> | |
| As of this writing, the library will fail build on older compilers such as MSVC | |
| before version 7.1 and older versions of Borland compilers. This might or might | |
| not change in the future. | |
| </ul> | |
| <h2><a name="differences_1_34"></a>Differences from Boost 1.34</h2> | |
| <ul> | |
| <li> | |
| Enhanced support for fast serialization for native binary archives. By Mattias | |
| Troyer. | |
| <li> | |
| Improved implementation of "export" functionality. Removes header ordering | |
| requirement and eliminates the maintenance of a pre-determined list of "known | |
| archives" By David Abrahams. | |
| <li> | |
| Improved support for STLPort. | |
| </ul> | |
| <h2><a name="differences_1_33"></a>Differences from Boost 1.33</h2> | |
| <ul> | |
| <li> | |
| Native Binary archives use the <code style="white-space: normal">std::streambuf</code> | |
| interface. This should result in noticeably faster execution in many cases. | |
| </ul> | |
| <h2><a name="differences_1_32"></a>Differences from Boost 1.32</h2> | |
| <ul> | |
| <li> | |
| Dynamic Linking Library (DLLs and shared libraries) for platforms which support | |
| them. See <a href="../../../more/getting_started/windows.html#auto-linking">Automatic | |
| Linking on Windows</a>. | |
| <li> | |
| Implementation of auto-link for compilers which can support this. | |
| <li> | |
| Better support for <em>Argument Dependent Lookup</em> | |
| and two-phase lookup. This results in simpler rules regarding the placing of | |
| serialization specializations namespaces. | |
| <li> | |
| Enhanced documentation to help explain usage of the above. | |
| <li> | |
| Adjustments to improve support for less conformant compilers. | |
| <li> | |
| Improved <code>const</code> correctness for save/load operators. Note that this | |
| may produce compile time errors in code which compiled without problem in | |
| earlier boost releases. In most cases the fix is trivial. In other cases, code | |
| should be scrutinized to be sure that it doesn't use the serialization system | |
| in a way which may introduce subtle bugs in to the program. A fuller | |
| explanation of this issue can be found <a target="detail" href="traits.html#tracking"> | |
| here</a>. | |
| <li> | |
| A new implementation of serialization for <code style="white-space: normal">shared_ptr<T></code>. | |
| This is compatible with public interface of <code style="white-space: normal">shared_ptr<T></code> | |
| so it should be more robust and not have to change in the future. The | |
| implementation optionally includes code to load <code style="white-space: normal">shared_ptr<T></code> | |
| stored in archives created with boost 1.32. This code is stored in 'he header: <code style="white-space: normal"> | |
| boost/serialization/shared_ptr_132.hpp</code>. If your application needs to | |
| load archives created with boost 1.32 libraries, include the above header | |
| before each inclusion of <code style="white-space: normal">boost/serialization/shared_ptr.hpp</code>. | |
| <li> | |
| More compilers tested and supported. | |
| <li> | |
| Miscellaneous bug fixes. | |
| </ul> | |
| <h2><a name="todo"></a>Pending issues</h2> | |
| <ul> | |
| <li> | |
| Rvalues cannot be serialized. It would be possible to implement this for | |
| untracked types, but this has not been done. | |
| <li> | |
| Pointers to pointers cannot currently be serialized | |
| <li> | |
| It's possible that <code style="white-space: normal">std::string</code> and <code style="white-space: normal"> | |
| std::wstring</code> | |
| contain characters such as '\0' and -1 (EOF) which cannot be rendered in text | |
| and XML archives without an escape mechanism. Currently there is no such escape | |
| mechanism implemented. | |
| <li> | |
| A subtle error in the implementation of serializaton of <code style="white-space: normal"> | |
| std::map</code> is fixed in this version. Unfortunately, the fix breaks | |
| serialization of <code style="white-space: normal">std::map</code> | |
| for those compilers which do not support partial template specialization. Also, | |
| types which contain pointers or tracked types might not work correctly. | |
| <li> | |
| Serialization of virtual base classes relies upon RTTI. It will fail when used on | |
| systems which don't have RTTI enabled. | |
| </ul> | |
| <p> | |
| Aside from the above, there are a number of issues related to specific | |
| platforms. These are listed in <a href="implementation.html#othercompilerissues">Specific | |
| Compiler/Library Issues</a>. | |
| <hr> | |
| <p> | |
| <i>© Copyright <a href="http://www.rrsd.com">Robert Ramey</a> 2002-2009. | |
| 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> |