Imported Upstream version 1.64.0
[platform/upstream/boost.git] / libs / multi_index / doc / release_notes.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0.1 Transitional//EN">
2
3 <html>
4 <head>
5 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
6 <title>Boost.MultiIndex Documentation - Release notes</title>
7 <link rel="stylesheet" href="style.css" type="text/css">
8 <link rel="start" href="index.html">
9 <link rel="prev" href="future_work.html">
10 <link rel="up" href="index.html">
11 <link rel="next" href="acknowledgements.html">
12 </head>
13
14 <body>
15 <h1><img src="../../../boost.png" alt="boost.png (6897 bytes)" align=
16 "middle" width="277" height="86">Boost.MultiIndex Release notes</h1>
17
18 <div class="prev_link"><a href="future_work.html"><img src="prev.gif" alt="future work" border="0"><br>
19 Future work
20 </a></div>
21 <div class="up_link"><a href="index.html"><img src="up.gif" alt="index" border="0"><br>
22 Index
23 </a></div>
24 <div class="next_link"><a href="acknowledgements.html"><img src="next.gif" alt="acknowledgements" border="0"><br>
25 Acknowledgements
26 </a></div><br clear="all" style="clear: all;">
27
28 <hr>
29
30 <h2>Contents</h2>
31
32 <ul>
33   <li><a href="#boost_1_64">Boost 1.64 release</a></li>
34   <li><a href="#boost_1_62">Boost 1.62 release</a></li>
35   <li><a href="#boost_1_60">Boost 1.60 release</a></li>
36   <li><a href="#boost_1_59">Boost 1.59 release</a></li>
37   <li><a href="#boost_1_58">Boost 1.58 release</a></li>
38   <li><a href="#boost_1_57">Boost 1.57 release</a></li>
39   <li><a href="#boost_1_56">Boost 1.56 release</a></li>
40   <li><a href="#boost_1_55">Boost 1.55 release</a></li>
41   <li><a href="#boost_1_54">Boost 1.54 release</a></li>
42   <li><a href="#boost_1_49">Boost 1.49 release</a></li>
43   <li><a href="#boost_1_48">Boost 1.48 release</a></li>
44   <li><a href="#boost_1_47">Boost 1.47 release</a></li>
45   <li><a href="#boost_1_44">Boost 1.44 release</a></li>
46   <li><a href="#boost_1_43">Boost 1.43 release</a></li>
47   <li><a href="#boost_1_42">Boost 1.42 release</a></li>
48   <li><a href="#boost_1_41">Boost 1.41 release</a></li>
49   <li><a href="#boost_1_38">Boost 1.38 release</a></li>
50   <li><a href="#boost_1_37">Boost 1.37 release</a></li>
51   <li><a href="#boost_1_36">Boost 1.36 release</a></li>
52   <li><a href="#boost_1_35">Boost 1.35 release</a></li>
53   <li><a href="#boost_1_34">Boost 1.34 release</a></li>
54   <li><a href="#boost_1_33_1">Boost 1.33.1 release</a></li>
55   <li><a href="#boost_1_33">Boost 1.33 release</a></li>
56 </ul>
57
58 <h2><a name="boost_1_64">Boost 1.64 release</a></h2>
59
60 <p>
61 <ul>
62   <li>Fixed a bug related to ambiguous references in the presence of more than
63     one ranked index
64     (ticket <a href="https://svn.boost.org/trac/boost/ticket/12955">#12955</a>).
65   </li>
66   <li>Maintenance fixes.</li>
67 </ul>
68 </p>
69
70 <h2><a name="boost_1_62">Boost 1.62 release</a></h2>
71
72 <p>
73 <ul>
74   <li>Maintenance fixes.</li>
75 </ul>
76 </p>
77
78 <h2><a name="boost_1_60">Boost 1.60 release</a></h2>
79
80 <p>
81 <ul>
82   <li>Fixed an interoperability problem with <a href="http://www.qt.io/">Qt</a> due to the
83     optional definition of a macro with name <code>foreach</code> in this framework.</li>
84   <li>Maintenance fixes.</li>
85 </ul>
86 </p>
87
88 <h2><a name="boost_1_59">Boost 1.59 release</a></h2>
89
90 <p>
91 <ul>
92   <li>Added <a href="tutorial/indices.html#rnk_indices">ranked indices</a>.</li>
93   <li>Maintenance fixes.</li>
94 </ul>
95 </p>
96
97 <h2><a name="boost_1_58">Boost 1.58 release</a></h2>
98
99 <p>
100 <ul>
101   <li>The efficiency of lookup operations has improved in situations where they involve
102     the generation of temporary values of <code>key_type</code>. Consider for instance
103     the following code:
104 <blockquote><pre>
105 <span class=keyword>typedef</span> <span class=identifier>multi_index_container</span><span class=special>&lt;</span>
106   <span class=identifier>std</span><span class=special>::</span><span class=identifier>string</span><span class=special>,</span>
107   <span class=identifier>indexed_by</span><span class=special>&lt;</span>
108     <span class=identifier>ordered_unique</span><span class=special>&lt;</span><span class=identifier>identity</span><span class=special>&lt;</span><span class=identifier>std</span><span class=special>::</span><span class=identifier>string</span><span class=special>&gt;</span> <span class=special>&gt;</span>
109   <span class=special>&gt;</span>
110 <span class=special>&gt;</span> <span class=identifier>multi_t</span><span class=special>;</span>
111 <span class=special>...</span>
112 <span class=identifier>multi_t</span> <span class=identifier>m</span><span class=special>=...;</span>
113 <span class=identifier>m</span><span class=special>.</span><span class=identifier>find</span><span class=special>(</span><span class=string>&quot;boost&quot;</span><span class=special>);</span> <span class=comment>// passed a const char*, not a std::string</span>
114 </pre></blockquote>
115       In previous versions of the library, the <code>find</code> operation generates
116       several temporary <code>std::string</code>s (one every time an internal comparison is made).
117       In sufficiently advanced compilers, this is now avoided so that only one temporary is
118       created.
119   </li>
120   <li>Maintenance fixes.</li>
121 </ul>
122 </p>
123
124 <h2><a name="boost_1_57">Boost 1.57 release</a></h2>
125
126 <p>
127 <ul>
128   <li>When <code>std::tuple</code>s are available, these can be used for lookup operations
129      in indices equipped with composite keys. <code>boost::tuple</code>s are also supported
130      for backwards compatibility.
131   </li>
132 </ul>
133 </p>
134
135 <h2><a name="boost_1_56">Boost 1.56 release</a></h2>
136
137 <p>
138 <ul>
139   <li>The <code>erase(iterator)</code> member function of hashed indices
140     used to have poor performance under low load conditions due to the requirement
141     that an iterator to the next element must be returned (see ticket
142     <a href="https://svn.boost.org/trac/boost/ticket/4264">#4264</a>). In accordance with
143     the resolution of <a href="http://lwg.github.io/issues/lwg-closed.html#579">LWG
144     issue #579</a>, this problem has been fixed while maintaining the interface of
145     <code>erase</code>, at the expense of using one more
146     word of memory per element. In fact, C++ complexity requirements on unordered
147     associative containers have been improved for hashed indices so that
148     <ul>
149       <li>deletion of a given element is unconditionally constant-time,</li>
150       <li>worst-case performance is not <code>O(n)</code> but <code>O(n<sub>dist</sub>)</code>,
151          where <code>n<sub>dist</sub></code> is the number of non-equivalent elements in the index.
152       </li>
153     </ul>
154     Due to the fact that hashed indices rely on a new data structure, the internal representation of
155     their iterators and local iterators have changed, which affects serialization: their corresponding
156     serialization <a href="../../serialization/doc/tutorial.html#versioning">class version</a> has been
157     bumped from 0 to 1. Old archives involving hashed index (local) iterators can be loaded
158     by Boost 1.56 version of Boost.MultiIndex, but not the other way around.
159   </li>
160   <li>Hashed indices now provide <code>reserve</code>.</li>
161   <li>Hashed indices can now be checked for equality and inequality following the
162     (suitably adapted) C++ standard specification in <b>[unord.req]</b>.</li>
163   <li>The public interface of Boost.MultiIndex provide <code>noexcept</code> specifications
164     where appropriate (for compliant compilers).
165   </li>
166   <li>Improved performance of failed insertions into a <code>multi_index_container</code>.</li>
167   <li>Much internal code aimed at supporting MSVC++ 7.0 and prior has been removed.
168     Compilation times without this legacy code might be slightly faster.
169   </li>
170   <li>Fixed a bug with insertion via iterators dereferencing to rvalues
171     (ticket <a href="https://svn.boost.org/trac/boost/ticket/9665">#9665</a>).
172   </li>
173   <li>Made Boost.MultiIndex compatible with <code>BOOST_BIND_NO_PLACEHOLDERS</code>
174     (ticket <a href="https://svn.boost.org/trac/boost/ticket/9798">#9798</a>).
175   </li>
176   <li>Maintenance fixes.</li>
177 </ul>
178 </p>
179
180 <h2><a name="boost_1_55">Boost 1.55 release</a></h2>
181
182 <p>
183 <ul>
184   <li>Boost.MultiIndex has been brought to a higher level of compliance
185   with C++11.
186   <ul>
187       <li><code>multi_index_container</code> is now efficiently movable.</li>
188       <li>Initializer lists supported.</li>
189       <li>Emplace functions provided.</li>
190       <li>Non-copyable elements (such as <code>std::unique_ptr&lt;T&gt;</code>) supported. This includes
191         insertion of a range [<code>first</code>,<code>last</code>) where the iterators point to a type that is
192         convertible to that of the element: no copy construction happens in the process.
193       </li>
194       <li>Random access indices provide <code>shrink_to_fit()</code>.</li>
195   </ul>
196   Refer to the <a href="compiler_specifics.html">compiler specifics</a> section for limitations
197   on pre-C++11 compilers.
198   </li>
199   <li>The following classes are deprecated:
200   <ul>
201     <li><a href="reference/key_extraction.html#member_offset"><code>member_offset</code></a>,</li>
202     <li><a href="reference/key_extraction.html#const_mem_fun_explicit"><code>const_mem_fun_explicit</code></a>,</li>
203     <li><a href="reference/key_extraction.html#const_mem_fun_explicit"><code>mem_fun_explicit</code></a>,</li>
204     <li><a href="reference/key_extraction.html#composite_key_result_equal_to"><code>composite_key_result_equal_to</code></a>,</li>
205     <li><a href="reference/key_extraction.html#composite_key_result_less"><code>composite_key_result_less</code></a>,</li>
206     <li><a href="reference/key_extraction.html#composite_key_result_greater"><code>composite_key_result_greater</code></a>,</li>
207     <li><a href="reference/key_extraction.html#composite_key_result_hash"><code>composite_key_result_hash</code></a>.</li>
208   </ul>
209   </li>
210   <li>Maintenance fixes.</li>
211 </ul>
212 </p>
213
214 <h2><a name="boost_1_54">Boost 1.54 release</a></h2>
215
216 <p>
217 <ul>
218   <li>Suppressed some potential warnings described in
219     tickets <a href="https://svn.boost.org/trac/boost/ticket/8034">#8034</a> and <a href="https://svn.boost.org/trac/boost/ticket/8129">#8129</a>.
220   </li>
221   <li>Maintenance fixes.</li>
222 </ul>
223 </p>
224
225 <h2><a name="boost_1_49">Boost 1.49 release</a></h2>
226
227 <p>
228 <ul>
229   <li>Suppressed a potential narrow conversion warning described in
230     ticket <a href="https://svn.boost.org/trac/boost/ticket/3365">#3365</a>.
231   </li>
232 </ul>
233 </p>
234
235 <h2><a name="boost_1_48">Boost 1.48 release</a></h2>
236
237 <p>
238 <ul>
239   <li>Fixed a compatibility problem with
240     <a href="../../../doc/html/foreach.html">Boost.Foreach</a>
241     (ticket <a href="https://svn.boost.org/trac/boost/ticket/5741">#5741</a>).
242   </li>
243 </ul>
244 </p>
245
246 <h2><a name="boost_1_47">Boost 1.47 release</a></h2>
247
248 <p>
249 <ul>
250   <li>Fixed an ADL problem in
251     <a href="reference/key_extraction.html#composite_key_compare"><code>composite_key_compare</code></a>
252     related with <a href="../../../doc/html/ref.html">Boost.Ref</a>.
253   </li>
254   <li>Maintenance fixes.</li>
255 </ul>
256 </p>
257
258 <h2><a name="boost_1_44">Boost 1.44 release</a></h2>
259
260 <p>
261 <ul>
262   <li>
263     Fixed a bug preventing the use of <code>modify_key</code> with
264     rollback in <a href="reference/ord_indices.html#modify_key">ordered</a> and
265     <a href="reference/hash_indices.html#modify_key">hashed</a> indices when
266     <code>Modifier</code> and <code>Rollback</code> are different types
267     (ticket <a href="https://svn.boost.org/trac/boost/ticket/4130">#4130</a>).
268   </li>
269 </ul>
270 </p>
271
272 <h2><a name="boost_1_43">Boost 1.43 release</a></h2>
273
274 <p>
275 <ul>
276   <li>
277     <a href="../../serialization/doc/serialization.html#constructors">Serialization
278     of non default constructible values</a> is now properly supported
279     through user-provided facilities <code>save_construct_data</code> and
280     <code>load_construct_data</code>.
281     <code>multi_index_container</code> serialization
282     <a href="../../serialization/doc/tutorial.html#versioning">class version</a> has been
283     bumped from 1 to 2.
284   </li>
285 </ul>
286 </p>
287
288 <h2><a name="boost_1_42">Boost 1.42 release</a></h2>
289
290 <p>
291 <ul>
292   <li>Maintenance fixes.</li>
293 </ul>
294 </p>
295
296 <h2><a name="boost_1_41">Boost 1.41 release</a></h2>
297 <p>
298 <ul>
299   <li>Serialization now uses the portable
300   <a href="../../serialization/doc/wrappers.html#collection_size_type"><code>collection_size_type</code></a>
301   type instead of the original <code>std::size_t</code> (ticket
302   <a href="https://svn.boost.org/trac/boost/ticket/3365">#3365</a>).
303   <code>multi_index_container</code> serialization
304   <a href="../../serialization/doc/tutorial.html#versioning">class version</a> has been
305   bumped from 0 to 1.
306   </li>
307   <li>Fixed a concurrency bug in the implementation of
308     <a href="tutorial/debug.html#safe_mode">safe mode</a>
309     (ticket <a href="https://svn.boost.org/trac/boost/ticket/3462">#3462</a>).
310   </li>
311 </ul>
312 </p>
313
314 <h2><a name="boost_1_38">Boost 1.38 release</a></h2>
315
316 <p>
317 <ul>
318   <li>These constructs are deprecated:
319     <ul>
320       <li><code>nth_index_iterator&lt;MultiIndexContainer,N&gt;::type</code>,</li>
321       <li><code>multi_index_container&lt;...&gt;::nth_index_iterator&lt;N&gt;::type</code>,</li>
322       <li><code>nth_index_const_iterator&lt;MultiIndexContainer,N&gt;::type</code>,</li>
323       <li><code>multi_index_container&lt;...&gt;::nth_index_const_iterator&lt;N&gt;::type</code>,</li>
324       <li><code>index_iterator&lt;MultiIndexContainer,Tag&gt;::type</code>,</li>
325       <li><code>multi_index_container&lt;...&gt;::index_iterator&lt;Tag&gt;::type</code>,</li>
326       <li><code>index_const_iterator&lt;MultiIndexContainer,Tag&gt;::type</code>,</li>
327       <li><code>multi_index_container&lt;...&gt;::index_const_iterator&lt;Tag&gt;::type</code>.</li>
328     </ul>
329     Use the following instead:
330     <ul>
331       <li><code>nth_index&lt;MultiIndexContainer,N&gt;::type::iterator</code>,</li>
332       <li><code>multi_index_container&lt;...&gt;::nth_index&lt;N&gt;::type::iterator</code>,</li>
333       <li><code>nth_index&lt;MultiIndexContainer,N&gt;::type::const_iterator</code>,</li>
334       <li><code>multi_index_container&lt;...&gt;::nth_index&lt;N&gt;::type::const_iterator</code>,</li>
335       <li><code>index&lt;MultiIndexContainer,Tag&gt;::type::iterator</code>,</li>
336       <li><code>multi_index_container&lt;...&gt;::index&lt;Tag&gt;::type::iterator</code>,</li>
337       <li><code>index&lt;MultiIndexContainer,Tag&gt;::type::const_iterator</code>,</li>
338       <li><code>multi_index_container&lt;...&gt;::index&lt;Tag&gt;::type::const_iterator</code>.</li>
339     </ul>
340   </li>
341   <li>Maintenance fixes.</li>
342 </ul>
343 </p>
344
345 <h2><a name="boost_1_37">Boost 1.37 release</a></h2>
346
347 <p>
348 <ul>
349   <li>Maintenance fixes.</li>
350 </ul>
351 </p>
352
353 <h2><a name="boost_1_36">Boost 1.36 release</a></h2>
354
355 <p>
356 <ul>
357   <li><a name="stable_update">On prior versions of the library, the <a href="tutorial/indices.html#hash_updating">update
358   member functions</a> of hashed indices could alter the position of an element even if the
359   associated key did not change with the update. This is legal but probably unexpected behavior.
360   The functions have been rewritten to provide the additional guarantee that elements with
361   unmodified key will not change position in hashed indices, just as always was the case with
362   ordered indices. These guarantees are now documented in the reference.</a></li>
363   <li>Added the constructor <code>multi_index_container::multi_index_container(const allocator_type&amp;)</code>
364   to mimic the equivalent interface in STL sequence containers.
365   <li>Maintenance fixes.</li>
366 </ul>
367 </p>
368
369 <h2><a name="boost_1_35">Boost 1.35 release</a></h2>
370
371 <p>
372 <ul>
373   <li>New <a href="tutorial/key_extraction.html#global_fun"><code>global_fun</code></a>
374     predefined key extractor.
375   </li>
376   <li>Added <a href="tutorial/indices.html#iterator_to"><code>iterator_to</code></a>
377     facility.
378   </li>
379   <li>Included <a href="tutorial/creation.html#special_allocator">support for
380     non-standard allocators</a> such as those of
381     <a href="../../interprocess/index.html">Boost.Interprocess</a>, which makes
382     <code>multi_index_container</code>s placeable in shared memory.
383   </li>
384   <li>New versions of <code>modify</code> and <code>modify_key</code> with
385    rollback, as described in the
386    <a href="tutorial/basics.html#ord_updating">tutorial</a>.
387   </li>
388   <li>Indices provide the new <code>cbegin</code>, <code>cend</code> and,
389     when applicable, <code>crbegin</code> and <code>crend</code>
390     member functions, in accordance with the latest drafts of the next
391     revision of the C++ standard.
392   </li>
393   <li>Hinted insertion in ordered indices fully conforms to the resolutions of
394     C++ Standard Library
395     <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#233">Defect
396     Report 233</a>. The new requirement that the point of insertion
397     be always as close as possible to the hint induces a different behavior than
398     exhibited in former releases of Boost.MultiIndex, which can potentially cause
399     backwards compatibility problems; in any case, the likelihood of these
400     compatibility issues arising in a real scenario is very low.
401   </li>
402   <li>Sequenced and random access indices now follow the requirements of the
403     C++ standard for sequence containers with respect to the operations
404     <code>assign(f,l)</code> and <code>insert(p,f,l)</code> (23.1.1/9): if
405     <code>f</code> and <code>l</code> are of the same integral type, the
406     iterator-based overloads of these member functions are avoided:
407 <blockquote><pre>
408 <span class=keyword>typedef</span> <span class=identifier>multi_index_container</span><span class=special>&lt;</span>
409   <span class=keyword>int</span><span class=special>,</span><span class=identifier>indexed_by</span><span class=special>&lt;</span><span class=identifier>sequenced</span><span class=special>&lt;&gt;</span> <span class=special>&gt;</span>
410 <span class=special>&gt;</span> <span class=identifier>sequenced_container</span><span class=special>;</span>
411
412 <span class=identifier>std</span><span class=special>::</span><span class=identifier>list</span><span class=special>&lt;</span><span class=keyword>int</span><span class=special>&gt;</span>      <span class=identifier>l</span><span class=special>(...);</span>
413 <span class=identifier>sequenced_container</span> <span class=identifier>c</span><span class=special>;</span>
414
415 <span class=comment>// iterator-based overload of assign</span>
416 <span class=identifier>c</span><span class=special>.</span><span class=identifier>assign</span><span class=special>(</span><span class=identifier>l</span><span class=special>.</span><span class=identifier>begin</span><span class=special>(),</span><span class=identifier>l</span><span class=special>.</span><span class=identifier>end</span><span class=special>());</span> 
417
418 <span class=comment>// The following is equivalent to
419 //   c.assign(
420 //      static_cast&lt;sequenced_container::size_type&gt;(10),100);
421 // that is, &quot;10&quot; and &quot;100&quot; are not taken to be iterators as
422 // in the previous expression.</span>
423 <span class=identifier>c</span><span class=special>.</span><span class=identifier>assign</span><span class=special>(</span><span class=number>10</span><span class=special>,</span><span class=number>100</span><span class=special>);</span>
424 </pre></blockquote>
425   </li>
426   <li>The performance of ordered indices <code>range</code> and
427     <code>equal_range</code> has been improved.
428   </li>
429   <li>Maintenance fixes.</li>
430 </ul>
431 </p>
432
433 <h2><a name="boost_1_34">Boost 1.34 release</a></h2>
434
435 <p>
436 <ul>
437   <li>Added <a href="tutorial/indices.html#rnd_indices">random access
438     indices</a>.
439   </li>
440   <li>Non key-based indices provide new
441     <a href="tutorial/indices.html#rearrange">rearrange facilities</a>
442     allowing for interaction with external mutating algorithms.
443   </li>
444   <li>All predefined Boost.MultiIndex key extractors
445     instantiated for a given type <code>T</code> can handle objects of types
446     derived from or convertible to <code>T</code> (and
447     <a href="reference/key_extraction.html#chained_pointers">chained pointers</a>
448     to those). Previously, only objects of the exact type specified (along with
449     <code>reference_wrapper</code>s and chained pointers to them) were accepted.
450   </li>
451   <li><a href="reference/key_extraction.html#composite_key_compare"><code>composite_key_compare</code></a>
452     and related classes accept operands not included in tuples as if they were passed
453     in a tuple of length 1; this allows the user to omit tuple enclosing in
454     lookup operations involving composite keys when only the first key is provided.
455   </li>
456   <li>The core algorithms of ordered indices have been optimized, yielding
457     an estimated reduction of about 5% in insertion times.
458   </li>
459   <li>Size of ordered indices node headers have been reduced by 25% on
460     most platforms, using a well known
461     <a href="tutorial/indices.html#ordered_node_compression">optimization
462     technique</a>.
463   </li>
464   <li>The tutorial has been restructured, new examples added.</li>
465   <li>Maintenance fixes.</li>
466 </ul>
467 </p>
468
469 <h2><a name="boost_1_33_1">Boost 1.33.1 release</a></h2>
470
471 <p>
472 <ul>
473   <li>For ordered and hashed indices, <code>erase(it)</code> and
474     <code>erase(first,last)</code> now return an iterator to the element
475     following those being deleted (previously nothing was returned), in
476     accordance with the C++ Standard Library
477     <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#130">Defect
478     Report 130</a> and issue 6.19 of TR1
479     <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1837.pdf">Issues
480     List</a>.
481   </li>
482   <li>Boost.MultiIndex offers the usual guarantees with respect to
483     multithreading code provided by most STL implementations:
484     <ol>
485       <li>Concurrent access to different containers is safe.</li>
486       <li>Concurrent read-only access to the same container is safe.</li>
487     </ol>
488     In previous versions of the library, the latter guarantee was not properly
489     maintained if the <a href="tutorial/debug.html#safe_mode">safe
490     mode</a> was set. This problem has been fixed now. 
491   </li>
492   <li>Maintenance fixes.</li>
493 </ul>
494 </p>
495
496 <h2><a name="boost_1_33">Boost 1.33 release</a></h2>
497
498 <p>
499 <ul>
500   <li>Added <a href="tutorial/indices.html#hashed_indices">hashed indices</a>,
501     whose interface is based on the specification for unordered associative
502     containers by the C++ Standard Library Technical Report (TR1).
503   </li>
504   <li>Added <a href="tutorial/creation.html#serialization">serialization support</a>
505     for <a href="../../serialization/index.html">Boost.Serialization</a>.
506   </li>
507   <li>Destruction of <code>multi_index_container</code>s and <code>clear</code>
508     memfuns now perform faster.
509   </li>
510   <li>Internal changes aimed at reducing the length of symbol names generated
511     by the compiler; cuts of up to a 50% can be achieved with respect to the
512     Boost 1.32 release. This results in much shorter and more readable error
513     messages and has also a beneficial impact on compilers with strict limits on
514     symbol name lengths. Additionally, a section on further
515     <a href="compiler_specifics.html#symbol_reduction">reduction of symbol name
516     lengths</a> has been added.
517   </li>
518   <li>Restructured some parts of the documentation, new examples.</li>
519   <li>Maintenance fixes.</li>
520 </ul>
521 </p>
522
523 <hr>
524
525 <div class="prev_link"><a href="future_work.html"><img src="prev.gif" alt="future work" border="0"><br>
526 Future work
527 </a></div>
528 <div class="up_link"><a href="index.html"><img src="up.gif" alt="index" border="0"><br>
529 Index
530 </a></div>
531 <div class="next_link"><a href="acknowledgements.html"><img src="next.gif" alt="acknowledgements" border="0"><br>
532 Acknowledgements
533 </a></div><br clear="all" style="clear: all;">
534
535 <br>
536
537 <p>Revised April 10th 2017</p>
538
539 <p>&copy; Copyright 2003-2017 Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
540 Distributed under the Boost Software 
541 License, Version 1.0. (See accompanying file <a href="../../../LICENSE_1_0.txt">
542 LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">
543 http://www.boost.org/LICENSE_1_0.txt</a>)
544 </p>
545
546 </body>
547 </html>