Boost logo

Boost :

Subject: Re: [boost] [Hana] Formal review
From: David Sankel (camior_at_[hidden])
Date: 2015-06-17 15:55:41


On Wed, Jun 10, 2015 at 3:19 AM, Glen Fernandes <glen.fernandes_at_[hidden]>
wrote:

> - Whether you believe the library should be accepted into Boost
> * Conditions for acceptance
>

Yes, I think it should be accepted into Boost. The one condition is that
the library works with release versions of at least two different
mainstream C++ compilers. More on that later...

> - Your name
>

David J. Sankel

> - Your knowledge of the problem domain.
>

I've written numerous libraries that make use of Boost.MPL and
Boost.Fusion. I also have quite a bit of functional programming expertise.

>
> You are strongly encouraged to also provide additional information:
> - What is your evaluation of the library's:
> * Design
>

The core technique of combining value and type expressions is solid and
makes metaprogramming easier and, as a bonus, improves compilation speeds.

My one question, as I read though the implementation, is "can the core
benefits of this library be achived with a simpler 'light' version of this
implementation?". While I appreciate the attempt to encode a Haskell-style
typeclass hierarchy, I feel like that is not the core competency of hana
and should be a separate library and discussion. As it is, this is a 32k
header mega library. I'd prefer several small, highly-targeted,
highly-composable libraries.

> * Implementation
>

The code itself looks to be well structured and well documented.

Unfortunately hana only works with one compiler: clang. While I agree that
Boost shouldn't need to support Visual C++ 6.0 anymore, I believe this is
going too far in the opposite direction. The home page states that boost
libraries "are intended to be widely useful, and usable across a broad
spectrum of applications". I've always interpreted that statement to be in
a practical rather than theoretical sense and I don't think hana meets that
criteria. Many other Boost authors have made heroic efforts to meet that
criteria and the reputation of Boost is due, in no small part, to those
efforts.

I do appreciate the argument that making use of new features encourages
compiler implementers to implement then. I maintain, however, that this
isn't Boost's job. Boost provides high quality libraries that the every-day
Joe C++ developer can benefit from.

That being my position on the issue, my acceptance vote is conditional on
hana supporting at least two released versions of mainstream compilers.
Given that gcc support seems pretty close, that shouldn't be hard to
achieve.

  * Documentation
>

Looks good.

> * Tests
>

I didn't evaluate these. I tried, but failed, to build the code and filed
related issues. I'm assuming the problems are minor and straightforward to
fix.

  * Usefulness
>

Maybe in a couple years for me. Without VS 2015 support at least, I'm going
to be waiting a while.

- Did you attempt to use the library?

Yes. Started working through the getting started examples.

> If so:
> * Which compiler(s)
>

clang 3.6.1

> * What was the experience? Any problems?
>

Nothing more to add. I filed an issues for all problems encountered and
they seemed minor.

> - How much effort did you put into your evaluation of the review?
>

I attended both of Louis's talks, skimmed through the documentation,
attempted to build, and read portions of the code.

-- David Sankel


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