Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / beast / doc / html / beast / release_notes.html
1 <html>
2 <head>
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&#160;1.&#160;Boost.Beast">
8 <link rel="up" href="../index.html" title="Chapter&#160;1.&#160;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">
11 </head>
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>
20 </tr></table>
21 <hr>
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>
24 </div>
25 <div class="section">
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>
29 <h4>
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
32       1.72</a>
33     </h4>
34 <p>
35       <span class="bold"><strong>Examples</strong></span>
36     </p>
37 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
38 <li class="listitem">
39           Add async-ssl-system-executor http client example
40         </li>
41 <li class="listitem">
42           Add async-ssl-system-executor websocket client example
43         </li>
44 </ul></div>
45 <p>
46       <span class="bold"><strong>Features</strong></span>
47     </p>
48 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
49 <li class="listitem">
50           Async init-fns use the executor's default token
51         </li>
52 <li class="listitem">
53           Use automatically deduced return types for all async operations (since
54           C++14)
55         </li>
56 <li class="listitem">
57           Support Concepts for completion token params
58         </li>
59 </ul></div>
60 <p>
61       <span class="bold"><strong>Fixes</strong></span>
62     </p>
63 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
64 <li class="listitem">
65           <a href="https://github.com/boostorg/beast/issues/1664" target="_top">#1664</a> Add default dtors to satisfy -Wnon-virtual-dtor
66         </li>
67 <li class="listitem">
68           <a href="https://github.com/boostorg/beast/issues/1682" target="_top">#1682</a> Multiple I/O of the same type is not supported
69         </li>
70 <li class="listitem">
71           <a href="https://github.com/boostorg/beast/issues/1687" target="_top">#1687</a> Fix signed/unsigned mismatch in file_stdio::seek
72         </li>
73 <li class="listitem">
74           <a href="https://github.com/boostorg/beast/issues/1688" target="_top">#1688</a> basic_stream dtor cannot throw
75         </li>
76 <li class="listitem">
77           <a href="https://github.com/boostorg/beast/issues/1734" target="_top">#1734</a> Fix leftovers in basic_parser corner case:
78         </li>
79 <li class="listitem">
80           <a href="https://github.com/boostorg/beast/issues/1751" target="_top">#1751</a> https_get example sends the Host header
81         </li>
82 <li class="listitem">
83           <a href="https://github.com/boostorg/beast/issues/1754" target="_top">#1754</a> Fix async_close error code when async_read times out
84         </li>
85 <li class="listitem">
86           <a href="https://github.com/boostorg/beast/issues/1782" target="_top">#1782</a> root_certificates.hpp is not for production
87         </li>
88 <li class="listitem">
89           Fix data race in websocket examples
90         </li>
91 <li class="listitem">
92           Fix data race in http server examples
93         </li>
94 <li class="listitem">
95           Squelch spurious websocket timer assert
96         </li>
97 <li class="listitem">
98           Use the executor type in basic_stream timer
99         </li>
100 </ul></div>
101 <h4>
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
104       1.71</a>
105     </h4>
106 <p>
107       <span class="bold"><strong>Improvements</strong></span>
108     </p>
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>
112         </li>
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
115         </li>
116 <li class="listitem">
117           <a href="https://github.com/boostorg/beast/issues/1567" target="_top">#1567</a> Relax requirements for vector_body
118         </li>
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>
122         </li>
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>
125           in HTTP parser
126         </li>
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>
129           type
130         </li>
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
133         </li>
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>
136         </li>
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>
139         </li>
140 <li class="listitem">
141           Preserve <code class="computeroutput"><span class="identifier">operation_aborted</span></code>
142           on partial message
143         </li>
144 <li class="listitem">
145           Remove unused <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code>
146         </li>
147 <li class="listitem">
148           Reduce the number of instantiations of <code class="computeroutput"><span class="identifier">filter_token_list</span></code>
149         </li>
150 <li class="listitem">
151           Add idle ping suspend test
152         </li>
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>
156         </li>
157 <li class="listitem">
158           Remove redundant template in service_base
159         </li>
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>
163         </li>
164 <li class="listitem">
165           Enable split compilation in http::basic_fields
166         </li>
167 <li class="listitem">
168           Remove redundant instation of <code class="computeroutput"><span class="identifier">static_string</span></code>
169           in websocket
170         </li>
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>
174         </li>
175 <li class="listitem">
176           More split compilation in rfc7230.hpp
177         </li>
178 <li class="listitem">
179           More split compilation in websocket/detail/mask.hpp
180         </li>
181 <li class="listitem">
182           Simplify generation of sec-websocket-key
183         </li>
184 </ul></div>
185 <p>
186       <span class="bold"><strong>Fixes</strong></span>
187     </p>
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
192         </li>
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>
195           const-correctness
196         </li>
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>
199           handler type
200         </li>
201 <li class="listitem">
202           <a href="https://github.com/boostorg/beast/issues/1570" target="_top">#1570</a> Launder pointers
203         </li>
204 <li class="listitem">
205           <a href="https://github.com/boostorg/beast/issues/1578" target="_top">#1578</a> Fix min/max on MSVC
206         </li>
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
209         </li>
210 <li class="listitem">
211           <a href="https://github.com/boostorg/beast/issues/1593" target="_top">#1593</a> Fix UB in websocket close tests
212         </li>
213 <li class="listitem">
214           <a href="https://github.com/boostorg/beast/issues/1594" target="_top">#1594</a> Fix data race in test stream
215         </li>
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
218         </li>
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>
221           function
222         </li>
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
225         </li>
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
228         </li>
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>
231           copy members
232         </li>
233 <li class="listitem">
234           Silence gcc-8 warning
235         </li>
236 <li class="listitem">
237           Fix <code class="computeroutput"><span class="identifier">buffers_cat</span></code> iterator
238           tests
239         </li>
240 <li class="listitem">
241           Don't pessimize-move
242         </li>
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>
245           in basic_parser.ipp
246         </li>
247 <li class="listitem">
248           Fix UB in websocket read tests
249         </li>
250 <li class="listitem">
251           Simplify websocket::detail::prng
252         </li>
253 <li class="listitem">
254           Don't over-allocate in http::basic_fields
255         </li>
256 </ul></div>
257 <p>
258       <span class="bold"><strong>Documentation</strong></span>
259     </p>
260 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
261           Documentation is built with SaxonHE instead of xsltproc
262         </li></ul></div>
263 <h4>
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
266       1.70</a>
267     </h4>
268 <div class="tip"><table border="0" summary="Tip">
269 <tr>
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>
272 </tr>
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>.
276       </p></td></tr>
277 </table></div>
278 <p>
279       <span class="bold"><strong>New Features</strong></span>
280     </p>
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.
284         </li>
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.
291               </li>
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>.
295               </li>
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>.
298               </li>
299 </ul></div>
300         </li>
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
306               </li>
307 <li class="listitem">
308                 Configurable idle timeout
309               </li>
310 <li class="listitem">
311                 Automatic idle pings
312               </li>
313 </ul></div>
314         </li>
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
318         </li>
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
325               </li>
326 <li class="listitem">
327                 Move construction does not always invalidate buffers
328               </li>
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
332               </li>
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
336               </li>
337 <li class="listitem">
338                 Eligible member functions are declared <code class="computeroutput"><span class="keyword">noexcept</span></code>
339               </li>
340 </ul></div>
341         </li>
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>
350               </li>
351 <li class="listitem">
352                 Respect Allocator <code class="computeroutput"><span class="identifier">max_size</span><span class="special">()</span></code>
353               </li>
354 <li class="listitem">
355                 Specify exception safety
356               </li>
357 </ul></div>
358         </li>
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>
361         </li>
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>
368               </li>
369 <li class="listitem">
370                 More members are <code class="computeroutput"><span class="keyword">noexcept</span></code>
371               </li>
372 <li class="listitem">
373                 Specify exception safety
374               </li>
375 </ul></div>
376         </li>
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>
379         </li>
380 <li class="listitem">
381           Dynamic buffer <code class="computeroutput"><span class="identifier">clear</span></code> operations
382           perserve capacity.
383         </li>
384 <li class="listitem">
385           New file &lt;boost/beast/core/buffer_traits.hpp&gt;
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>
389               </li>
390 <li class="listitem">
391                 New variadic <code class="computeroutput"><span class="identifier">is_mutable_buffer_sequence</span></code>
392               </li>
393 <li class="listitem">
394                 New trait <code class="computeroutput"><span class="identifier">buffers_iterator_type</span></code>
395               </li>
396 <li class="listitem">
397                 New trait <code class="computeroutput"><span class="identifier">buffers_type</span></code>
398               </li>
399 </ul></div>
400         </li>
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
407               </li>
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>
411               </li>
412 </ul></div>
413         </li>
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>
417         </li>
418 <li class="listitem">
419           New:
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>
423               </li>
424 <li class="listitem">
425                 <code class="computeroutput"><span class="identifier">buffers_range_ref</span></code>
426               </li>
427 <li class="listitem">
428                 <code class="computeroutput"><span class="identifier">executor_type</span></code>
429               </li>
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>
433               </li>
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>
436               </li>
437 <li class="listitem">
438                 <code class="computeroutput"><span class="identifier">error</span></code>, <code class="computeroutput"><span class="identifier">condition</span></code>
439               </li>
440 </ul></div>
441         </li>
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>.
444         </li>
445 <li class="listitem">
446           Websocket streams use PCG as the fast random number generator, for increased
447           security.
448         </li>
449 </ul></div>
450 <p>
451       <span class="bold"><strong>Documentation</strong></span>
452     </p>
453 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
454 <li class="listitem">
455           WebSocket reference documentation is revised
456         </li>
457 <li class="listitem">
458           Updated <a class="link" href="using_io/asio_refresher.html" title="Refresher">Networking Refresher</a>
459         </li>
460 <li class="listitem">
461           Revised <a class="link" href="using_io/writing_composed_operations/echo.html" title="Echo &#128161;">Asynchronous
462           Echo</a>
463         </li>
464 <li class="listitem">
465           Rewritten <a class="link" href="using_io/writing_composed_operations/detect_ssl.html" title="Detect SSL &#128161;"><span class="bold"><strong>Detect SSL Handshake</strong></span></a>
466         </li>
467 </ul></div>
468 <p>
469       <span class="bold"><strong>API Changes</strong></span>
470     </p>
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.
476         </li>
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.
481         </li>
482 <li class="listitem">
483           On Windows, Visual Studio 2017 or later is required
484         </li>
485 <li class="listitem">
486           OpenSSL is required to build the examples and tests
487         </li>
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.
496               </li></ul></div>
497         </li>
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.
503         </li>
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>
511                 template parameter
512               </li>
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.
516               </li>
517 <li class="listitem">
518                 Virtual functions in the derived class may be marked <code class="computeroutput"><span class="identifier">override</span></code>.
519               </li>
520 </ul></div>
521         </li>
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
525           as needed.
526         </li>
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>
532                 instead.
533               </li></ul></div>
534         </li>
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>.
543               </li></ul></div>
544         </li>
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".
551               </li></ul></div>
552         </li>
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>
557           as needed.
558         </li>
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>
562         </li>
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.
569         </li>
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.
575         </li>
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>
586               </li></ul></div>
587         </li>
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.
594         </li>
595 </ul></div>
596 <p>
597       <span class="bold"><strong>Examples</strong></span>
598     </p>
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
605                 timeouts (HTTP)
606               </li>
607 <li class="listitem">
608                 Use <code class="computeroutput"><span class="identifier">ssl_stream</span></code>
609               </li>
610 <li class="listitem">
611                 Set timeouts for WebSocket streams.
612               </li>
613 <li class="listitem">
614                 Use <code class="computeroutput"><span class="identifier">bind_front_handler</span></code>
615               </li>
616 </ul></div>
617         </li>
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
620         </li>
621 <li class="listitem">
622           ( <a href="https://github.com/boostorg/beast/issues/1347" target="_top">#1347</a>) echo-op is rewritten
623         </li>
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>
626         </li>
627 <li class="listitem">
628           Advanced servers use HTTP parser interfaces for reading
629         </li>
630 <li class="listitem">
631           detect-ssl is rewritten
632         </li>
633 <li class="listitem">
634           New example <a href="../../../example/websocket/server/chat-multi" target="_top">example/websocket/server/chat-multi</a>
635         </li>
636 <li class="listitem">
637           <code class="computeroutput"><span class="identifier">async_echo</span></code> works with move-only
638           handlers
639         </li>
640 <li class="listitem">
641           cppcon2018 example is removed
642         </li>
643 </ul></div>
644 <p>
645       <span class="bold"><strong>Fixes</strong></span>
646     </p>
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
650         </li>
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
653         </li>
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>
656           for Asio changes
657         </li>
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>
660         </li>
661 <li class="listitem">
662           ( <a href="https://github.com/boostorg/beast/issues/1290" target="_top">#1290</a>) Don't use deprecated Asio interfaces
663         </li>
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>
666         </li>
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
669         </li>
670 <li class="listitem">
671           ( <a href="https://github.com/boostorg/beast/issues/1358" target="_top">#1358</a>) Destroy abandoned websocket ops on shutdown
672         </li>
673 <li class="listitem">
674           ( <a href="https://github.com/boostorg/beast/issues/1365" target="_top">#1365</a>) Handler wrappers decay parameters sooner
675         </li>
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>
678           is thread-safe
679         </li>
680 <li class="listitem">
681           ( <a href="https://github.com/boostorg/beast/issues/1414" target="_top">#1414</a>) Boost.System is header-only
682         </li>
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
685         </li>
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
688         </li>
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
691         </li>
692 <li class="listitem">
693           Reusing an HTTP parser returns an error
694         </li>
695 <li class="listitem">
696           Handler bind wrappers use the associated allocator
697         </li>
698 <li class="listitem">
699           <code class="computeroutput"><span class="identifier">buffers_cat</span></code> correctly skips
700           empty buffers when iterated
701         </li>
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
705         </li>
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>
708         </li>
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
711         </li>
712 <li class="listitem">
713           A handler work guard is maintained on paused websocket operations
714         </li>
715 <li class="listitem">
716           All behavior of default-constructed iterators is conforming
717         </li>
718 </ul></div>
719 <h4>
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
722       1.69</a>
723     </h4>
724 <p>
725       <span class="bold"><strong>New Videos</strong></span>
726     </p>
727 <div class="mediaobject"><embed src="https://www.youtube.com/embed/7FQwAjELMek" align="middle" width="448" height="252"></embed></div>
728 <p>
729       <span class="bold"><strong>New Features</strong></span>
730     </p>
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>
733         </li></ul></div>
734 <p>
735       <span class="bold"><strong>Examples</strong></span>
736     </p>
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
739         </li></ul></div>
740 <p>
741       <span class="bold"><strong>Fixes</strong></span>
742     </p>
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
746         </li>
747 <li class="listitem">
748           ( <a href="https://github.com/boostorg/beast/issues/1237" target="_top">#1237</a>) Verify certificates in client examples
749         </li>
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>
752         </li>
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
755         </li>
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
758           hooks
759         </li>
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
762         </li>
763 <li class="listitem">
764           ( <a href="https://github.com/boostorg/beast/issues/1263" target="_top">#1263</a>) Fix uninitialized comparison in buffers iterator
765         </li>
766 <li class="listitem">
767           ( <a href="https://github.com/boostorg/beast/issues/1288" target="_top">#1288</a>) Remove extraneous strand from example
768         </li>
769 <li class="listitem">
770           Workaround for http-server-fast and libstdc++
771         </li>
772 <li class="listitem">
773           Partial support for <code class="computeroutput"><span class="identifier">BOOST_NO_EXCEPTIONS</span></code>
774         </li>
775 </ul></div>
776 <p>
777       <span class="bold"><strong>Experimental</strong></span>
778     </p>
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>
781         </li></ul></div>
782 <h4>
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
785       1.68</a>
786     </h4>
787 <p>
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.
794     </p>
795 <p>
796       <span class="bold"><strong>New Features</strong></span>
797     </p>
798 <p>
799       The include directory <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">beast</span><span class="special">/</span><span class="identifier">experimental</span><span class="special">&gt;</span></code> contains features which are not part of
800       the stable public interface but are available anyway. They may change in future
801       versions.
802     </p>
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
807         </li>
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
811         </li>
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
815         </li>
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.
822         </li>
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
825         </li>
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
828           entropy to the PRNG
829         </li>
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
833         </li>
834 </ul></div>
835 <p>
836       <span class="bold"><strong>Improvements</strong></span>
837     </p>
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
841         </li>
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>
844         </li>
845 <li class="listitem">
846           ( <a href="https://github.com/boostorg/beast/issues/1188" target="_top">#1188</a>) Set "/permissive-" for MSVC builds
847         </li>
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
850         </li>
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>
853         </li>
854 </ul></div>
855 <p>
856       <span class="bold"><strong>Fixes</strong></span>
857     </p>
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
861         </li>
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
864         </li>
865 <li class="listitem">
866           ( <a href="https://github.com/boostorg/beast/issues/1079" target="_top">#1079</a>) Remove spurious assert
867         </li>
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
871           based HTTP writes
872         </li>
873 <li class="listitem">
874           ( <a href="https://github.com/boostorg/beast/issues/1119" target="_top">#1119</a>) Fix unused variable warning
875         </li>
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
878         </li>
879 <li class="listitem">
880           ( <a href="https://github.com/boostorg/beast/issues/1141" target="_top">#1141</a>) Tidy up composed operation doc
881         </li>
882 <li class="listitem">
883           ( <a href="https://github.com/boostorg/beast/issues/1186" target="_top">#1186</a>) Check error in example set_option
884         </li>
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
887         </li>
888 <li class="listitem">
889           ( <a href="https://github.com/boostorg/beast/issues/1211" target="_top">#1211</a>) Fix parse_dec algorithm
890         </li>
891 <li class="listitem">
892           ( <a href="https://github.com/boostorg/beast/issues/1214" target="_top">#1214</a>) Silence ubsan false positive
893         </li>
894 <li class="listitem">
895           Tidy up websocket stream javadocs
896         </li>
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>
899         </li>
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
902         </li>
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
905           type
906         </li>
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>
909         </li>
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
912         </li>
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>
916           concept docs
917         </li>
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
921         </li>
922 </ul></div>
923 <p>
924       <span class="bold"><strong>Breaking Changes</strong></span>
925     </p>
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>
929         </li>
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
933         </li>
934 </ul></div>
935 <h4>
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
938       1.67</a>
939     </h4>
940 <p>
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.
943     </p>
944 <p>
945       <span class="bold"><strong>New Features</strong></span>
946     </p>
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
950         </li>
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
953         </li>
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.
966         </li>
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.
977         </li>
978 </ul></div>
979 <p>
980       <span class="bold"><strong>Improvements</strong></span>
981     </p>
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
985         </li>
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
988           are provided
989         </li>
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>
992         </li>
993 <li class="listitem">
994           Add <code class="literal">&lt;<a href="../../../../../boost/beast/websocket/stream_fwd.hpp" target="_top">boost/beast/websocket/stream_fwd.hpp</a>&gt;</code>
995         </li>
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
998         </li>
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
1002         </li>
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>
1005         </li>
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
1008         </li>
1009 <li class="listitem">
1010           Some basic_fields operations now give the strong exception guarantee
1011         </li>
1012 </ul></div>
1013 <p>
1014       <span class="bold"><strong>Fixes</strong></span>
1015     </p>
1016 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
1017 <li class="listitem">
1018           Fix "warning: &#8216;const&#8217; type qualifier on return type has no effect"
1019         </li>
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>
1022           special members
1023         </li>
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">&lt;</span><span class="identifier">algorithm</span><span class="special">&gt;</span></code> are protected from macros
1026         </li>
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
1029         </li>
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>
1032         </li>
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
1035         </li>
1036 <li class="listitem">
1037           ( <a href="https://github.com/boostorg/beast/issues/988" target="_top">#988</a>) Type check completion handlers
1038         </li>
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
1041         </li>
1042 <li class="listitem">
1043           Fix memory leak in advanced server examples
1044         </li>
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>.
1048         </li>
1049 <li class="listitem">
1050           ( <a href="https://github.com/boostorg/beast/issues/1019" target="_top">#1019</a>) Fix fallthrough warnings
1051         </li>
1052 <li class="listitem">
1053           ( <a href="https://github.com/boostorg/beast/issues/1024" target="_top">#1024</a>) Fix teardown for TIME_WAIT
1054         </li>
1055 <li class="listitem">
1056           ( <a href="https://github.com/boostorg/beast/issues/1030" target="_top">#1030</a>) Fix big-endian websocket masking
1057         </li>
1058 <li class="listitem">
1059           Safe treatment of zero-length string arguments in basic_fields
1060         </li>
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
1063         </li>
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
1066         </li>
1067 <li class="listitem">
1068           Add Access-Control-Expose-Headers field constant
1069         </li>
1070 </ul></div>
1071 <p>
1072       <span class="bold"><strong>API Changes</strong></span>
1073     </p>
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.
1078         </li>
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.
1084         </li>
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.
1093         </li>
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
1096           fancy pointers
1097         </li>
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>
1101         </li>
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>.
1105         </li>
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
1118           to be accepted).
1119         </li>
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.
1123         </li>
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.
1127         </li>
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">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
1131           with <code class="computeroutput"><span class="identifier">get_lowest_layer</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code>.
1132         </li>
1133 </ul></div>
1134 <h4>
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
1137       1.66</a>
1138     </h4>
1139 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
1140           Initial release
1141         </li></ul></div>
1142 </div>
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 &#169; 2016-2019 Vinnie
1146       Falco<p>
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>)
1149       </p>
1150 </div></td>
1151 </tr></table>
1152 <hr>
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>
1155 </div>
1156 </body>
1157 </html>