On Fri, May 22, 2020 at 2:37 AM Michael Caisse via Boost
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