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 1. Boost.Histogram">
8 <link rel="up" href="../index.html" title="Chapter 1. Boost.Histogram">
9 <link rel="prev" href="rationale.html" title="Rationale">
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>
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>
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>
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
33 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
36 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
38 Better deduction guides for axis types and histogram type on C++17
42 performance improvements in the indexing code
45 new histogram::fill method for accelerated filling from chunks of
49 ASCII bar charts for 1D histograms when boost/histogram/ostream.hpp
50 is included (contributed by Przemyslaw Bartosik)
53 Passing invalid axis options causes user-friendly compile-time errors
56 Wrong usage of weight() and sample() causes user-friendly compile-time
60 algorithm::empty returns true if all histogram values are equal to
61 the default value (contributed by Henry Schreiner)
64 algorithm::reduce with shrink is now well defined when values are
68 axis::traits::rank returns the number of values that this axis accepts
71 axis::traits::is_continuous returns whether an axis is continuous
75 axis::traits::is_inclusive returns whether an axis has a bin for
79 limited weight support for mean accumulator
82 accumulators::weighted_mean::sum_of_weights_squared method added
88 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
90 Support of -std=c++2a and -stdlib=libc++ on clang, compatibility
94 Fixed: weight could be passed instead of a sample during filling
95 without triggering an error
98 Fixed: segfault when too many indices were passed to algorithm::project
100 <li class="listitem">
101 Fixed: indexed range generator did not work with storage based on
104 <li class="listitem">
105 Fixed: weighted_mean() + weighted_mean() != weighted_mean() (discovered
106 and reported by Henry Schreiner)
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
113 <li class="listitem">
114 Protecting calls to min, max with against macro expansion
116 <li class="listitem">
117 Replaced all crlf with lf in concepts.qbk
119 <li class="listitem">
120 Missing throw of std::invalid_argument when user passes too many
123 <li class="listitem">
124 Corrected documentation of serialization support in concepts section
126 <li class="listitem">
127 Resolved warnings for various compiler versions
131 <li class="listitem">
133 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
134 <li class="listitem">
135 Added Boost.Histogram logo
137 <li class="listitem">
138 Added missing copyright notices
140 <li class="listitem">
141 axis::category::value returns copy for scalar types and const reference
144 <li class="listitem">
145 std::ostringstream not used anymore to generate exception messages
146 to reduces code bloat
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
154 <li class="listitem">
155 Updated user guide to demonstrate new features
157 <li class="listitem">
158 Updated accumulator examples
160 <li class="listitem">
161 Concepts explain how accumulators can optionally accept weights
165 <li class="listitem">
166 Updated benchmark code
168 <li class="listitem">
169 New test checks consistency of b2 and cmake build systems
171 <li class="listitem">
172 New test checks One-Definition-Rule (fails if non-templated function
173 is not declared inline)
175 <li class="listitem">
176 Serialization code decoupled from Boost.Serialization
178 <li class="listitem">
179 Removed dependency on Boost.CallableTraits
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
189 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
190 <li class="listitem">
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
197 <li class="listitem">
198 Support for thread-safe storages
200 <li class="listitem">
201 Support for compiling without exceptions/RTTI (increases performance
202 by 10-20 %) [with contributions from Glen Fernandez]
204 <li class="listitem">
205 Performance improvements for 1D and 2D histograms
207 <li class="listitem">
208 boost::histogram::indexed now returns forward iterator range instead
209 of input iterator range
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
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">
222 <li class="listitem">
223 Fuse shrink, slice, and rebin options passed for the same axis
225 <li class="listitem">
226 Support histograms with some axis types with reduction support
230 <li class="listitem">
231 boost::histogram::algorithm::project accepts runtime indices for
236 <li class="listitem">
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
243 <li class="listitem">
244 boost::histogram::axis::traits::update now works correctly for boost::histogram::axis::variant
248 <li class="listitem">
250 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
251 <li class="listitem">
254 <li class="listitem">
255 Drastically reduced internal Boost dependencies
257 <li class="listitem">
258 Improved documentation and examples
260 <li class="listitem">
261 Internally replaced boost::variant with boost::variant2
263 <li class="listitem">
264 boost::histogram::axis::traits::is_reducible detects reducible axis
267 <li class="listitem">
268 Cleanup and refactoring of internals
270 <li class="listitem">
271 Guarantee no-throw moves for all builtin axis types
273 <li class="listitem">
274 Improved internal benchmarks
276 <li class="listitem">
277 Compile cleanly at higher warning levels
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
288 First Boost release, version 4.0 in former internal counting.
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
294 <li class="listitem">
295 All axes can be made optionally circular, except category axis
297 <li class="listitem">
298 All axes now support generic attached metadata
300 <li class="listitem">
301 All axes have now independently configurable underflow/overflow extra bins
303 <li class="listitem">
304 Removed circular axis (which is just a circular regular axis)
306 <li class="listitem">
307 Added indexed adaptor generator for convenient and fast iteration over
310 <li class="listitem">
311 Support for axes that can grow in range
313 <li class="listitem">
314 Support for axes which accept multiple values (example: hexagonal binning)
316 <li class="listitem">
317 Support for profiles and more generally, arbitrary accumulators in each
320 <li class="listitem">
321 Support for serializing to xml archives
323 <li class="listitem">
324 Added compatibility with Boost.Range, Boost.Units, and Boost.Accumulators
326 <li class="listitem">
327 Added deduction guides for axis types and histogram
329 <li class="listitem">
330 Performance improvements
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>
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
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>
343 <li class="listitem">
344 Make all storages behave more like containers, simplifying the design
346 <li class="listitem">
347 Histograms supports add, sub, mul, div
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>
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>
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
361 <li class="listitem">
362 Much improved docs, reference documentation, user guide, more examples
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
370 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
371 <li class="listitem">
372 Allocator support everywhere
374 <li class="listitem">
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
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>
388 <li class="listitem">
389 Support for axes with only overflow and no underflow bin
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
396 <li class="listitem">
397 NaN is now consistently put into overflow bin for all axes
399 <li class="listitem">
400 Eliminated warnings about safe internal conversions on MSVC
402 <li class="listitem">
403 Established a cpp house style with corresponding .clang-format file
405 <li class="listitem">
406 Better detection of Python library on all systems
408 <li class="listitem">
409 Improved code coverage by testing more input errors
411 <li class="listitem">
412 Raise ValueError instead of generic RuntimeError in Python on input errors
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
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
424 <li class="listitem">
425 Re-design of category axis as a general mapping between unique values and
428 <li class="listitem">
429 Re-design of the bin description an axis returns upon element access
431 <li class="listitem">
432 Interface cleanup and simplification, more consistency between Python and
435 <li class="listitem">
436 Iterators for histogram and axes for STL compatibility
438 <li class="listitem">
439 Regular axis in C++: Allowing transforms with state
441 <li class="listitem">
442 Regular axis in Python: Support for all C++ transforms
444 <li class="listitem">
445 Polymorphic axis::any type
447 <li class="listitem">
448 Internal refactoring from boost::mpl and boost::fusion to std::tuple and
451 <li class="listitem">
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
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).
464 <li class="listitem">
465 Merged wfill(...) and fill(...) interface.
467 <li class="listitem">
468 Support custom allocators in storage classes.
470 <li class="listitem">
471 Replaced static_storage with array_storage.
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
478 <li class="listitem">
479 Serialization uses binary_archive instead of text_archive. The latter is
480 portable, but the performance is terrible.
482 <li class="listitem">
483 Python interface changed: histograms are now iterable, returning axis classes
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)
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
495 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
496 First stable version.
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 © 2016-2019 Hans
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)
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>