Boost logo

Boost :

From: Michael Caisse (mcaisse-lists_at_[hidden])
Date: 2020-05-22 09:31:29

The Boost formal review of Emil Dotchevski's LEAF (Lightweight Error
Augmentation Framework) library will take place from May 22 through May

LEAF isn't just another error reporting library in the family of
expected-like types. It provides a unique take on error handling which
plays into usability, flexibility, and performance.

Every software developer must deal with handling errors which makes this
review relevant to all. Please participate! I will be grateful to
receive a review based on whatever level of effort or time you can devote.

LEAF is brought to us by Emil Dotchevski, the author of Boost.Exception.
Similar to Boost.Exception, this library allows arbitrary error objects
to be returned; however, unlike Boost.Exception it does not require
dynamic memory. The library can be used with or without exception handling.

The LEAF documentation highlights the following features:

* Efficient delivery of arbitrary error objects to the correct error
  handling scope.
* No dynamic memory allocations.
* Compatible with std::error_code, errno and any other error code type.
* Can be used with or without exception handling.
* Support for multi-thread programming.

"LEAF is designed with a strong bias towards the common use case where
callers of functions which may fail check for success and forward errors
up the call chain but do not handle them."

LEAF offers a pattern matching facility to specify which errors to
handle and how to handle them. Take a look at the 5-minute Introduction.

You can find the source code to be reviewed here:

You can find the documentation here:

The documentation includes a tutorial, examples, reference, design
rationale, and comparisons to other error handling approaches/libraries.

There is a benchmark document also:

and a whitepaper:

Please provide in your review information you think is valuable to
understand your choice to ACCEPT or REJECT including LEAF as a
Boost library. Please be explicit about your decision (ACCEPT or REJECT).

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?

More information about the Boost Formal Review Process can be found
here: <>

Thank you for your effort in the Boost community.

Happy coding -

Michael Caisse
Ciere Consulting

Boost list run by bdawes at, gregod at, cpdaniel at, john at