Boost logo

Boost :

Subject: [boost] [review][Fit] Review of Fit starts today : September 8 - September 17
From: Matt Calabrese (rivorus_at_[hidden])
Date: 2017-09-08 11:02:27


A formal review of the Fit library developed by Paul Fultz II starts
today, September 8, and runs through September 17.

A branch has been made for the review. You can find Fit for review at
these links:

Source: https://github.com/pfultz2/Fit/tree/boost
Docs: http://pfultz2.github.io/Fit/doc/html/doc/

Anyone who is able to provide an assessment of the design,
implementation, and/or docs can participate in this review. Usage
experience is not absolutely necessary to give feedback, but is highly
recommended if you are writing a review. Discussions about aspects of
the library are welcome even if a complete review is not presented,
though participants are asked to please state whether they would like
to accept or reject the library before the deadline of September 17,
paying close attention to the questions raised at the end of this
email. The success of Boost is partially a result of the quality
review process which is conducted by the community. You are part of
the Boost community. We will be grateful to receive a review based on
whatever level of effort or time you can devote.

This is the second time that Fit will go through the review process,
with the previous time being in March of 2016. The result of the
initial review can be found here:
https://lists.boost.org/Archives/boost/2016/04/228770.php

In this second review, those who choose to participate should be as
rigorous as they'd be in any other review, but are also encouraged to
voice whether or not the concerns from March of 2016 were addressed.

The following is a brief description of the library from its author:

====================

Fit is a header-only C++11/C++14 library that provides utilities for
functions and function objects, which can solve many problems with
much simpler constructs than whats traditionally been done with
metaprogramming.

Fit is:

Modern: Fit takes advantages of modern C++11/C++14 features. It
support both constexpr initialization and constexpr evaluation of
functions. It takes advantage of type deduction, varidiac templates,
and perfect forwarding to provide a simple and modern interface.

Relevant: Fit provides utilities for functions and does not try to
implement a functional language in C++. As such, Fit solves many
problems relevant to C++ programmers, including initialization of
function objects and lambdas, overloading with ordering, improved
return type deduction, and much more.

Lightweight: Fit builds simple lightweight abstraction on top of
function objects. It does not require subscribing to an entire
framework. Just use the parts you need.
Fit is divided into three components:

Function Adaptors and Decorators: These enhance functions with
additional capability.
Functions: These return functions that achieve a specific purpose.
Utilities: These are general utilities that are useful when defining
or using functions.

Requirements

This requires a C++11 compiler. There are no third-party dependencies.
This has been tested on clang 3.5-3.8, gcc 4.6-6.2, and Visual Studio
2015. Gcc 5.1 is not supported at all, however, gcc 5.4 is supported.

Contexpr support:

Both MSVC and gcc 4.6 have limited constexpr support due to many bugs
in the implementation of constexpr. However, constexpr initialization
of functions is supported when using the FIT_STATIC_FUNCTION and
FIT_STATIC_LAMBDA_FUNCTION constructs.

Noexcept support:

On older compilers such as gcc 4.6 and gcc 4.7, noexcept is not used
due to many bugs in the implementation. Also, most compilers don’t
support deducing noexcept with member function pointers. Only newer
versions of gcc(4.9 and later) support this.

====================

Please provide in your review whatever information you think is
valuable to understand your final choice of ACCEPT or REJECT including
Fit as a Boost library. Please be explicit about your decision.

Some other questions you might want to consider answering:

  - 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 which compiler(s)? 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?
  - Were the concerns from the March 2016 review of Fit addressed?

More information about the Boost Formal Review Process can be found here:
http://www.boost.org/community/reviews.html

Thank you for participating!

-- 
-Matt Calabrese

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