Boost logo

Boost :

Subject: Re: [boost] [review][beast] Review of Beast starts today : July 1 - July 10
From: Nik Bougalis (nikb_at_[hidden])
Date: 2017-07-02 18:55:30


*What is your evaluation of the design?*

Overall, elegant. The decision to stick to C++11 forced some design
decisions, but nothing I can't live with.

My personal feelings about asio's interface aside, I believe that the clean
and natural fit of Beast interfaces with the asio model means that anyone
already familiar with asio (which is the golden standard in C++) will be
able to quickly and easily leverage Beast.

One small negative—and this not really specific to Beast—is that the
proliferation of templates (which, I think, are necessary to achieve the
elegant design Vinnie has) can make stack traces very hard to read and
follow. It's probably unfair to mention this in the Beast review especially
considering how asio is really a much bigger offender here.

*What is your evaluation of the implementation?*

We have been using Beast in production on rippled, a distributed payment
system that's handling hundreds of millions in daily volume, and have been
very pleased with the implementation.

I find the implementation to be high quality and robust, with attention
paid to detail.

As a data point on the websocket library: it easily outperformed the
previous websocket library we were using, even in early, less polished
versions, and was more robust and easier to use to boot.

I am pleasantly surprised at the thorough tests that the library comes with
and the author's dedication to quality code and speedy resolution of
existing issues.

*What is your evaluation of the documentation?*

Thorough and well-written. It includes useful examples that compile quickly
and easily and demonstrate the important concepts of the library.

*What is your evaluation of the potential usefulness of the library?*

Very useful. It provides functionality that's almost indispensable.

I've written an HTTP server in the past, for a chat application I was
developing. It was both painful and incredibly time-consuming to get
everything just right.

Beast would have abstracted all the HTTP boilerplate away, allowing me to
focus on the business logic.

The ability to develop clients just as easily as servers, with the same
pieces, is also great for the same reasons.

I understand that Beast isn't supposed to be a full fledged HTTP server or
HTTP client and that's just fine. What's important is that it provides a
strong foundation on which we can build what we need.

The websocket functionality is great for much the same reason.

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

Yes, I've used Beast both at Ripple and on my own personal projects.

I've compiled projects with Beast without issue on MSVC, GCC and Clang.

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

Significant: I've been involved with Beast since the early days and the
author has bounced ideas off of me. Additionally, I've been a user of the
library for a while and have a lot of real-world practical experience with
it.

*Are you knowledgeable about the problem domain?*

I'm not an HTTP or WebSocket expert, but I've implemented a
standard-compliant HTTP server in the past and have signficant experience
with network programming.

My position is that Beast should be *ACCEPTED* into Boost.


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