Boost logo

Boost :

Subject: [boost] Formal Review of Proposed Boost.Histogram Library Starts TODAY
From: Mateusz Loskot (mateusz_at_[hidden])
Date: 2018-09-17 09:06:08


Dear Boost Community,

The formal review of Hans Dembinski's Histogram library starts TODAY,
the September 17th, and lasts until September 26th,
unless an extension occurs.

===========
What is it?
===========

Histogram is a header-only C++11 library, provides multi-dimensional histogram
template class for counting, statistics and data exploration.

The histogram class interface has been carefully designed to make the library

* offer simple and convenient default behaviour
* easy to learn and safe to use
* convenient to use for one- as well as multi-dimensional analysis
* compatible with STL algorithms
* dependant only on C++11 standard library and optionally on Boost

The author followed the "Don't pay for what you don't use" principle.

The histogram class is customisable through policy classes, but the default
policies were carefully crafted so that most users do not need to customize
anything.

The default policies guarantee the histogram to be safe to use as a black box,
memory efficient, and very fast, where safety is related to overflow
prevention and large values capping. This guarantees is one of unique
features of the library in comparison to other implementations.

The histogram class comes in two variants, which share a common interface:

* static variant is optimised at compile-time to provide maximum performance,
  at the cost of reduced runtime flexibility and
  potentially larger executables;

* dynamic variant is a bit slower, but configurable at run-time.

Both variants of the histogram class provide optional serialization support
implemented with Boost.Serialization.

The library itself is header-only and the tests as well as examples can be
built using both, Boost.Build and CMake.
There are no dependencies required other than C++11 compiler.
Optional dependencies include the GNU Scientific Library (GSL) and the
ROOT framework from CERN which are needed the corresponding speed test
programs used for performance comparison.

A note on history:
The library was first announced to the Boost community in May, 2016 [1]
and the author received extensive feedback. Then, after a year of work
posted second request for comments in April, 2017 [2].

===================
Getting the library
===================

Checkout the `master` branch from the library git repository:

https://github.com/HDembinski/histogram/

NOTE: The author follows the library submission process [3]:
the master branch remains frozen for the period of the formal review,
modifications in response to feedback should go to `develop` branch
and big items may be worked and discussed via opening an issue on GitHub.

Documentation: http://hdembinski.github.io/histogram/doc/html/

Website: http://hdembinski.github.io/histogram/

================
Writing a review
================

Please, follow the official Boost formal review procedure [4].

If you feel this is an interesting library, then please submit your
review to the Boost developer list (preferably),
or the review manager to mateusz (at) loskot (dot) net.

Here are some questions you might want to answer in your review:

- What is your evaluation of the design?
- What is your evaluation of the implementation?
- What is your evaluation of the documentation?
- What is your evaluation of the potential usefulness of the library?
- Did you try to use the library? With what compiler?
  Did you have any problems?
- How much effort did you put into your evaluation?
  A glance? A quick reading? In-depth study?
- Are you knowledgeable about the problem domain?

And finally, every review should answer this question:

- Do you think the library should be accepted as a Boost library?

Be sure to say this explicitly so that your other comments don't
obscure your overall opinion.

If needed, refer to the Boost Library Requirements and Guidelines [5].

Please, give constructive criticism!

[1] https://lists.boost.org/Archives/boost/2016/05/229389.php
[2] https://lists.boost.org/Archives/boost/2017/04/234410.php
[3] https://www.boost.org/development/submissions.html#Review
[4] https://www.boost.org/community/reviews.html
[5] https://www.boost.org/development/requirements.html

Mateusz
Review Manager for the proposed Boost.Histogram

-- 
Mateusz Loskot, http://mateusz.loskot.net

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk