The formal review of Louis Dionne's Hana library begins today,10th June and ends on 24th June.
Hana is a header-only library for C++ metaprogramming that provides facilities for computations on both types and values. It provides a superset of the functionality provided by Boost.MPL and Boost.Fusion but with more expressiveness, faster compilation times, and faster (or equal) run times.
<snip>,
- Whether you believe the library should be accepted into Boost * Conditions for acceptance
Yes, I vote accept. No conditions, although Hana's demand for latest C++14 features likely imply need for timely documentation updates as compilers improve.
- Your name
Charley Bay
- Your knowledge of the problem domain.
Very familiar with template metaprogramming, including active development/support of large production code bases using templates and metaprogramming language features. - What is your evaluation of the library's:
* Design
Clean design, with high-value "wrappers/syntactic-sugar".
* Implementation
Very elegant implementation, including novel template implementation approaches.
* Documentation
Very good, although volatile because: (1) High demand on latest C++ language features (compiler support is evolving) (2) New usage patterns are likely to evolve (due to the nature of what the library provides) * Tests
Header-only library, and compile-time tests are great. More are always good. Perhaps excessively expensive compiler-time tests could be added-or-removed with an #ifdef...#endif.
* Usefulness
Very useful, as a unifying library solving problems previously addressed through multiple libraries and similar-but-not-the-same APIs and usage patterns. Unifying metaprogramming for both types and values is quite novel, and will likely lead to new use patterns not-yet appreciated. IMHO, this is likely the most important reason for addition to Boost. The second reason would be its elegance in using new C++14 patterns and conventions (as TMP has evolved).
- Did you attempt to use the library? If so: * Which compiler(s) * What was the experience? Any problems? - How much effort did you put into your evaluation of the review?
Extensive study of the documentation, and attended or watched all talks on this library over the past couple years. Some light application-use of the library (specific to the examples in the documentation). I am planning to experiment with specific library use cases, but am hampered by spotty compiler support for C++14 language features. --charley