Boost logo

Boost Users :

Subject: Re: [Boost-users] [release] Boost 1.67.0 Beta 1
From: Vinnie Falco (vinnie.falco_at_[hidden])
Date: 2018-03-23 13:51:00


On Mon, Mar 19, 2018 at 6:28 AM, Daniel James via Boost-users
<boost-users_at_[hidden]> wrote:
> Boost release 1.67.0 beta 1 is now available at:
>
> <https://dl.bintray.com/boostorg/beta/1.67.0.beta.1/source/>

A user discovered a defect in Beast. A recent change switched calls to
boost::asio::post from the 2-argument version to the 1-argument
version in order to simplify code and remove a redundant function
call. Unfortunately this change was not safe, as it exposed a problem
where Beast composed operations do not strictly adhere to the
requirements of Networking.TS. Specifically that Beast composed
operations should maintain the existence of an executor_work_guard for
the I/O executor (not to be confused with the completion handler's
associated executor).

The switch to the 1-argument version of post() was made recently, and
a user discovered that this broke the functionality of using
asynchronous stream algorithms with futures. The simplest fix is to
revert the offending commit, which I have done here and would like to
merge to master for 1.67:

<https://github.com/boostorg/beast/pull/1075>

A more robust fix, which changes all composed operation
implementations to maintain the lifetime of an executor_work_guard
attached to the I/O context executor will be forthcoming after the
1.67 release. Reverting the commit is less risky than performing the
robust fix for the release, and also note that Asio's own composed
operations need this treatment as well.

The Boost.Asio author was extremely helpful in identifying the problem
and explaining the new requirements for composed operations.

Thanks


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