3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>Release Notes</title>
5 <link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7 <link rel="home" href="../index.html" title="Chapter 1. Boost.Beast">
8 <link rel="up" href="../index.html" title="Chapter 1. Boost.Beast">
9 <link rel="prev" href="ref/boost__beast__zlib__z_params/total_out.html" title="zlib::z_params::total_out">
10 <link rel="next" href="introduction.html" title="Introduction">
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table cellpadding="2" width="100%"><tr>
14 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
15 <td align="center"><a href="../../../../../index.html">Home</a></td>
16 <td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
17 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19 <td align="center"><a href="../../../../../more/index.htm">More</a></td>
22 <div class="spirit-nav">
23 <a accesskey="p" href="ref/boost__beast__zlib__z_params/total_out.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="introduction.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
26 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
27 <a name="beast.release_notes"></a><a class="link" href="release_notes.html" title="Release Notes">Release Notes</a>
28 </h2></div></div></div>
30 <a name="beast.release_notes.h0"></a>
31 <span class="phrase"><a name="beast.release_notes.boost_1_72"></a></span><a class="link" href="release_notes.html#beast.release_notes.boost_1_72">Boost
35 <span class="bold"><strong>Examples</strong></span>
37 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
39 Add async-ssl-system-executor http client example
42 Add async-ssl-system-executor websocket client example
46 <span class="bold"><strong>Features</strong></span>
48 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
50 Async init-fns use the executor's default token
53 Use automatically deduced return types for all async operations (since
57 Support Concepts for completion token params
61 <span class="bold"><strong>Fixes</strong></span>
63 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
65 <a href="https://github.com/boostorg/beast/issues/1664" target="_top">#1664</a> Add default dtors to satisfy -Wnon-virtual-dtor
68 <a href="https://github.com/boostorg/beast/issues/1682" target="_top">#1682</a> Multiple I/O of the same type is not supported
71 <a href="https://github.com/boostorg/beast/issues/1687" target="_top">#1687</a> Fix signed/unsigned mismatch in file_stdio::seek
74 <a href="https://github.com/boostorg/beast/issues/1688" target="_top">#1688</a> basic_stream dtor cannot throw
77 <a href="https://github.com/boostorg/beast/issues/1734" target="_top">#1734</a> Fix leftovers in basic_parser corner case:
80 <a href="https://github.com/boostorg/beast/issues/1751" target="_top">#1751</a> https_get example sends the Host header
83 <a href="https://github.com/boostorg/beast/issues/1754" target="_top">#1754</a> Fix async_close error code when async_read times out
86 <a href="https://github.com/boostorg/beast/issues/1782" target="_top">#1782</a> root_certificates.hpp is not for production
89 Fix data race in websocket examples
92 Fix data race in http server examples
95 Squelch spurious websocket timer assert
98 Use the executor type in basic_stream timer
102 <a name="beast.release_notes.h1"></a>
103 <span class="phrase"><a name="beast.release_notes.boost_1_71"></a></span><a class="link" href="release_notes.html#beast.release_notes.boost_1_71">Boost
107 <span class="bold"><strong>Improvements</strong></span>
109 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
110 <li class="listitem">
111 <a href="https://github.com/boostorg/beast/issues/1280" target="_top">#1280</a> Add 1-element specialization for <code class="computeroutput"><span class="identifier">buffers_cat</span></code>
113 <li class="listitem">
114 <a href="https://github.com/boostorg/beast/issues/1556" target="_top">#1556</a> Set parser status and flags even if body limit has been reached
116 <li class="listitem">
117 <a href="https://github.com/boostorg/beast/issues/1567" target="_top">#1567</a> Relax requirements for vector_body
119 <li class="listitem">
120 <a href="https://github.com/boostorg/beast/issues/1568" target="_top">#1568</a> <code class="computeroutput"><span class="identifier">detect_ssl</span></code> uses
121 <code class="computeroutput"><span class="keyword">bool</span></code> instead of <code class="computeroutput"><span class="identifier">tribool</span></code>
123 <li class="listitem">
124 <a href="https://github.com/boostorg/beast/issues/1574" target="_top">#1574</a> Replace <code class="computeroutput"><span class="identifier">static_string</span></code>
127 <li class="listitem">
128 <a href="https://github.com/boostorg/beast/issues/1606" target="_top">#1606</a> Use <code class="computeroutput"><span class="identifier">steady_timer</span></code>
131 <li class="listitem">
132 <a href="https://github.com/boostorg/beast/issues/1611" target="_top">#1611</a> Make chat websocket javascript client more user friendly
134 <li class="listitem">
135 <a href="https://github.com/boostorg/beast/issues/1613" target="_top">#1613</a> Remove redundant use of <code class="computeroutput"><span class="identifier">static_string</span></code>
137 <li class="listitem">
138 <a href="https://github.com/boostorg/beast/issues/1636" target="_top">#1636</a> Improve performance of <code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">string_to_verb</span></code>
140 <li class="listitem">
141 Preserve <code class="computeroutput"><span class="identifier">operation_aborted</span></code>
144 <li class="listitem">
145 Remove unused <code class="computeroutput"><span class="special"><</span><span class="identifier">experimental</span><span class="special">/</span><span class="identifier">unit_test</span><span class="special">/</span><span class="identifier">thread</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
147 <li class="listitem">
148 Reduce the number of instantiations of <code class="computeroutput"><span class="identifier">filter_token_list</span></code>
150 <li class="listitem">
151 Add idle ping suspend test
153 <li class="listitem">
154 Remove the use of <code class="computeroutput"><span class="identifier">bind_executor</span></code>
155 in <code class="computeroutput"><span class="identifier">basic_stream</span></code>
157 <li class="listitem">
158 Remove redundant template in service_base
160 <li class="listitem">
161 Remove the use of <code class="computeroutput"><span class="identifier">static_string</span></code>
162 from <code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">fields</span></code>
164 <li class="listitem">
165 Enable split compilation in http::basic_fields
167 <li class="listitem">
168 Remove redundant instation of <code class="computeroutput"><span class="identifier">static_string</span></code>
171 <li class="listitem">
172 Remove redundant use of <code class="computeroutput"><span class="identifier">asio</span><span class="special">::</span><span class="identifier">coroutine</span></code>
173 in <code class="computeroutput"><span class="identifier">flat_stream</span></code>
175 <li class="listitem">
176 More split compilation in rfc7230.hpp
178 <li class="listitem">
179 More split compilation in websocket/detail/mask.hpp
181 <li class="listitem">
182 Simplify generation of sec-websocket-key
186 <span class="bold"><strong>Fixes</strong></span>
188 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
189 <li class="listitem">
190 <a href="https://github.com/boostorg/beast/issues/1332" target="_top">#1332</a> <code class="computeroutput"><span class="identifier">allocator_traits</span><span class="special">::</span><span class="identifier">construct</span></code>
191 is used for user-defined types
193 <li class="listitem">
194 <a href="https://github.com/boostorg/beast/issues/1559" target="_top">#1559</a> Member <code class="computeroutput"><span class="identifier">get_executor</span></code>
197 <li class="listitem">
198 <a href="https://github.com/boostorg/beast/issues/1569" target="_top">#1569</a> Fix <code class="computeroutput"><span class="identifier">async_detect_ssl</span></code>
201 <li class="listitem">
202 <a href="https://github.com/boostorg/beast/issues/1570" target="_top">#1570</a> Launder pointers
204 <li class="listitem">
205 <a href="https://github.com/boostorg/beast/issues/1578" target="_top">#1578</a> Fix min/max on MSVC
207 <li class="listitem">
208 <a href="https://github.com/boostorg/beast/issues/1586" target="_top">#1586</a> Fix uninitalized memory use in deflate_stream
210 <li class="listitem">
211 <a href="https://github.com/boostorg/beast/issues/1593" target="_top">#1593</a> Fix UB in websocket close tests
213 <li class="listitem">
214 <a href="https://github.com/boostorg/beast/issues/1594" target="_top">#1594</a> Fix data race in test stream
216 <li class="listitem">
217 <a href="https://github.com/boostorg/beast/issues/1599" target="_top">#1599</a> Fix moved-from executor in idle ping timeout
219 <li class="listitem">
220 <a href="https://github.com/boostorg/beast/issues/1607" target="_top">#1607</a> Remove uses of the deprecated <code class="computeroutput"><span class="identifier">buffers</span></code>
223 <li class="listitem">
224 <a href="https://github.com/boostorg/beast/issues/1612" target="_top">#1612</a> Remove uses of deprecated methods in websocket tests
226 <li class="listitem">
227 <a href="https://github.com/boostorg/beast/issues/1620" target="_top">#1620</a> Clean up typo in chat websocket javascript client
229 <li class="listitem">
230 <a href="https://github.com/boostorg/beast/issues/1621" target="_top">#1621</a> Fix <code class="computeroutput"><span class="identifier">flat_buffer</span></code>
233 <li class="listitem">
234 Silence gcc-8 warning
236 <li class="listitem">
237 Fix <code class="computeroutput"><span class="identifier">buffers_cat</span></code> iterator
240 <li class="listitem">
243 <li class="listitem">
244 Qualify calls to <code class="computeroutput"><span class="identifier">beast</span><span class="special">::</span><span class="identifier">iequals</span></code>
247 <li class="listitem">
248 Fix UB in websocket read tests
250 <li class="listitem">
251 Simplify websocket::detail::prng
253 <li class="listitem">
254 Don't over-allocate in http::basic_fields
258 <span class="bold"><strong>Documentation</strong></span>
260 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
261 Documentation is built with SaxonHE instead of xsltproc
264 <a name="beast.release_notes.h2"></a>
265 <span class="phrase"><a name="beast.release_notes.boost_1_70"></a></span><a class="link" href="release_notes.html#beast.release_notes.boost_1_70">Boost
268 <div class="tip"><table border="0" summary="Tip">
270 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../../../doc/src/images/tip.png"></td>
271 <th align="left">Tip</th>
273 <tr><td align="left" valign="top"><p>
274 The namespace alias <code class="computeroutput"><span class="identifier">net</span></code> is
275 used throughout for <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span></code>.
279 <span class="bold"><strong>New Features</strong></span>
281 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
282 <li class="listitem">
283 All composed operations use the new <a href="../../../../../doc/html/boost_asio/reference/async_initiate.html" target="_top"><code class="computeroutput"><span class="identifier">net</span><span class="special">::</span><span class="identifier">async_initiate</span></code></a> internally.
285 <li class="listitem">
286 New <code class="computeroutput"><span class="identifier">tcp_stream</span></code> and <code class="computeroutput"><span class="identifier">basic_stream</span></code> support:
287 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
288 <li class="listitem">
289 Timeouts, <a class="link" href="ref/boost__beast__basic_stream/async_read_some.html" title="basic_stream::async_read_some"><code class="computeroutput"><span class="identifier">async_read_some</span></code></a>, <a class="link" href="ref/boost__beast__basic_stream/async_write_some.html" title="basic_stream::async_write_some"><code class="computeroutput"><span class="identifier">async_write_some</span></code></a> complete
290 with <a class="link" href="ref/boost__beast__error.html" title="error"><code class="computeroutput"><span class="identifier">error</span><span class="special">::</span><span class="identifier">timeout</span></code></a> on expiration.
292 <li class="listitem">
293 Traffic-shaping policies <a class="link" href="ref/boost__beast__simple_rate_policy.html" title="simple_rate_policy"><code class="computeroutput"><span class="identifier">simple</span></code></a> and <a class="link" href="ref/boost__beast__unlimited_rate_policy.html" title="unlimited_rate_policy"><code class="computeroutput"><span class="identifier">unlimited</span></code></a>, or a user-defined
294 <a class="link" href="concepts/RatePolicy.html" title="RatePolicy"><span class="emphasis"><em>RatePolicy</em></span></a>.
296 <li class="listitem">
297 Supports <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1322r0.html" target="_top">P1322R0</a>.
301 <li class="listitem">
302 <code class="computeroutput"><span class="identifier">websocket</span><span class="special">::</span><span class="identifier">stream</span></code> supports
303 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
304 <li class="listitem">
305 Configurable handshake timeout
307 <li class="listitem">
308 Configurable idle timeout
310 <li class="listitem">
315 <li class="listitem">
316 <a class="link" href="ref/boost__beast__ssl_stream.html" title="ssl_stream"><code class="computeroutput"><span class="identifier">ssl_stream</span></code></a>
317 is a public interface
319 <li class="listitem">
320 ( <a href="https://github.com/boostorg/beast/issues/1305" target="_top">#1305</a>) Better <code class="computeroutput"><span class="identifier">flat_buffer</span></code>,
321 <code class="computeroutput"><span class="identifier">flat_static_buffer</span></code>, <code class="computeroutput"><span class="identifier">multi_buffer</span></code>, and <code class="computeroutput"><span class="identifier">static_buffer</span></code>:
322 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
323 <li class="listitem">
324 Revise all reference documentation
326 <li class="listitem">
327 Move construction does not always invalidate buffers
329 <li class="listitem">
330 non-const <code class="computeroutput"><span class="identifier">data</span><span class="special">()</span></code>
331 returns a mutable buffer sequence
333 <li class="listitem">
334 Add <code class="computeroutput"><span class="identifier">cdata</span><span class="special">()</span></code>
335 to also return constant readable bytes
337 <li class="listitem">
338 Eligible member functions are declared <code class="computeroutput"><span class="keyword">noexcept</span></code>
342 <li class="listitem">
343 ( <a href="https://github.com/boostorg/beast/issues/1345" target="_top">#1345</a>) Better <code class="computeroutput"><span class="identifier">flat_buffer</span></code>,
344 <code class="computeroutput"><span class="identifier">multi_buffer</span></code>
345 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
346 <li class="listitem">
347 Add <code class="computeroutput"><span class="identifier">clear</span></code>, <code class="computeroutput"><span class="identifier">reserve</span><span class="special">()</span></code>,
348 <code class="computeroutput"><span class="identifier">max_size</span><span class="special">()</span></code>,
349 <code class="computeroutput"><span class="identifier">shrink_to_fit</span><span class="special">()</span></code>
351 <li class="listitem">
352 Respect Allocator <code class="computeroutput"><span class="identifier">max_size</span><span class="special">()</span></code>
354 <li class="listitem">
355 Specify exception safety
359 <li class="listitem">
360 ( <a href="https://github.com/boostorg/beast/issues/1384" target="_top">#1384</a>) New functions <code class="computeroutput"><span class="identifier">bind_front_handler</span></code>
362 <li class="listitem">
363 Better <code class="computeroutput"><span class="identifier">static_buffer</span></code>,
364 <code class="computeroutput"><span class="identifier">flat_static_buffer</span></code>
365 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
366 <li class="listitem">
367 Add <code class="computeroutput"><span class="identifier">clear</span><span class="special">()</span></code>
369 <li class="listitem">
370 More members are <code class="computeroutput"><span class="keyword">noexcept</span></code>
372 <li class="listitem">
373 Specify exception safety
377 <li class="listitem">
378 Faster <code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">string_to_field</span></code>
380 <li class="listitem">
381 Dynamic buffer <code class="computeroutput"><span class="identifier">clear</span></code> operations
384 <li class="listitem">
385 New file <boost/beast/core/buffer_traits.hpp>
386 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
387 <li class="listitem">
388 New variadic <code class="computeroutput"><span class="identifier">is_const_buffer_sequence</span></code>
390 <li class="listitem">
391 New variadic <code class="computeroutput"><span class="identifier">is_mutable_buffer_sequence</span></code>
393 <li class="listitem">
394 New trait <code class="computeroutput"><span class="identifier">buffers_iterator_type</span></code>
396 <li class="listitem">
397 New trait <code class="computeroutput"><span class="identifier">buffers_type</span></code>
401 <li class="listitem">
402 New classes <code class="computeroutput"><span class="identifier">async_base</span></code>,
403 <code class="computeroutput"><span class="identifier">stable_async_base</span></code>
404 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
405 <li class="listitem">
406 Handle boilerplate for writing composed operations
408 <li class="listitem">
409 New <code class="computeroutput"><span class="identifier">allocate_stable</span></code>
410 is preferred over <code class="computeroutput"><span class="identifier">handler_ptr</span></code>
414 <li class="listitem">
415 New <code class="computeroutput"><span class="identifier">buffer_bytes</span></code> replacement
416 for <code class="computeroutput"><span class="identifier">net</span><span class="special">::</span><span class="identifier">buffer_size</span></code>
418 <li class="listitem">
420 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
421 <li class="listitem">
422 <code class="computeroutput"><span class="identifier">saved_handler</span></code>
424 <li class="listitem">
425 <code class="computeroutput"><span class="identifier">buffers_range_ref</span></code>
427 <li class="listitem">
428 <code class="computeroutput"><span class="identifier">executor_type</span></code>
430 <li class="listitem">
431 <code class="computeroutput"><span class="identifier">get_lowest_layer</span></code>,
432 <code class="computeroutput"><span class="identifier">lowest_layer_type</span></code>
434 <li class="listitem">
435 <code class="computeroutput"><span class="identifier">close_socket</span></code>, <code class="computeroutput"><span class="identifier">beast_close_socket</span></code>
437 <li class="listitem">
438 <code class="computeroutput"><span class="identifier">error</span></code>, <code class="computeroutput"><span class="identifier">condition</span></code>
442 <li class="listitem">
443 These interfaces are now public (were experimental): <a class="link" href="ref/boost__beast__flat_stream.html" title="flat_stream"><code class="computeroutput"><span class="identifier">flat_stream</span></code></a>, <a class="link" href="ref/boost__beast__detect_ssl.html" title="detect_ssl"><code class="computeroutput"><span class="identifier">detect_ssl</span></code></a>, <a class="link" href="ref/boost__beast__async_detect_ssl.html" title="async_detect_ssl"><code class="computeroutput"><span class="identifier">async_detect_ssl</span></code></a>.
445 <li class="listitem">
446 Websocket streams use PCG as the fast random number generator, for increased
451 <span class="bold"><strong>Documentation</strong></span>
453 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
454 <li class="listitem">
455 WebSocket reference documentation is revised
457 <li class="listitem">
458 Updated <a class="link" href="using_io/asio_refresher.html" title="Refresher">Networking Refresher</a>
460 <li class="listitem">
461 Revised <a class="link" href="using_io/writing_composed_operations/echo.html" title="Echo 💡">Asynchronous
464 <li class="listitem">
465 Rewritten <a class="link" href="using_io/writing_composed_operations/detect_ssl.html" title="Detect SSL 💡"><span class="bold"><strong>Detect SSL Handshake</strong></span></a>
469 <span class="bold"><strong>API Changes</strong></span>
471 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
472 <li class="listitem">
473 The <a class="link" href="concepts/Fields.html" title="Fields"><span class="emphasis"><em>Fields</em></span></a>
474 concept is deprecated and will be removed in a future version. <span class="emphasis"><em>Actions
475 Required</em></span>: Do not rely on the <span class="emphasis"><em>Fields</em></span> concept.
477 <li class="listitem">
478 <code class="computeroutput"><span class="identifier">handler_ptr</span></code> is deprecated.
479 <span class="emphasis"><em>Actions Required</em></span>: Use <code class="computeroutput"><span class="identifier">stable_async_base</span></code>
480 and <code class="computeroutput"><span class="identifier">allocate_stable</span></code> instead.
482 <li class="listitem">
483 On Windows, Visual Studio 2017 or later is required
485 <li class="listitem">
486 OpenSSL is required to build the examples and tests
488 <li class="listitem">
489 HTTP stream algorithms return the number of bytes transferred from the
490 stream. Previously, they returned the number of bytes consumed by the parser.
491 <span class="emphasis"><em>Actions Required</em></span>:
492 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
493 Callers depending on the return value of <code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">read</span></code>
494 or <code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">async_read</span></code> overloads should adjust
495 the usage of the returned value as needed.
498 <li class="listitem">
499 Metafunctions <code class="computeroutput"><span class="identifier">has_get_executor</span></code>,
500 <code class="computeroutput"><span class="identifier">is_sync_stream</span></code>, <code class="computeroutput"><span class="identifier">is_sync_read_stream</span></code>, <code class="computeroutput"><span class="identifier">is_sync_write_stream</span></code>,
501 <code class="computeroutput"><span class="identifier">is_async_stream</span></code>, <code class="computeroutput"><span class="identifier">is_async_read_stream</span></code>, and <code class="computeroutput"><span class="identifier">is_async_write_stream</span></code> are in stream_traits.hpp.
502 <span class="emphasis"><em>Actions Required</em></span>: Include stream_traits.hpp as needed.
504 <li class="listitem">
505 <code class="computeroutput"><span class="identifier">basic_parser</span></code> is abstract.
506 <span class="emphasis"><em>Actions Required</em></span>
507 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
508 <li class="listitem">
509 Change uses of the <code class="computeroutput"><span class="identifier">basic_parser</span></code>
510 type to omit the <code class="computeroutput"><span class="identifier">Derived</span></code>
513 <li class="listitem">
514 Classes derived from <code class="computeroutput"><span class="identifier">basic_parser</span></code>
515 no longer need to friend the base.
517 <li class="listitem">
518 Virtual functions in the derived class may be marked <code class="computeroutput"><span class="identifier">override</span></code>.
522 <li class="listitem">
523 Metafunction <code class="computeroutput"><span class="identifier">is_file</span></code> is
524 in file_base.hpp. <span class="emphasis"><em>Actions Required</em></span>: Include file_base.hpp
527 <li class="listitem">
528 <code class="computeroutput"><span class="identifier">flat_static_buffer</span><span class="special">::</span><span class="identifier">reset</span><span class="special">()</span></code>
529 is deprecated. <span class="emphasis"><em>Actions Required</em></span>:
530 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
531 call <code class="computeroutput"><span class="identifier">clear</span><span class="special">()</span></code>
535 <li class="listitem">
536 <code class="computeroutput"><span class="identifier">buffers_adapter</span></code> is spelled
537 <code class="computeroutput"><span class="identifier">buffers_adaptor</span></code>. <span class="emphasis"><em>Actions
538 Required</em></span>:
539 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
540 Replace <code class="computeroutput"><span class="identifier">buffers_adapter</span></code>
541 with <code class="computeroutput"><span class="identifier">buffers_adaptor</span></code>,
542 or define <code class="computeroutput"><span class="identifier">BOOST_BEAST_ALLOW_DEPRECATED</span></code>.
545 <li class="listitem">
546 <code class="computeroutput"><span class="identifier">buffers</span></code> is spelled <code class="computeroutput"><span class="identifier">make_printable</span></code>. <span class="emphasis"><em>Actions Required</em></span>:
547 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
548 Replace <code class="computeroutput"><span class="identifier">buffers</span></code> with
549 <code class="computeroutput"><span class="identifier">make_printable</span></code>, and
550 include "make_printable.hpp" instead of "ostream.hpp".
553 <li class="listitem">
554 <code class="computeroutput"><span class="identifier">file_mode</span><span class="special">::</span><span class="identifier">append_new</span></code> is removed, as it makes no
555 sense. <span class="emphasis"><em>Actions Required</em></span>: - Replace <code class="computeroutput"><span class="identifier">file_mode</span><span class="special">::</span><span class="identifier">append_new</span></code>
556 with either <code class="computeroutput"><span class="identifier">file_mode</span><span class="special">::</span><span class="identifier">append</span></code> or <code class="computeroutput"><span class="identifier">file_mode</span><span class="special">::</span><span class="identifier">append_existing</span></code>
559 <li class="listitem">
560 <code class="computeroutput"><span class="identifier">role_type</span></code> is moved from
561 <code class="computeroutput"><span class="identifier">websocket</span></code> to <code class="computeroutput"><span class="identifier">beast</span></code>
563 <li class="listitem">
564 <code class="computeroutput"><span class="identifier">buffers_range_ref</span></code> is preferred
565 to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">reference_wrapper</span></code>. <span class="emphasis"><em>Actions
566 Required</em></span>: - Call <code class="computeroutput"><span class="identifier">buffers_range_ref</span></code>
567 with the buffer, instead of calling <code class="computeroutput"><span class="identifier">buffers_range</span></code>
568 with a reference wrapper constructed from the buffer.
570 <li class="listitem">
571 Nested <code class="computeroutput"><span class="identifier">lowest_layer</span></code> and
572 <code class="computeroutput"><span class="identifier">lowest_layer_type</span></code> are removed.
573 <span class="emphasis"><em>Actions Required</em></span>: Use the free function <code class="computeroutput"><span class="identifier">get_lowest_layer</span></code> and the type trait
574 <code class="computeroutput"><span class="identifier">lowest_layer_type</span></code> instead.
576 <li class="listitem">
577 WebSocket decorator is a socket option:
578 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
579 Overloads of the following functions which accept a Decorator are
580 deprecated: - <code class="computeroutput"><span class="identifier">accept</span></code>,
581 <code class="computeroutput"><span class="identifier">accept_ex</span></code> - <code class="computeroutput"><span class="identifier">handshake</span></code>, <code class="computeroutput"><span class="identifier">handshake_ex</span></code>
582 - <code class="computeroutput"><span class="identifier">async_accept</span></code>,
583 <code class="computeroutput"><span class="identifier">async_accept_ex</span></code> -
584 <code class="computeroutput"><span class="identifier">async_handshake</span></code>,
585 <code class="computeroutput"><span class="identifier">async_handshake_ex</span></code>
588 <li class="listitem">
589 ( <a href="https://github.com/boostorg/beast/issues/1375" target="_top">#1375</a>) The value returned from <code class="computeroutput"><span class="identifier">basic_parser</span><span class="special">::</span><span class="identifier">content_length</span></code>
590 no longer changes as the body of the message is received. <span class="emphasis"><em>Actions
591 Required</em></span>: Call <code class="computeroutput"><span class="identifier">basic_parser</span><span class="special">::</span><span class="identifier">content_length_remaining</span></code>
592 instead of <code class="computeroutput"><span class="identifier">basic_parser</span><span class="special">::</span><span class="identifier">content_length</span></code>
593 in order to determine the remaining number of bytes in the body.
597 <span class="bold"><strong>Examples</strong></span>
599 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
600 <li class="listitem">
601 All example programs are updated:
602 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
603 <li class="listitem">
604 Use <code class="computeroutput"><span class="identifier">tcp_stream</span></code> with
607 <li class="listitem">
608 Use <code class="computeroutput"><span class="identifier">ssl_stream</span></code>
610 <li class="listitem">
611 Set timeouts for WebSocket streams.
613 <li class="listitem">
614 Use <code class="computeroutput"><span class="identifier">bind_front_handler</span></code>
618 <li class="listitem">
619 ( <a href="https://github.com/boostorg/beast/issues/1100" target="_top">#1100</a>) http-crawl clears the response before each read
621 <li class="listitem">
622 ( <a href="https://github.com/boostorg/beast/issues/1347" target="_top">#1347</a>) echo-op is rewritten
624 <li class="listitem">
625 ( <a href="https://github.com/boostorg/beast/issues/1401" target="_top">#1401</a>) Examples use <code class="computeroutput"><span class="identifier">flat_buffer</span></code>
627 <li class="listitem">
628 Advanced servers use HTTP parser interfaces for reading
630 <li class="listitem">
631 detect-ssl is rewritten
633 <li class="listitem">
634 New example <a href="../../../example/websocket/server/chat-multi" target="_top">example/websocket/server/chat-multi</a>
636 <li class="listitem">
637 <code class="computeroutput"><span class="identifier">async_echo</span></code> works with move-only
640 <li class="listitem">
641 cppcon2018 example is removed
645 <span class="bold"><strong>Fixes</strong></span>
647 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
648 <li class="listitem">
649 ( <a href="https://github.com/boostorg/beast/issues/38" target="_top">#38</a>) Better treatment of SSL short reads
651 <li class="listitem">
652 ( <a href="https://github.com/boostorg/beast/issues/1223" target="_top">#1223</a>) HTTP read counts bytes correctly when an error occurs
654 <li class="listitem">
655 ( <a href="https://github.com/boostorg/beast/issues/1247" target="_top">#1247</a>) Update <code class="computeroutput"><span class="identifier">ssl_stream</span></code>
658 <li class="listitem">
659 ( <a href="https://github.com/boostorg/beast/issues/1279" target="_top">#1279</a>) Enable explicit instantiations of <code class="computeroutput"><span class="identifier">websocket</span><span class="special">::</span><span class="identifier">stream</span></code>
661 <li class="listitem">
662 ( <a href="https://github.com/boostorg/beast/issues/1290" target="_top">#1290</a>) Don't use deprecated Asio interfaces
664 <li class="listitem">
665 ( <a href="https://github.com/boostorg/beast/issues/1306" target="_top">#1306</a>) <code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">message</span></code> is not-a <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">empty_value</span></code>
667 <li class="listitem">
668 ( <a href="https://github.com/boostorg/beast/issues/1306" target="_top">#1306</a>) <code class="computeroutput"><span class="identifier">test</span><span class="special">::</span><span class="identifier">stream</span></code> has fewer dependencies
670 <li class="listitem">
671 ( <a href="https://github.com/boostorg/beast/issues/1358" target="_top">#1358</a>) Destroy abandoned websocket ops on shutdown
673 <li class="listitem">
674 ( <a href="https://github.com/boostorg/beast/issues/1365" target="_top">#1365</a>) Handler wrappers decay parameters sooner
676 <li class="listitem">
677 ( <a href="https://github.com/boostorg/beast/issues/1408" target="_top">#1408</a>) <code class="computeroutput"><span class="identifier">session_alloc</span></code>
680 <li class="listitem">
681 ( <a href="https://github.com/boostorg/beast/issues/1414" target="_top">#1414</a>) Boost.System is header-only
683 <li class="listitem">
684 ( <a href="https://github.com/boostorg/beast/issues/1418" target="_top">#1418</a>) <code class="computeroutput"><span class="identifier">test</span><span class="special">::</span><span class="identifier">stream</span></code> maintains a handler work guard
686 <li class="listitem">
687 ( <a href="https://github.com/boostorg/beast/issues/1445" target="_top">#1445</a>) Fix posix_file::close handling of EINTR
689 <li class="listitem">
690 ( <a href="https://github.com/boostorg/beast/issues/1460" target="_top">#1460</a>) Large WebSocket Upgrade response no longer overflows
692 <li class="listitem">
693 Reusing an HTTP parser returns an error
695 <li class="listitem">
696 Handler bind wrappers use the associated allocator
698 <li class="listitem">
699 <code class="computeroutput"><span class="identifier">buffers_cat</span></code> correctly skips
700 empty buffers when iterated
702 <li class="listitem">
703 <code class="computeroutput"><span class="identifier">ostream</span></code> does not overflow
704 or exceed the dynamic buffer's maximum size
706 <li class="listitem">
707 Fixes to <code class="computeroutput"><span class="identifier">test</span><span class="special">::</span><span class="identifier">stream</span><span class="special">::</span><span class="identifier">async_read</span></code>
709 <li class="listitem">
710 <code class="computeroutput"><span class="identifier">file_mode</span><span class="special">::</span><span class="identifier">append_existing</span></code> works correctly
712 <li class="listitem">
713 A handler work guard is maintained on paused websocket operations
715 <li class="listitem">
716 All behavior of default-constructed iterators is conforming
720 <a name="beast.release_notes.h3"></a>
721 <span class="phrase"><a name="beast.release_notes.boost_1_69"></a></span><a class="link" href="release_notes.html#beast.release_notes.boost_1_69">Boost
725 <span class="bold"><strong>New Videos</strong></span>
727 <div class="mediaobject"><embed src="https://www.youtube.com/embed/7FQwAjELMek" align="middle" width="448" height="252"></embed></div>
729 <span class="bold"><strong>New Features</strong></span>
731 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
732 ( <a href="https://github.com/boostorg/beast/issues/1133" target="_top">#1133</a>) Add <code class="computeroutput"><span class="identifier">BOOST_BEAST_USE_STD_STRING_VIEW</span></code>
735 <span class="bold"><strong>Examples</strong></span>
737 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
738 New WebSocket server and browser-based client: example/cppcon2018
741 <span class="bold"><strong>Fixes</strong></span>
743 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
744 <li class="listitem">
745 ( <a href="https://github.com/boostorg/beast/issues/1245" target="_top">#1245</a>) Fix a rare case of incorrect UTF8 validation
747 <li class="listitem">
748 ( <a href="https://github.com/boostorg/beast/issues/1237" target="_top">#1237</a>) Verify certificates in client examples
750 <li class="listitem">
751 ( <a href="https://github.com/boostorg/beast/issues/1233" target="_top">#1233</a>) Use <a href="../../../../../doc/html/core/empty_value.html" target="_top"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">empty_value</span></code></a>
753 <li class="listitem">
754 ( <a href="https://github.com/boostorg/beast/issues/1091" target="_top">#1091</a>) Fix timer on websocket upgrade in examples
756 <li class="listitem">
757 ( <a href="https://github.com/boostorg/beast/issues/1270" target="_top">#1270</a>) <a class="link" href="ref/boost__beast__http__basic_fields.html" title="http::basic_fields"><code class="computeroutput"><span class="identifier">basic_fields</span></code></a> uses intrusive base
760 <li class="listitem">
761 ( <a href="https://github.com/boostorg/beast/issues/1267" target="_top">#1267</a>) Fix parsing of out-of-bounds hex values
763 <li class="listitem">
764 ( <a href="https://github.com/boostorg/beast/issues/1263" target="_top">#1263</a>) Fix uninitialized comparison in buffers iterator
766 <li class="listitem">
767 ( <a href="https://github.com/boostorg/beast/issues/1288" target="_top">#1288</a>) Remove extraneous strand from example
769 <li class="listitem">
770 Workaround for http-server-fast and libstdc++
772 <li class="listitem">
773 Partial support for <code class="computeroutput"><span class="identifier">BOOST_NO_EXCEPTIONS</span></code>
777 <span class="bold"><strong>Experimental</strong></span>
779 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
780 Add <code class="computeroutput"><span class="identifier">timeout_socket</span></code>
783 <a name="beast.release_notes.h4"></a>
784 <span class="phrase"><a name="beast.release_notes.boost_1_68"></a></span><a class="link" href="release_notes.html#beast.release_notes.boost_1_68">Boost
788 This version fixes a missing executor work guard in all composed operations
789 used in the implementation. Users who are experiencing crashes related to asynchronous
790 completion handlers are encouraged to upgrade. Also included is an improved
791 mechanism for generating random numbers used to mask outgoing websocket frames
792 when operating in the client mode. This resolves a vulnerability described
793 in the Beast Hybrid Assessment Report from Bishop Fox.
796 <span class="bold"><strong>New Features</strong></span>
799 The include directory <code class="computeroutput"><span class="special"><</span><span class="identifier">beast</span><span class="special">/</span><span class="identifier">experimental</span><span class="special">></span></code> contains features which are not part of
800 the stable public interface but are available anyway. They may change in future
803 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
804 <li class="listitem">
805 ( <a href="https://github.com/boostorg/beast/issues/1108" target="_top">#1108</a>) New <a class="link" href="ref/boost__beast__flat_stream.html" title="flat_stream"><code class="computeroutput"><span class="identifier">flat_stream</span></code></a> for working around
806 an SSL stream performance limitation
808 <li class="listitem">
809 ( <a href="https://github.com/boostorg/beast/issues/1151" target="_top">#1151</a>, <a href="https://github.com/boostorg/beast/issues/595" target="_top">#595</a>) New <a class="link" href="ref/boost__beast__http__icy_stream.html" title="http::icy_stream"><code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">icy_stream</span></code></a> stream filter allows
810 parsing ICY HTTP response handshakes
812 <li class="listitem">
813 New <a class="link" href="ref/boost__beast__ssl_stream.html" title="ssl_stream"><code class="computeroutput"><span class="identifier">ssl_stream</span></code></a>
814 for better SSL performance and move constructability
816 <li class="listitem">
817 New <a class="link" href="ref/boost__beast__test__error.html" title="test::error"><code class="computeroutput"><span class="identifier">test</span><span class="special">::</span><span class="identifier">connect</span></code></a>,
818 <a class="link" href="ref/boost__beast__test__error.html" title="test::error"><code class="computeroutput"><span class="identifier">test</span><span class="special">::</span><span class="identifier">error</span></code></a>,
819 <a class="link" href="ref/boost__beast__test__error.html" title="test::error"><code class="computeroutput"><span class="identifier">test</span><span class="special">::</span><span class="identifier">fail_count</span></code></a>,
820 and <a class="link" href="ref/boost__beast__test__error.html" title="test::error"><code class="computeroutput"><span class="identifier">test</span><span class="special">::</span><span class="identifier">stream</span></code></a>
821 utilities for writing unit tests.
823 <li class="listitem">
824 New <a class="link" href="ref/boost__beast__http__is_mutable_body_writer.html" title="http::is_mutable_body_writer"><code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">is_mutable_body_writer</span></code></a> metafunction
826 <li class="listitem">
827 New <a class="link" href="ref/boost__beast__websocket__seed_prng.html" title="websocket::seed_prng"><code class="computeroutput"><span class="identifier">websocket</span><span class="special">::</span><span class="identifier">seed_prng</span></code></a> for manually providing
830 <li class="listitem">
831 New <a class="link" href="ref/boost__beast__websocket__stream/secure_prng.html" title="websocket::stream::secure_prng"><code class="computeroutput"><span class="identifier">websocket</span><span class="special">::</span><span class="identifier">stream</span><span class="special">::</span><span class="identifier">secure_prng</span></code></a> to control whether
832 the connection uses a secure PRNG
836 <span class="bold"><strong>Improvements</strong></span>
838 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
839 <li class="listitem">
840 Generated WebSocket masks use a secure PRNG by default
842 <li class="listitem">
843 Improvements to <a class="link" href="ref/boost__beast__buffers_adaptor.html" title="buffers_adaptor"><code class="computeroutput"><span class="identifier">buffers_adaptor</span></code></a>
845 <li class="listitem">
846 ( <a href="https://github.com/boostorg/beast/issues/1188" target="_top">#1188</a>) Set "/permissive-" for MSVC builds
848 <li class="listitem">
849 ( <a href="https://github.com/boostorg/beast/issues/1109" target="_top">#1109</a>) Use a shared string for example HTTP server doc roots
851 <li class="listitem">
852 ( <a href="https://github.com/boostorg/beast/issues/1079" target="_top">#1079</a>) Add <code class="computeroutput"><span class="identifier">handler_ptr</span><span class="special">::</span><span class="identifier">has_value</span></code>
856 <span class="bold"><strong>Fixes</strong></span>
858 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
859 <li class="listitem">
860 ( <a href="https://github.com/boostorg/beast/issues/1073" target="_top">#1073</a>) Fix race in advanced server examples
862 <li class="listitem">
863 ( <a href="https://github.com/boostorg/beast/issues/1076" target="_top">#1076</a>) Use executor_work_guard in composed operations
865 <li class="listitem">
866 ( <a href="https://github.com/boostorg/beast/issues/1079" target="_top">#1079</a>) Remove spurious assert
868 <li class="listitem">
869 ( <a href="https://github.com/boostorg/beast/issues/1113" target="_top">#1113</a>) Add <code class="computeroutput"><span class="keyword">const</span></code> and
870 non-<code class="computeroutput"><span class="keyword">const</span></code> overloads for message
873 <li class="listitem">
874 ( <a href="https://github.com/boostorg/beast/issues/1119" target="_top">#1119</a>) Fix unused variable warning
876 <li class="listitem">
877 ( <a href="https://github.com/boostorg/beast/issues/1121" target="_top">#1121</a>) Examples use the root certificate which matches the fingerprint
879 <li class="listitem">
880 ( <a href="https://github.com/boostorg/beast/issues/1141" target="_top">#1141</a>) Tidy up composed operation doc
882 <li class="listitem">
883 ( <a href="https://github.com/boostorg/beast/issues/1186" target="_top">#1186</a>) Check error in example set_option
885 <li class="listitem">
886 ( <a href="https://github.com/boostorg/beast/issues/1210" target="_top">#1210</a>) Fix http_server_stackless_ssl.cpp example
888 <li class="listitem">
889 ( <a href="https://github.com/boostorg/beast/issues/1211" target="_top">#1211</a>) Fix parse_dec algorithm
891 <li class="listitem">
892 ( <a href="https://github.com/boostorg/beast/issues/1214" target="_top">#1214</a>) Silence ubsan false positive
894 <li class="listitem">
895 Tidy up websocket stream javadocs
897 <li class="listitem">
898 Fix move-only arguments in <a class="link" href="ref/boost__beast__bind_handler.html" title="bind_handler"><code class="computeroutput"><span class="identifier">bind_handler</span></code></a>
900 <li class="listitem">
901 Fix <a class="link" href="ref/boost__beast__http__parser.html" title="http::parser"><code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">parser</span></code></a> constructor javadoc
903 <li class="listitem">
904 Fix <a class="link" href="ref/boost__beast__buffers_adaptor.html" title="buffers_adaptor"><code class="computeroutput"><span class="identifier">buffers_adaptor</span></code></a> iterator value
907 <li class="listitem">
908 Fix <a class="link" href="ref/boost__beast__buffers_adaptor/max_size.html" title="buffers_adaptor::max_size"><code class="computeroutput"><span class="identifier">buffers_adaptor</span><span class="special">::</span><span class="identifier">max_size</span></code></a>
910 <li class="listitem">
911 Fix <a class="link" href="ref/boost__beast__buffers_prefix.html" title="buffers_prefix"><code class="computeroutput"><span class="identifier">buffers_prefix</span></code></a> iterator decrement
913 <li class="listitem">
914 Fix <a class="link" href="concepts/Fields.html" title="Fields"><span class="emphasis"><em>Fields</em></span></a>,
915 <a class="link" href="concepts/FieldsWriter.html" title="FieldsWriter"><span class="emphasis"><em>FieldsWriter</em></span></a>
918 <li class="listitem">
919 Fix <a class="link" href="concepts/BodyReader.html" title="BodyReader"><span class="emphasis"><em>BodyReader</em></span></a>
920 constructor requirements doc
924 <span class="bold"><strong>Breaking Changes</strong></span>
926 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
927 <li class="listitem">
928 Remove deprecated <code class="computeroutput"><span class="identifier">serializer</span><span class="special">::</span><span class="identifier">reader_impl</span></code>
930 <li class="listitem">
931 Remove deprecated <a class="link" href="concepts/Body.html" title="Body"><span class="emphasis"><em>Body</em></span></a>
932 <code class="computeroutput"><span class="identifier">reader</span></code> and <code class="computeroutput"><span class="identifier">writer</span></code> ctor signatures
936 <a name="beast.release_notes.h5"></a>
937 <span class="phrase"><a name="beast.release_notes.boost_1_67"></a></span><a class="link" href="release_notes.html#beast.release_notes.boost_1_67">Boost
941 This version fixes significant defects in <a class="link" href="ref/boost__beast__websocket__stream.html" title="websocket::stream"><code class="computeroutput"><span class="identifier">websocket</span><span class="special">::</span><span class="identifier">stream</span></code></a> which can lead to asserts or
942 undefined behavior. Users are encouraged to update to the latest Boost release.
945 <span class="bold"><strong>New Features</strong></span>
947 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
948 <li class="listitem">
949 Move-only completion handlers are supported throughout the library
951 <li class="listitem">
952 ( <a href="https://github.com/boostorg/beast/issues/899" target="_top">#899</a>) Advanced server examples support idle websocket pings and timeouts
954 <li class="listitem">
955 ( <a href="https://github.com/boostorg/beast/issues/849" target="_top">#849</a>) WebSocket permessage-deflate support is now a compile-time feature.
956 This adds an additional <code class="computeroutput"><span class="keyword">bool</span></code>
957 template parameter to <a class="link" href="ref/boost__beast__websocket__stream.html" title="websocket::stream"><code class="computeroutput"><span class="identifier">websocket</span><span class="special">::</span><span class="identifier">stream</span></code></a> When <code class="computeroutput"><span class="identifier">deflateSupported</span></code>
958 is <code class="computeroutput"><span class="keyword">true</span></code>, the stream will be
959 capable of negotiating the permessage-deflate websocket extension per the
960 configured run-time settings. When <code class="computeroutput"><span class="identifier">deflateSupported</span></code>
961 is <code class="computeroutput"><span class="keyword">false</span></code>, the stream will
962 never negotiate the permessage-deflate websocket extension. Furthermore,
963 all of the code necessary for implementing the permessage-deflate extension
964 will be excluded from function instantiations. Programs which set <code class="computeroutput"><span class="identifier">deflateSupported</span></code> to <code class="computeroutput"><span class="keyword">false</span></code>
965 when instantiating streams will be smaller.
967 <li class="listitem">
968 ( <a href="https://github.com/boostorg/beast/issues/949" target="_top">#949</a>) WebSocket error codes are revised. New <a class="link" href="ref/boost__beast__websocket__error.html" title="websocket::error">error
969 codes</a> are added for more fine-grained failure outcomes. Messages
970 for error codes are more verbose to help pinpoint the problem. Error codes
971 are now also mapped to newly added <a class="link" href="ref/boost__beast__websocket__condition.html" title="websocket::condition">error
972 conditions</a> to simplify comparisons. The error codes <code class="computeroutput"><span class="identifier">websocket</span><span class="special">::</span><span class="identifier">error</span><span class="special">::</span><span class="identifier">failed</span></code> and <code class="computeroutput"><span class="identifier">websocket</span><span class="special">::</span><span class="identifier">error</span><span class="special">::</span><span class="identifier">handshake_failed</span></code>
973 are removed. Actions required: Code which explicitly compares <code class="computeroutput"><span class="identifier">error_code</span></code> values against the constant
974 <code class="computeroutput"><span class="identifier">websocket</span><span class="special">::</span><span class="identifier">error</span><span class="special">::</span><span class="identifier">handshake_failed</span></code> should compare against
975 <a class="link" href="ref/boost__beast__websocket__condition.html" title="websocket::condition"><code class="computeroutput"><span class="identifier">websocket</span><span class="special">::</span><span class="identifier">condition</span><span class="special">::</span><span class="identifier">handshake_failed</span></code></a> instead. Code
976 which explicitly compares error_code values against the constant <code class="computeroutput"><span class="identifier">websocket</span><span class="special">::</span><span class="identifier">error</span><span class="special">::</span><span class="identifier">failed</span></code> should compare against <a class="link" href="ref/boost__beast__websocket__condition.html" title="websocket::condition"><code class="computeroutput"><span class="identifier">websocket</span><span class="special">::</span><span class="identifier">condition</span><span class="special">::</span><span class="identifier">protocol_violation</span></code></a> instead.
980 <span class="bold"><strong>Improvements</strong></span>
982 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
983 <li class="listitem">
984 ( <a href="https://github.com/boostorg/beast/issues/857" target="_top">#857</a>) <a class="link" href="ref/boost__beast__http__basic_fields.html" title="http::basic_fields"><code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">basic_fields</span></code></a> uses less storage
986 <li class="listitem">
987 ( <a href="https://github.com/boostorg/beast/issues/894" target="_top">#894</a>) <a class="link" href="ref/boost__beast__http__basic_fields.html" title="http::basic_fields"><code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">basic_fields</span></code></a> exception specifiers
990 <li class="listitem">
991 Implementation no longer uses deprecated <code class="computeroutput"><span class="identifier">asio</span><span class="special">::</span><span class="identifier">null_buffers</span></code>
993 <li class="listitem">
994 Add <code class="literal"><<a href="../../../../../boost/beast/websocket/stream_fwd.hpp" target="_top">boost/beast/websocket/stream_fwd.hpp</a>></code>
996 <li class="listitem">
997 ( <a href="https://github.com/boostorg/beast/issues/955" target="_top">#955</a>) The asynchronous SSL detector example uses a stackless coroutine
999 <li class="listitem">
1000 <a class="link" href="ref/boost__beast__bind_handler.html" title="bind_handler"><code class="computeroutput"><span class="identifier">bind_handler</span></code></a>
1001 works with boost placeholders
1003 <li class="listitem">
1004 Examples set <code class="computeroutput"><span class="identifier">reuse_address</span><span class="special">(</span><span class="keyword">true</span><span class="special">)</span></code>
1006 <li class="listitem">
1007 ( <a href="https://github.com/boostorg/beast/issues/1026" target="_top">#1026</a>) Advanced servers support clean shutdown via SIGINT or SIGTERM
1009 <li class="listitem">
1010 Some basic_fields operations now give the strong exception guarantee
1014 <span class="bold"><strong>Fixes</strong></span>
1016 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
1017 <li class="listitem">
1018 Fix "warning: ‘const’ type qualifier on return type has no effect"
1020 <li class="listitem">
1021 ( <a href="https://github.com/boostorg/beast/issues/916" target="_top">#916</a>) Tidy up <code class="computeroutput"><span class="identifier">ssl_stream</span></code>
1024 <li class="listitem">
1025 ( <a href="https://github.com/boostorg/beast/issues/918" target="_top">#918</a>) Calls to <code class="computeroutput"><span class="special"><</span><span class="identifier">algorithm</span><span class="special">></span></code> are protected from macros
1027 <li class="listitem">
1028 ( <a href="https://github.com/boostorg/beast/issues/954" target="_top">#954</a>) The control callback is invoked on the proper executor
1030 <li class="listitem">
1031 ( <a href="https://github.com/boostorg/beast/issues/994" target="_top">#994</a>) Fix iterator version of <a class="link" href="ref/boost__beast__http__basic_fields/erase/overload1.html" title="http::basic_fields::erase (1 of 3 overloads)"><code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">basic_fields</span><span class="special">::</span><span class="identifier">erase</span></code></a>
1033 <li class="listitem">
1034 ( <a href="https://github.com/boostorg/beast/issues/992" target="_top">#992</a>) Fix use-after-move in example request handlers
1036 <li class="listitem">
1037 ( <a href="https://github.com/boostorg/beast/issues/988" target="_top">#988</a>) Type check completion handlers
1039 <li class="listitem">
1040 ( <a href="https://github.com/boostorg/beast/issues/985" target="_top">#985</a>) Tidy up <a class="link" href="ref/boost__beast__bind_handler.html" title="bind_handler"><code class="computeroutput"><span class="identifier">bind_handler</span></code></a> doc
1042 <li class="listitem">
1043 Fix memory leak in advanced server examples
1045 <li class="listitem">
1046 ( <a href="https://github.com/boostorg/beast/issues/1000" target="_top">#1000</a>) Fix soft-mutex assert in websocket stream. This resolves the
1047 assert <code class="computeroutput"><span class="string">"ws_.wr_block_ == tok_"</span></code>.
1049 <li class="listitem">
1050 ( <a href="https://github.com/boostorg/beast/issues/1019" target="_top">#1019</a>) Fix fallthrough warnings
1052 <li class="listitem">
1053 ( <a href="https://github.com/boostorg/beast/issues/1024" target="_top">#1024</a>) Fix teardown for TIME_WAIT
1055 <li class="listitem">
1056 ( <a href="https://github.com/boostorg/beast/issues/1030" target="_top">#1030</a>) Fix big-endian websocket masking
1058 <li class="listitem">
1059 Safe treatment of zero-length string arguments in basic_fields
1061 <li class="listitem">
1062 ( <a href="https://github.com/boostorg/beast/issues/1043" target="_top">#1043</a>) Examples clear the HTTP message before reading
1064 <li class="listitem">
1065 ( <a href="https://github.com/boostorg/beast/issues/1012" target="_top">#1012</a>) Add asio_handler_invoke overloads for stream algorithms
1067 <li class="listitem">
1068 Add Access-Control-Expose-Headers field constant
1072 <span class="bold"><strong>API Changes</strong></span>
1074 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
1075 <li class="listitem">
1076 Remove unintended public members of <code class="computeroutput"><span class="identifier">handler_ptr</span></code>.
1077 Actions required: don't call non-public members.
1079 <li class="listitem">
1080 <code class="computeroutput"><span class="identifier">handler_ptr</span></code> is a move-only
1081 type, with <code class="computeroutput"><span class="identifier">unique_ptr</span></code> semantics.
1082 Actions required: user-defined composed operations using <code class="computeroutput"><span class="identifier">handler_ptr</span></code> to manage state can only
1083 be moved, not copied.
1085 <li class="listitem">
1086 <code class="computeroutput"><span class="identifier">handler_ptr</span></code> gives the strong
1087 exception guarantee. The constructor signature for managed objects constructed
1088 by <code class="computeroutput"><span class="identifier">handler_ptr</span></code> now receives
1089 a <code class="computeroutput"><span class="keyword">const</span></code> reference to the handler.
1090 Actions required: Change the constructor signature for state objects used
1091 with <code class="computeroutput"><span class="identifier">handler_ptr</span></code> to receive
1092 a <code class="computeroutput"><span class="keyword">const</span></code> reference to the handler.
1094 <li class="listitem">
1095 ( <a href="https://github.com/boostorg/beast/issues/896" target="_top">#896</a>) <a class="link" href="ref/boost__beast__http__basic_fields.html" title="http::basic_fields"><code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">basic_fields</span></code></a> does not support
1098 <li class="listitem">
1099 <a class="link" href="ref/boost__beast__http__parser.html" title="http::parser"><code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">parser</span></code></a>
1100 is no longer <span class="bold"><strong>MoveConstructible</strong></span>
1102 <li class="listitem">
1103 ( <a href="https://github.com/boostorg/beast/issues/930" target="_top">#930</a>) <code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">serializer</span><span class="special">::</span><span class="identifier">reader_impl</span></code> is deprecated and will be
1104 removed in the next release. Actions required: Call <a class="link" href="ref/boost__beast__http__serializer/writer_impl.html" title="http::serializer::writer_impl"><code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">serializer</span><span class="special">::</span><span class="identifier">writer_impl</span></code></a> instead of <code class="computeroutput"><span class="identifier">serializer</span><span class="special">::</span><span class="identifier">reader_impl</span></code>.
1106 <li class="listitem">
1107 ( <a href="https://github.com/boostorg/beast/issues/884" target="_top">#884</a>) The <a class="link" href="concepts/BodyReader.html" title="BodyReader"><span class="emphasis"><em>BodyReader</em></span></a>
1108 and <a class="link" href="concepts/BodyWriter.html" title="BodyWriter"><span class="emphasis"><em>BodyWriter</em></span></a>
1109 concept constructor requirements have changed. They now require the header
1110 and body elements to be passed as distinct <a class="link" href="ref/boost__beast__http__header.html" title="http::header"><code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">header</span></code></a> and <code class="computeroutput"><span class="identifier">value_type</span></code>
1111 objects. This enables the composition of body types. The previous single-argument
1112 constructors are deprecated and will be removed in the next version. Actions
1113 required: Change user-defined instances of <a class="link" href="concepts/BodyReader.html" title="BodyReader"><span class="emphasis"><em>BodyReader</em></span></a>
1114 or <a class="link" href="concepts/BodyWriter.html" title="BodyWriter"><span class="emphasis"><em>BodyWriter</em></span></a>
1115 constructor signatures to the two-argument form. Alternatively. define
1116 the macro <code class="computeroutput"><span class="identifier">BOOST_BEAST_ALLOW_DEPRECATED</span></code>
1117 in the project (which will cause both the new and the deprecated signatures
1120 <li class="listitem">
1121 <a class="link" href="ref/boost__beast__websocket__stream/control_callback.html" title="websocket::stream::control_callback"><code class="computeroutput"><span class="identifier">websocket</span><span class="special">::</span><span class="identifier">stream</span><span class="special">::</span><span class="identifier">control_callback</span></code></a> now copies or
1122 moves the function object.
1124 <li class="listitem">
1125 ( <a href="https://github.com/boostorg/beast/issues/1014" target="_top">#1014</a>) DynamicBuffer input areas are not mutable. Actions required:
1126 do not attempt to write to input areas of dynamic buffers.
1128 <li class="listitem">
1129 ( <a href="https://github.com/boostorg/beast/issues/941" target="_top">#941</a>) <code class="computeroutput"><span class="identifier">get_lowest_layer</span></code>
1130 is now a type alias. Actions required: Replace instances of <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">get_lowest_layer</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span></code>
1131 with <code class="computeroutput"><span class="identifier">get_lowest_layer</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code>.
1135 <a name="beast.release_notes.h6"></a>
1136 <span class="phrase"><a name="beast.release_notes.boost_1_66"></a></span><a class="link" href="release_notes.html#beast.release_notes.boost_1_66">Boost
1139 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
1143 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
1144 <td align="left"></td>
1145 <td align="right"><div class="copyright-footer">Copyright © 2016-2019 Vinnie
1147 Distributed under the Boost Software License, Version 1.0. (See accompanying
1148 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
1153 <div class="spirit-nav">
1154 <a accesskey="p" href="ref/boost__beast__zlib__z_params/total_out.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="introduction.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>