Boost logo

Boost Users :

From: Sorin Fetche (sorin.fetche_at_[hidden])
Date: 2020-05-30 23:28:01


On Fri, May 22, 2020 at 2:37 AM Michael Caisse via Boost
<boost_at_[hidden]> wrote:
>
> The Boost formal review of Emil Dotchevski's LEAF (Lightweight Error
> Augmentation Framework) library will take place from May 22 through May
> 31st.

I wholeheartedly recommend ACCEPTing LEAF as a Boost library

I base my recommendation on both the qualities of the library itself
and the responsiveness and openness for feedback of its author.

As a background, more than year ago, I evaluated error handling using
LEAF in the context of an in-house support library for implementing
C++ RESTful services.

I consider the error handling for microservices based architectures
very important because it needs to cover two, sometimes competing,
requirements:
- as debug logs are less than ideal in distributed systems, an error
condition should capture and carry with it as much context and debug
information as possible as it propagates back across the stack (both
in-process and across different processes/services);
- the end-user of the system should not just get a dump of meaningless
debug information when an error condition occurred (but neither just a
generic "internal error occurred" one).

And, coming from the experience of using Boost.Exception for an
earlier version of such a utility library, LEAF seemed a very good
candidate.

So, as part of this evaluation, I tried to see how it would fit
alongside Boost.Asio and Boost.Beast in building this REST oriented
scaffolding. Through the course of this experimentation, LEAF improved
its support for being used with Asio style asynchronous operations and
multi-threading. It also includes now an example built at that time
that showcases a possible way for how this integration can be be
achieved.

> - What is your evaluation of the design?

Excellent as it allows bridging multiple error handling strategies and
usage patterns in an efficient way. I view it as a clear successor to
Boost.Exception and has very good interoperability with Boost.Outcome.

> - What is your evaluation of the implementation?

I have not studied it in depth but from what I can tell, as a user of
the library, it is very solid.

> - What is your evaluation of the documentation?

Excellent!

> - What is your evaluation of the potential usefulness of the library?

It might not cover any possible usage scenario with error reporting
and handling being such a generic problem space that often has
conflicting requirements, but for sure it covers enough of it to
warrant its inclusion in Boost.

> - Did you try to use the library? With which compiler(s)? Did you
> have any problems?

Yes, extensively last year. Less so, recently [*]
Tried it with Visual Studio 2019, g++ 7.3 and 8.2, clang 7.0

> - How much effort did you put into your evaluation? A glance? A quick
> reading? In-depth study?

In depth study and usage about an year ago.
Following the changes it has suffered since then (nothing significant
from what I can tell).

> - Are you knowledgeable about the problem domain?
>

I have used multiple error handling libraries over time.
And, I also had to deal with distributed systems that had an improper
or lacking error handling design, something simply slapped on as an
afterthought.

[*] The part of the project requiring C++ based services and by
extension the infrastructure to enable writing them has been postponed
as we (the team I'm part of) focused more on the environment where
these services would run. I expect we'll resume this work sometime
later this year. And at that time we'll start using the LEAF library
again.

Best regards,
Sorin Fetche


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net