| <!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> |