273 lines
15 KiB
Plaintext
273 lines
15 KiB
Plaintext
[/
|
|
Copyright Hans Dembinski 2018 - 2019.
|
|
Distributed under the Boost Software License, Version 1.0.
|
|
(See accompanying file LICENSE_1_0.txt or copy at
|
|
https://www.boost.org/LICENSE_1_0.txt)
|
|
]
|
|
|
|
[section:changelog Changelog]
|
|
|
|
[heading Boost 1.81]
|
|
|
|
* Added new `accumulators::fraction` to compute fractions, their variance, and confidence intervals
|
|
* Added interval computers for fractions: `utility::clopper_pearson`, `utility::wilson_interval`, `utility::jeffreys_interval`, `utility::wald_interval` which can compute intervals with arbitrary confidence level
|
|
* Added `utility::confidence_level` and `utility::deviation` types to pass confidence levels as probabilities or in multiples of standard deviation for all interval computers, respectively
|
|
* Fixed internal `sub_array` and `span` in C++20
|
|
|
|
[heading Boost 1.80]
|
|
|
|
* Fixed segfault in `indexed` when trying to iterate over histogram with axes of zero size (physical or logical) under certain conditions
|
|
* Removed previously deprecated API:
|
|
* class `accumulators::thread_safe`: use `accumulators::count<T, true>`
|
|
* Methods `accumulators::sum::large` and `accumulators::sum::small`: use `accumulators::sum::large_part` and `accumulators::sum::small_part`
|
|
* Type alias `algorithm::reduce_option`: use `algorithm::reduce_command`
|
|
* Template function `axis::traits::static_options`: use `axis::traits::get_options`
|
|
* Template function `axis::traits::static_is_inclusive`: use `axis::traits::is_inclusive`
|
|
* Type alias `indexed::range_iterator`: use `indexed::iterator`
|
|
* Type alias `indexed::accessor::reference`: use `indexed::accessor::const_reference`
|
|
|
|
[heading Boost 1.79]
|
|
|
|
* Division support for `accumulators::weighted_sum`
|
|
* `axis::regular` and `axis::variable` now represent closed intervals if overflow bin is absent, this is needed for example to correctly bin a probability in the closed interval [0, 1]
|
|
* cpp17 support: set axis compile-time options via deduction guide
|
|
|
|
[heading Boost 1.78]
|
|
|
|
* Deprecate `accumulators::sum::small` and `::large` as workaround for bug in windows.h
|
|
* Fixed broken division operator in `accumulators::count`
|
|
* Fix bug in 1D histogram::fill when axis is growing and argument is single value
|
|
* Improvements to documentation
|
|
|
|
[heading Boost 1.77]
|
|
|
|
* `indexed` now allows iteration over user-defined rectangular subrange
|
|
* Deprecate `accumulators::thread_safe`, users should replace with optionally thread-safe `accumulators::count`
|
|
* Fixed broken scaling operator in `accumulators::count`
|
|
* Fixed bug in `axis::integer::inclusive`
|
|
* Improvements to ostreaming: support for more accumulators, drawing unicode bar charts is now the default
|
|
|
|
[heading Boost 1.76]
|
|
|
|
* Fixes
|
|
* `algorithm::reduce` with `crop` now does not remove the counts in flow bins anymore if the selected range actually overlaps with the flow bins, making the treatment of flow bins consistent with inner bins
|
|
* `accumulators::mean` and `accumulators::weighted_mean` now compute the correct variance when `operator+=` was called, for example, when histograms with accumulators are added; this was wrong before leading to too small variances
|
|
* detection of weight support in user-defined accumulators was broken at compile-time if accumulator used `operator+=` instead of `operator()`; tests only accidentally passed for builtin `weighted_sum`
|
|
|
|
[heading Boost 1.75]
|
|
|
|
* Fixes
|
|
* `axis::variable{{0, 1, inf}}.value(1)` now returns 1 instead of NaN
|
|
* `axis::variable` ctor now throws `std::invalid_argument` if one values is NaN
|
|
* Implemented a workaround for a gcc bug (will be fixed upstream in gcc-10.x) that occurred when `<boost/type_traits.hpp>` was included before `<boost/histogram/axis/traits.hpp>`
|
|
* Fixed several new warnings from the latest compiler versions
|
|
* Fixed warnings that appear when compiling against the C++20 standard
|
|
|
|
* Documentation
|
|
* Documented undefined behaviour when value and variance are requested for `accumulator::mean` and `accumulator::weighted_mean` but the accumulator does not have enough entries to compute them
|
|
* Added explanation to rationale why axis metadata is checked for equality
|
|
|
|
[heading Boost 1.74]
|
|
|
|
* New features
|
|
* New axis `boolean`, a special kind of integer axis with only two values and no state (except metadata)
|
|
* Histograms with growing category axes are now addable even if the categories differ; the category axis of the output histogram is the union of the category axes of the input histograms
|
|
* Added axis::traits::continuous to match axis::traits::is_continuous
|
|
|
|
* Fixes
|
|
* `metadata()` method of builtin axis types now return a mutable reference even if the axis is const, as described in the documentation
|
|
|
|
* Documentation
|
|
* Sorted headers in reference and sorted items in namespaces
|
|
* Removed some internal typenames from templates
|
|
* Added reference for `sample_type`
|
|
|
|
* Other
|
|
* Simplified internal metaprogramming
|
|
* Replaced Boost Assert with plain cassert
|
|
|
|
[heading Boost 1.73]
|
|
|
|
* New features
|
|
* accumulators
|
|
* New `count` accumulator, a thin wrapper around a primitive arithmetic type; serves as a base class for users who want to add arbitrary metadata to each bin
|
|
* `sum` gained a `value()` method for consistency with other accumulators
|
|
* algorithm
|
|
* `reduce`
|
|
* Now supports positional commands
|
|
* `category` axis now supports `slice` command
|
|
* Added `crop` command, like `shrink`, but discards content of removed bins
|
|
* Renamed `reduce_option` to `reduce_command` (old name available but deprecated)
|
|
* `sum` gained a new argument, allowing users to select whether to sum over all bins or only the inner bins (excluding underflow and overflow)
|
|
* axis::traits
|
|
* Added traits `is_ordered` and `ordered` to distinguish between different kinds of DiscreteAxis types; used internally to handle `category` axis and `integer` axis differently
|
|
* Renamed `static_options` to `get_options` and `static_is_inclusive` to `is_inclusive` (old names available but deprecated)
|
|
|
|
* Fixes
|
|
* Fixed failing ODR test in bundled Boost due to wrong paths
|
|
* Fixed a bug in histogram::operator*= that could occur in user-defined accumulators
|
|
* Fixed a bug in `indexed` which could cause arithmetic past the end position
|
|
* Fixed a bug where the variance in `accumulators::weighted_sum` was not correctly computed if a normal histogram was added to the histogram that used `accumulators::weighted_sum`
|
|
* Fixed a bug where compiling with `-ffast-math` would break `accumulators::sum`
|
|
* Fixed `algorithm::reduce` to work with axes without *flow bins, which did not compile before
|
|
|
|
* Other
|
|
* Added an example and documentation on how to use Boost.Histogram as a backend
|
|
* Improved the docs on how to use custom accumulators and Boost.Accumulators
|
|
* Many small documentation improvements
|
|
* Improved docs for `algorithm::reduce`
|
|
* Improved experimental cmake build support
|
|
* Use `index_type` consistently everywhere instead of raw `int`
|
|
* Benchmark update in the docs
|
|
|
|
[heading Boost 1.72]
|
|
|
|
* New features
|
|
* Better deduction guides for axis types and histogram type on C++17 compilers
|
|
* performance improvements in the indexing code
|
|
* new histogram::fill method for accelerated filling from chunks of values
|
|
* ASCII bar charts for 1D histograms when boost/histogram/ostream.hpp is included (contributed by Przemyslaw Bartosik)
|
|
* Passing invalid axis options causes user-friendly compile-time errors
|
|
* Wrong usage of weight() and sample() causes user-friendly compile-time errors
|
|
* algorithm::empty returns true if all histogram values are equal to the default value (contributed by Henry Schreiner)
|
|
* algorithm::reduce with shrink is now well defined when values are not bin edges
|
|
* axis::traits::rank returns the number of values that this axis accepts
|
|
* axis::traits::is_continuous returns whether an axis is continuous or discrete
|
|
* axis::traits::is_inclusive returns whether an axis has a bin for any possible input
|
|
* limited weight support for mean accumulator
|
|
* accumulators::weighted_mean::sum_of_weights_squared method added
|
|
|
|
* Fixes
|
|
* Support of -std=c++2a and -stdlib=libc++ on clang, compatibility with gcc-9
|
|
* Fixed: weight could be passed instead of a sample during filling without triggering an error
|
|
* Fixed: segfault when too many indices were passed to algorithm::project
|
|
* Fixed: indexed range generator did not work with storage based on std::array
|
|
* Fixed: weighted_mean() + weighted_mean() != weighted_mean() (discovered and reported by Henry Schreiner)
|
|
* Fixed: axis::option::test(...) returned true if any bits in the test mask were set (now returns true if all bits in the test mask are set)
|
|
* Protecting calls to min, max with against macro expansion
|
|
* Replaced all crlf with lf in concepts.qbk
|
|
* Missing throw of std::invalid_argument when user passes too many axes to histogram
|
|
* Corrected documentation of serialization support in concepts section
|
|
* Resolved warnings for various compiler versions
|
|
|
|
* Other
|
|
* Added Boost.Histogram logo
|
|
* Added missing copyright notices
|
|
* axis::category::value returns copy for scalar types and const reference otherwise
|
|
* std::ostringstream not used anymore to generate exception messages to reduces code bloat
|
|
* Documentation improvements
|
|
* Restructured overview section in documentation
|
|
* Updated user guide to demonstrate new features
|
|
* Updated accumulator examples
|
|
* Concepts explain how accumulators can optionally accept weights
|
|
* Updated benchmark code
|
|
* New test checks consistency of b2 and cmake build systems
|
|
* New test checks One-Definition-Rule (fails if non-templated function is not declared inline)
|
|
* Serialization code decoupled from Boost.Serialization
|
|
* Removed dependency on Boost.CallableTraits
|
|
|
|
[heading Boost 1.71]
|
|
|
|
* New features
|
|
* Thread-safe accumulators boost::histogram::accumulators::thread_safe based on std::atomics
|
|
* Support for thread-safe storages
|
|
* Support for compiling without exceptions/RTTI (increases performance by 10-20 %) [with contributions from Glen Fernandez]
|
|
* Performance improvements for 1D and 2D histograms
|
|
* boost::histogram::indexed now returns forward iterator range instead of input iterator range
|
|
* boost::histogram::indexed_range::accessor is now non-copyable and acts like reference to cell value, making most algorithms from the stdlib work
|
|
* boost::histogram::algorithm::reduce
|
|
* New slice option
|
|
* Fuse shrink, slice, and rebin options passed for the same axis
|
|
* Support histograms with some axis types with reduction support
|
|
* boost::histogram::algorithm::project accepts runtime indices for static histograms
|
|
|
|
* Fixes
|
|
* boost::histogram::algorithm::reduce also works on histograms that have some axis types without reduction support
|
|
* boost::histogram::axis::traits::update now works correctly for boost::histogram::axis::variant
|
|
|
|
* Other
|
|
* 100 % test coverage
|
|
* Drastically reduced internal Boost dependencies
|
|
* Improved documentation and examples
|
|
* Internally replaced boost::variant with boost::variant2
|
|
* boost::histogram::axis::traits::is_reducible detects reducible axis types
|
|
* Cleanup and refactoring of internals
|
|
* Guarantee no-throw moves for all builtin axis types
|
|
* Improved internal benchmarks
|
|
* Compile cleanly at higher warning levels
|
|
|
|
[heading Boost 1.70]
|
|
|
|
First Boost release, version 4.0 in former internal counting.
|
|
|
|
* Removed Python bindings, will be developed in separate repository
|
|
* All axes can be made optionally circular, except category axis
|
|
* All axes now support generic attached metadata
|
|
* All axes have now independently configurable underflow/overflow extra bins
|
|
* Removed circular axis (which is just a circular regular axis)
|
|
* Added indexed adaptor generator for convenient and fast iteration over histograms
|
|
* Support for axes that can grow in range
|
|
* Support for axes which accept multiple values (example: hexagonal binning)
|
|
* Support for profiles and more generally, arbitrary accumulators in each cell
|
|
* Support for serializing to xml archives
|
|
* Added compatibility with Boost.Range, Boost.Units, and Boost.Accumulators
|
|
* Added deduction guides for axis types and histogram
|
|
* Performance improvements
|
|
* Renamed `adaptive_storage` to `unlimited_storage`
|
|
* Replaced `boost::multiprecision::cpp_int` with custom type to decouple libraries
|
|
* Internal simplification of `axis::variant`
|
|
* Make all storages behave more like containers, simplifying the design
|
|
* Histograms supports add, sub, mul, div
|
|
* replaced `operator[]` in axis with explicit method `bin`
|
|
* replaced `operator()` in axis with explicit method `index`
|
|
* replaced internal use of `boost::containers` with stdlib containers
|
|
* Much improved docs, reference documentation, user guide, more examples
|
|
|
|
[heading 3.2 (not in Boost)]
|
|
|
|
* Allocator support everywhere
|
|
* Internal refactoring
|
|
|
|
[heading 3.1 (not in Boost)]
|
|
|
|
* Renamed `bincount` method to `size`
|
|
* Support for axes with only overflow and no underflow bin
|
|
* category axis now by default has bin for "other" input that does not fall
|
|
into the predefined categories, making it consistent with other axes
|
|
* NaN is now consistently put into overflow bin for all axes
|
|
* Eliminated warnings about safe internal conversions on MSVC
|
|
* Established a cpp house style with corresponding .clang-format file
|
|
* Better detection of Python library on all systems
|
|
* Improved code coverage by testing more input errors
|
|
* Raise ValueError instead of generic RuntimeError in Python on input errors
|
|
|
|
[heading 3.0 (not in Boost)]
|
|
|
|
* Support for efficient adding of multiple histograms and scaling
|
|
* Re-design of category axis as a general mapping between unique values and bins
|
|
* Re-design of the bin description an axis returns upon element access
|
|
* Interface cleanup and simplification, more consistency between Python and C++ interface
|
|
* Iterators for histogram and axes for STL compatibility
|
|
* Regular axis in C++: Allowing transforms with state
|
|
* Regular axis in Python: Support for all C++ transforms
|
|
* Polymorphic axis::any type
|
|
* Internal refactoring from boost::mpl and boost::fusion to std::tuple and boost::mp11
|
|
* Windows support
|
|
|
|
[heading 2.0 (not in Boost)]
|
|
|
|
* Added static_histogram (v1.0 only had dynamic_histogram).
|
|
* Merged wfill(...) and fill(...) interface.
|
|
* Support custom allocators in storage classes.
|
|
* Replaced static_storage with array_storage.
|
|
* Replaced dynamic_storage with unlimited_storage, which adds the capability to grow the bin counter into a cpp_int, thus avoiding integer overflow completely.
|
|
* Serialization uses binary_archive instead of text_archive. The latter is portable, but the performance is terrible.
|
|
* Python interface changed: histograms are now iterable, returning axis classes
|
|
* Support reduction (removing a subset of axes and returning the equivalent histogram; in other words, those axes are integrated over)
|
|
|
|
[heading 1.0 (not in Boost)]
|
|
|
|
* First stable version.
|
|
|
|
[endsect]
|