Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / histogram / doc / html / histogram / history.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>Revision history</title>
5 <link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7 <link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.Histogram">
8 <link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.Histogram">
9 <link rel="prev" href="rationale.html" title="Rationale">
10 </head>
11 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
12 <table cellpadding="2" width="100%"><tr>
13 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
14 <td align="center"><a href="../../../../../index.html">Home</a></td>
15 <td align="center"><a href="../../../../libraries.htm">Libraries</a></td>
16 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
17 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
18 <td align="center"><a href="../../../../../more/index.htm">More</a></td>
19 </tr></table>
20 <hr>
21 <div class="spirit-nav">
22 <a accesskey="p" href="rationale.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
23 </div>
24 <div class="section">
25 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
26 <a name="histogram.history"></a><a class="link" href="history.html" title="Revision history">Revision history</a>
27 </h2></div></div></div>
28 <h4>
29 <a name="histogram.history.h0"></a>
30       <span class="phrase"><a name="histogram.history.boost_1_72"></a></span><a class="link" href="history.html#histogram.history.boost_1_72">Boost
31       1.72</a>
32     </h4>
33 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
34 <li class="listitem">
35           New features
36           <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
37 <li class="listitem">
38                 Better deduction guides for axis types and histogram type on C++17
39                 compilers
40               </li>
41 <li class="listitem">
42                 performance improvements in the indexing code
43               </li>
44 <li class="listitem">
45                 new histogram::fill method for accelerated filling from chunks of
46                 values
47               </li>
48 <li class="listitem">
49                 ASCII bar charts for 1D histograms when boost/histogram/ostream.hpp
50                 is included (contributed by Przemyslaw Bartosik)
51               </li>
52 <li class="listitem">
53                 Passing invalid axis options causes user-friendly compile-time errors
54               </li>
55 <li class="listitem">
56                 Wrong usage of weight() and sample() causes user-friendly compile-time
57                 errors
58               </li>
59 <li class="listitem">
60                 algorithm::empty returns true if all histogram values are equal to
61                 the default value (contributed by Henry Schreiner)
62               </li>
63 <li class="listitem">
64                 algorithm::reduce with shrink is now well defined when values are
65                 not bin edges
66               </li>
67 <li class="listitem">
68                 axis::traits::rank returns the number of values that this axis accepts
69               </li>
70 <li class="listitem">
71                 axis::traits::is_continuous returns whether an axis is continuous
72                 or discrete
73               </li>
74 <li class="listitem">
75                 axis::traits::is_inclusive returns whether an axis has a bin for
76                 any possible input
77               </li>
78 <li class="listitem">
79                 limited weight support for mean accumulator
80               </li>
81 <li class="listitem">
82                 accumulators::weighted_mean::sum_of_weights_squared method added
83               </li>
84 </ul></div>
85         </li>
86 <li class="listitem">
87           Fixes
88           <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
89 <li class="listitem">
90                 Support of -std=c++2a and -stdlib=libc++ on clang, compatibility
91                 with gcc-9
92               </li>
93 <li class="listitem">
94                 Fixed: weight could be passed instead of a sample during filling
95                 without triggering an error
96               </li>
97 <li class="listitem">
98                 Fixed: segfault when too many indices were passed to algorithm::project
99               </li>
100 <li class="listitem">
101                 Fixed: indexed range generator did not work with storage based on
102                 std::array
103               </li>
104 <li class="listitem">
105                 Fixed: weighted_mean() + weighted_mean() != weighted_mean() (discovered
106                 and reported by Henry Schreiner)
107               </li>
108 <li class="listitem">
109                 Fixed: axis::option::test(...) returned true if any bits in the test
110                 mask were set (now returns true if all bits in the test mask are
111                 set)
112               </li>
113 <li class="listitem">
114                 Protecting calls to min, max with against macro expansion
115               </li>
116 <li class="listitem">
117                 Replaced all crlf with lf in concepts.qbk
118               </li>
119 <li class="listitem">
120                 Missing throw of std::invalid_argument when user passes too many
121                 axes to histogram
122               </li>
123 <li class="listitem">
124                 Corrected documentation of serialization support in concepts section
125               </li>
126 <li class="listitem">
127                 Resolved warnings for various compiler versions
128               </li>
129 </ul></div>
130         </li>
131 <li class="listitem">
132           Other
133           <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
134 <li class="listitem">
135                 Added Boost.Histogram logo
136               </li>
137 <li class="listitem">
138                 Added missing copyright notices
139               </li>
140 <li class="listitem">
141                 axis::category::value returns copy for scalar types and const reference
142                 otherwise
143               </li>
144 <li class="listitem">
145                 std::ostringstream not used anymore to generate exception messages
146                 to reduces code bloat
147               </li>
148 <li class="listitem">
149                 Documentation improvements
150                 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; ">
151 <li class="listitem">
152                       Restructured overview section in documentation
153                     </li>
154 <li class="listitem">
155                       Updated user guide to demonstrate new features
156                     </li>
157 <li class="listitem">
158                       Updated accumulator examples
159                     </li>
160 <li class="listitem">
161                       Concepts explain how accumulators can optionally accept weights
162                     </li>
163 </ul></div>
164               </li>
165 <li class="listitem">
166                 Updated benchmark code
167               </li>
168 <li class="listitem">
169                 New test checks consistency of b2 and cmake build systems
170               </li>
171 <li class="listitem">
172                 New test checks One-Definition-Rule (fails if non-templated function
173                 is not declared inline)
174               </li>
175 <li class="listitem">
176                 Serialization code decoupled from Boost.Serialization
177               </li>
178 <li class="listitem">
179                 Removed dependency on Boost.CallableTraits
180               </li>
181 </ul></div>
182         </li>
183 </ul></div>
184 <h4>
185 <a name="histogram.history.h1"></a>
186       <span class="phrase"><a name="histogram.history.boost_1_71"></a></span><a class="link" href="history.html#histogram.history.boost_1_71">Boost
187       1.71</a>
188     </h4>
189 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
190 <li class="listitem">
191           New features
192           <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
193 <li class="listitem">
194                 Thread-safe accumulators boost::histogram::accumulators::thread_safe
195                 based on std::atomics
196               </li>
197 <li class="listitem">
198                 Support for thread-safe storages
199               </li>
200 <li class="listitem">
201                 Support for compiling without exceptions/RTTI (increases performance
202                 by 10-20 %) [with contributions from Glen Fernandez]
203               </li>
204 <li class="listitem">
205                 Performance improvements for 1D and 2D histograms
206               </li>
207 <li class="listitem">
208                 boost::histogram::indexed now returns forward iterator range instead
209                 of input iterator range
210               </li>
211 <li class="listitem">
212                 boost::histogram::indexed_range::accessor is now non-copyable and
213                 acts like reference to cell value, making most algorithms from the
214                 stdlib work
215               </li>
216 <li class="listitem">
217                 boost::histogram::algorithm::reduce
218                 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; ">
219 <li class="listitem">
220                       New slice option
221                     </li>
222 <li class="listitem">
223                       Fuse shrink, slice, and rebin options passed for the same axis
224                     </li>
225 <li class="listitem">
226                       Support histograms with some axis types with reduction support
227                     </li>
228 </ul></div>
229               </li>
230 <li class="listitem">
231                 boost::histogram::algorithm::project accepts runtime indices for
232                 static histograms
233               </li>
234 </ul></div>
235         </li>
236 <li class="listitem">
237           Fixes
238           <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
239 <li class="listitem">
240                 boost::histogram::algorithm::reduce also works on histograms that
241                 have some axis types without reduction support
242               </li>
243 <li class="listitem">
244                 boost::histogram::axis::traits::update now works correctly for boost::histogram::axis::variant
245               </li>
246 </ul></div>
247         </li>
248 <li class="listitem">
249           Other
250           <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
251 <li class="listitem">
252                 100 % test coverage
253               </li>
254 <li class="listitem">
255                 Drastically reduced internal Boost dependencies
256               </li>
257 <li class="listitem">
258                 Improved documentation and examples
259               </li>
260 <li class="listitem">
261                 Internally replaced boost::variant with boost::variant2
262               </li>
263 <li class="listitem">
264                 boost::histogram::axis::traits::is_reducible detects reducible axis
265                 types
266               </li>
267 <li class="listitem">
268                 Cleanup and refactoring of internals
269               </li>
270 <li class="listitem">
271                 Guarantee no-throw moves for all builtin axis types
272               </li>
273 <li class="listitem">
274                 Improved internal benchmarks
275               </li>
276 <li class="listitem">
277                 Compile cleanly at higher warning levels
278               </li>
279 </ul></div>
280         </li>
281 </ul></div>
282 <h4>
283 <a name="histogram.history.h2"></a>
284       <span class="phrase"><a name="histogram.history.boost_1_70"></a></span><a class="link" href="history.html#histogram.history.boost_1_70">Boost
285       1.70</a>
286     </h4>
287 <p>
288       First Boost release, version 4.0 in former internal counting.
289     </p>
290 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
291 <li class="listitem">
292           Removed Python bindings, will be developed in separate repository
293         </li>
294 <li class="listitem">
295           All axes can be made optionally circular, except category axis
296         </li>
297 <li class="listitem">
298           All axes now support generic attached metadata
299         </li>
300 <li class="listitem">
301           All axes have now independently configurable underflow/overflow extra bins
302         </li>
303 <li class="listitem">
304           Removed circular axis (which is just a circular regular axis)
305         </li>
306 <li class="listitem">
307           Added indexed adaptor generator for convenient and fast iteration over
308           histograms
309         </li>
310 <li class="listitem">
311           Support for axes that can grow in range
312         </li>
313 <li class="listitem">
314           Support for axes which accept multiple values (example: hexagonal binning)
315         </li>
316 <li class="listitem">
317           Support for profiles and more generally, arbitrary accumulators in each
318           cell
319         </li>
320 <li class="listitem">
321           Support for serializing to xml archives
322         </li>
323 <li class="listitem">
324           Added compatibility with Boost.Range, Boost.Units, and Boost.Accumulators
325         </li>
326 <li class="listitem">
327           Added deduction guides for axis types and histogram
328         </li>
329 <li class="listitem">
330           Performance improvements
331         </li>
332 <li class="listitem">
333           Renamed <code class="computeroutput"><span class="identifier">adaptive_storage</span></code>
334           to <code class="computeroutput"><span class="identifier">unlimited_storage</span></code>
335         </li>
336 <li class="listitem">
337           Replaced <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_int</span></code> with custom type to decouple
338           libraries
339         </li>
340 <li class="listitem">
341           Internal simplification of <code class="computeroutput"><span class="identifier">axis</span><span class="special">::</span><span class="identifier">variant</span></code>
342         </li>
343 <li class="listitem">
344           Make all storages behave more like containers, simplifying the design
345         </li>
346 <li class="listitem">
347           Histograms supports add, sub, mul, div
348         </li>
349 <li class="listitem">
350           replaced <code class="computeroutput"><span class="keyword">operator</span><span class="special">[]</span></code>
351           in axis with explicit method <code class="computeroutput"><span class="identifier">bin</span></code>
352         </li>
353 <li class="listitem">
354           replaced <code class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></code>
355           in axis with explicit method <code class="computeroutput"><span class="identifier">index</span></code>
356         </li>
357 <li class="listitem">
358           replaced internal use of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">containers</span></code>
359           with stdlib containers
360         </li>
361 <li class="listitem">
362           Much improved docs, reference documentation, user guide, more examples
363         </li>
364 </ul></div>
365 <h4>
366 <a name="histogram.history.h3"></a>
367       <span class="phrase"><a name="histogram.history.3_2_not_in_boost"></a></span><a class="link" href="history.html#histogram.history.3_2_not_in_boost">3.2
368       (not in Boost)</a>
369     </h4>
370 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
371 <li class="listitem">
372           Allocator support everywhere
373         </li>
374 <li class="listitem">
375           Internal refactoring
376         </li>
377 </ul></div>
378 <h4>
379 <a name="histogram.history.h4"></a>
380       <span class="phrase"><a name="histogram.history.3_1_not_in_boost"></a></span><a class="link" href="history.html#histogram.history.3_1_not_in_boost">3.1
381       (not in Boost)</a>
382     </h4>
383 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
384 <li class="listitem">
385           Renamed <code class="computeroutput"><span class="identifier">bincount</span></code> method
386           to <code class="computeroutput"><span class="identifier">size</span></code>
387         </li>
388 <li class="listitem">
389           Support for axes with only overflow and no underflow bin
390         </li>
391 <li class="listitem">
392           category axis now by default has bin for "other" input that does
393           not fall into the predefined categories, making it consistent with other
394           axes
395         </li>
396 <li class="listitem">
397           NaN is now consistently put into overflow bin for all axes
398         </li>
399 <li class="listitem">
400           Eliminated warnings about safe internal conversions on MSVC
401         </li>
402 <li class="listitem">
403           Established a cpp house style with corresponding .clang-format file
404         </li>
405 <li class="listitem">
406           Better detection of Python library on all systems
407         </li>
408 <li class="listitem">
409           Improved code coverage by testing more input errors
410         </li>
411 <li class="listitem">
412           Raise ValueError instead of generic RuntimeError in Python on input errors
413         </li>
414 </ul></div>
415 <h4>
416 <a name="histogram.history.h5"></a>
417       <span class="phrase"><a name="histogram.history.3_0_not_in_boost"></a></span><a class="link" href="history.html#histogram.history.3_0_not_in_boost">3.0
418       (not in Boost)</a>
419     </h4>
420 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
421 <li class="listitem">
422           Support for efficient adding of multiple histograms and scaling
423         </li>
424 <li class="listitem">
425           Re-design of category axis as a general mapping between unique values and
426           bins
427         </li>
428 <li class="listitem">
429           Re-design of the bin description an axis returns upon element access
430         </li>
431 <li class="listitem">
432           Interface cleanup and simplification, more consistency between Python and
433           C++ interface
434         </li>
435 <li class="listitem">
436           Iterators for histogram and axes for STL compatibility
437         </li>
438 <li class="listitem">
439           Regular axis in C++: Allowing transforms with state
440         </li>
441 <li class="listitem">
442           Regular axis in Python: Support for all C++ transforms
443         </li>
444 <li class="listitem">
445           Polymorphic axis::any type
446         </li>
447 <li class="listitem">
448           Internal refactoring from boost::mpl and boost::fusion to std::tuple and
449           boost::mp11
450         </li>
451 <li class="listitem">
452           Windows support
453         </li>
454 </ul></div>
455 <h4>
456 <a name="histogram.history.h6"></a>
457       <span class="phrase"><a name="histogram.history.2_0_not_in_boost"></a></span><a class="link" href="history.html#histogram.history.2_0_not_in_boost">2.0
458       (not in Boost)</a>
459     </h4>
460 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
461 <li class="listitem">
462           Added static_histogram (v1.0 only had dynamic_histogram).
463         </li>
464 <li class="listitem">
465           Merged wfill(...) and fill(...) interface.
466         </li>
467 <li class="listitem">
468           Support custom allocators in storage classes.
469         </li>
470 <li class="listitem">
471           Replaced static_storage with array_storage.
472         </li>
473 <li class="listitem">
474           Replaced dynamic_storage with unlimited_storage, which adds the capability
475           to grow the bin counter into a cpp_int, thus avoiding integer overflow
476           completely.
477         </li>
478 <li class="listitem">
479           Serialization uses binary_archive instead of text_archive. The latter is
480           portable, but the performance is terrible.
481         </li>
482 <li class="listitem">
483           Python interface changed: histograms are now iterable, returning axis classes
484         </li>
485 <li class="listitem">
486           Support reduction (removing a subset of axes and returning the equivalent
487           histogram; in other words, those axes are integrated over)
488         </li>
489 </ul></div>
490 <h4>
491 <a name="histogram.history.h7"></a>
492       <span class="phrase"><a name="histogram.history.1_0_not_in_boost"></a></span><a class="link" href="history.html#histogram.history.1_0_not_in_boost">1.0
493       (not in Boost)</a>
494     </h4>
495 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
496           First stable version.
497         </li></ul></div>
498 </div>
499 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
500 <td align="left"></td>
501 <td align="right"><div class="copyright-footer">Copyright &#169; 2016-2019 Hans
502       Dembinski<p>
503         Distributed under the Boost Software License, Version 1.0. (See accompanying
504         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
505       </p>
506 </div></td>
507 </tr></table>
508 <hr>
509 <div class="spirit-nav">
510 <a accesskey="p" href="rationale.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
511 </div>
512 </body>
513 </html>