Boost logo

Boost :

Subject: Re: [boost] [review][beast] Review of Beast starts today : July 1 - July 10
From: Mike Gresens (mike.gresens_at_[hidden])
Date: 2017-07-06 18:21:50


This is the result of my review of the Beast library

1) What is your evaluation of the design?

IMO it's natural that new boost libs are based on existing boost libs.
So it's fine that Beast is based on ASIO and uses ASIO types.

I had some discussions about the provided body types.
I think they could be more generic, e.g. sequence_body<Sequence> and
stream_body<Stream>.
But the provided body types are more than enough to work with them
out-of-the-box.

2) What is your evaluation of the implementation?

I did not investigate too much.
That are "implementation details" and most of the time i had the
perspective of an user.

The important part for me is the very high test coverage and tons of
unit tests.
Impressive: http://vinniefalco.github.io/autobahn/index.html

3) What is your evaluation of the documentation?

The documentation is pretty good.
It took me only 5min to port a curl based client to a Beast based client
(it's a really small http client).

May be there could be more hints for client/server developers.
E.g. where is the best place / how is the best practice to add
cookie-handling, Authentication challenges, etc.

4) What is your evaluation of the potential usefulness of the library?

Very useful. You could use it for simple http/websocket stuff -
out-of-the-box.
And more important - Beast might be the next step (after ASIO) to a
full-featured http-client implementation (with URLs, Cookies,
Authentication, etc.) or to a websocket implementation providing
multiplexing etc. in boost.

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

Yes, ported a curl based http client to Beast.
Very impressive was the speed of Beast: Beast based client was 2x faster
than curl based client.

Works fine with gcc-6, gcc-7 and clang-4 on Linux.
Works fine with Apple-clang 7.3 on OSX.

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

Two weeks.
Working with Beast as an user.
Contributed some small thinks to Beast as a developer.

7) Are you knowledgeable about the problem domain?

Not too much.
Doing json/hessian rpc calls using http(s) in a real application.
So investigated other libraries too like curl(pp), Poco::Net, cppnetlib,
etc.

8) Should the library be accepted into Boost?

Beast should be ACCEPTED.

Thank you, Vinnie, for all your work!

Best regards,
Mike


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