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
-
Allocator support everywhere
-
Internal refactoring
-
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
-
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
-
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)