changelog.qbk 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. [/
  2. Copyright Hans Dembinski 2018 - 2019.
  3. Distributed under the Boost Software License, Version 1.0.
  4. (See accompanying file LICENSE_1_0.txt or copy at
  5. https://www.boost.org/LICENSE_1_0.txt)
  6. ]
  7. [section:history Revision history]
  8. [heading Boost 1.72]
  9. * New features
  10. * Better deduction guides for axis types and histogram type on C++17 compilers
  11. * performance improvements in the indexing code
  12. * new histogram::fill method for accelerated filling from chunks of values
  13. * ASCII bar charts for 1D histograms when boost/histogram/ostream.hpp is included (contributed by Przemyslaw Bartosik)
  14. * Passing invalid axis options causes user-friendly compile-time errors
  15. * Wrong usage of weight() and sample() causes user-friendly compile-time errors
  16. * algorithm::empty returns true if all histogram values are equal to the default value (contributed by Henry Schreiner)
  17. * algorithm::reduce with shrink is now well defined when values are not bin edges
  18. * axis::traits::rank returns the number of values that this axis accepts
  19. * axis::traits::is_continuous returns whether an axis is continuous or discrete
  20. * axis::traits::is_inclusive returns whether an axis has a bin for any possible input
  21. * limited weight support for mean accumulator
  22. * accumulators::weighted_mean::sum_of_weights_squared method added
  23. * Fixes
  24. * Support of -std=c++2a and -stdlib=libc++ on clang, compatibility with gcc-9
  25. * Fixed: weight could be passed instead of a sample during filling without triggering an error
  26. * Fixed: segfault when too many indices were passed to algorithm::project
  27. * Fixed: indexed range generator did not work with storage based on std::array
  28. * Fixed: weighted_mean() + weighted_mean() != weighted_mean() (discovered and reported by Henry Schreiner)
  29. * 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)
  30. * Protecting calls to min, max with against macro expansion
  31. * Replaced all crlf with lf in concepts.qbk
  32. * Missing throw of std::invalid_argument when user passes too many axes to histogram
  33. * Corrected documentation of serialization support in concepts section
  34. * Resolved warnings for various compiler versions
  35. * Other
  36. * Added Boost.Histogram logo
  37. * Added missing copyright notices
  38. * axis::category::value returns copy for scalar types and const reference otherwise
  39. * std::ostringstream not used anymore to generate exception messages to reduces code bloat
  40. * Documentation improvements
  41. * Restructured overview section in documentation
  42. * Updated user guide to demonstrate new features
  43. * Updated accumulator examples
  44. * Concepts explain how accumulators can optionally accept weights
  45. * Updated benchmark code
  46. * New test checks consistency of b2 and cmake build systems
  47. * New test checks One-Definition-Rule (fails if non-templated function is not declared inline)
  48. * Serialization code decoupled from Boost.Serialization
  49. * Removed dependency on Boost.CallableTraits
  50. [heading Boost 1.71]
  51. * New features
  52. * Thread-safe accumulators boost::histogram::accumulators::thread_safe based on std::atomics
  53. * Support for thread-safe storages
  54. * Support for compiling without exceptions/RTTI (increases performance by 10-20 %) [with contributions from Glen Fernandez]
  55. * Performance improvements for 1D and 2D histograms
  56. * boost::histogram::indexed now returns forward iterator range instead of input iterator range
  57. * boost::histogram::indexed_range::accessor is now non-copyable and acts like reference to cell value, making most algorithms from the stdlib work
  58. * boost::histogram::algorithm::reduce
  59. * New slice option
  60. * Fuse shrink, slice, and rebin options passed for the same axis
  61. * Support histograms with some axis types with reduction support
  62. * boost::histogram::algorithm::project accepts runtime indices for static histograms
  63. * Fixes
  64. * boost::histogram::algorithm::reduce also works on histograms that have some axis types without reduction support
  65. * boost::histogram::axis::traits::update now works correctly for boost::histogram::axis::variant
  66. * Other
  67. * 100 % test coverage
  68. * Drastically reduced internal Boost dependencies
  69. * Improved documentation and examples
  70. * Internally replaced boost::variant with boost::variant2
  71. * boost::histogram::axis::traits::is_reducible detects reducible axis types
  72. * Cleanup and refactoring of internals
  73. * Guarantee no-throw moves for all builtin axis types
  74. * Improved internal benchmarks
  75. * Compile cleanly at higher warning levels
  76. [heading Boost 1.70]
  77. First Boost release, version 4.0 in former internal counting.
  78. * Removed Python bindings, will be developed in separate repository
  79. * All axes can be made optionally circular, except category axis
  80. * All axes now support generic attached metadata
  81. * All axes have now independently configurable underflow/overflow extra bins
  82. * Removed circular axis (which is just a circular regular axis)
  83. * Added indexed adaptor generator for convenient and fast iteration over histograms
  84. * Support for axes that can grow in range
  85. * Support for axes which accept multiple values (example: hexagonal binning)
  86. * Support for profiles and more generally, arbitrary accumulators in each cell
  87. * Support for serializing to xml archives
  88. * Added compatibility with Boost.Range, Boost.Units, and Boost.Accumulators
  89. * Added deduction guides for axis types and histogram
  90. * Performance improvements
  91. * Renamed `adaptive_storage` to `unlimited_storage`
  92. * Replaced `boost::multiprecision::cpp_int` with custom type to decouple libraries
  93. * Internal simplification of `axis::variant`
  94. * Make all storages behave more like containers, simplifying the design
  95. * Histograms supports add, sub, mul, div
  96. * replaced `operator[]` in axis with explicit method `bin`
  97. * replaced `operator()` in axis with explicit method `index`
  98. * replaced internal use of `boost::containers` with stdlib containers
  99. * Much improved docs, reference documentation, user guide, more examples
  100. [heading 3.2 (not in Boost)]
  101. * Allocator support everywhere
  102. * Internal refactoring
  103. [heading 3.1 (not in Boost)]
  104. * Renamed `bincount` method to `size`
  105. * Support for axes with only overflow and no underflow bin
  106. * category axis now by default has bin for "other" input that does not fall
  107. into the predefined categories, making it consistent with other axes
  108. * NaN is now consistently put into overflow bin for all axes
  109. * Eliminated warnings about safe internal conversions on MSVC
  110. * Established a cpp house style with corresponding .clang-format file
  111. * Better detection of Python library on all systems
  112. * Improved code coverage by testing more input errors
  113. * Raise ValueError instead of generic RuntimeError in Python on input errors
  114. [heading 3.0 (not in Boost)]
  115. * Support for efficient adding of multiple histograms and scaling
  116. * Re-design of category axis as a general mapping between unique values and bins
  117. * Re-design of the bin description an axis returns upon element access
  118. * Interface cleanup and simplification, more consistency between Python and C++ interface
  119. * Iterators for histogram and axes for STL compatibility
  120. * Regular axis in C++: Allowing transforms with state
  121. * Regular axis in Python: Support for all C++ transforms
  122. * Polymorphic axis::any type
  123. * Internal refactoring from boost::mpl and boost::fusion to std::tuple and boost::mp11
  124. * Windows support
  125. [heading 2.0 (not in Boost)]
  126. * Added static_histogram (v1.0 only had dynamic_histogram).
  127. * Merged wfill(...) and fill(...) interface.
  128. * Support custom allocators in storage classes.
  129. * Replaced static_storage with array_storage.
  130. * Replaced dynamic_storage with unlimited_storage, which adds the capability to grow the bin counter into a cpp_int, thus avoiding integer overflow completely.
  131. * Serialization uses binary_archive instead of text_archive. The latter is portable, but the performance is terrible.
  132. * Python interface changed: histograms are now iterable, returning axis classes
  133. * Support reduction (removing a subset of axes and returning the equivalent histogram; in other words, those axes are integrated over)
  134. [heading 1.0 (not in Boost)]
  135. * First stable version.
  136. [endsect]