release_notes.qbk 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796
  1. [/
  2. Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com)
  3. Distributed under the Boost Software License, Version 1.0. (See accompanying
  4. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  5. Official repository: https://github.com/boostorg/beast
  6. ]
  7. [section Release Notes]
  8. [/-----------------------------------------------------------------------------]
  9. [heading Boost 1.72]
  10. [*Examples]
  11. * Add async-ssl-system-executor http client example
  12. * Add async-ssl-system-executor websocket client example
  13. [*Features]
  14. * Async init-fns use the executor's default token
  15. * Use automatically deduced return types for all async operations (since C++14)
  16. * Support Concepts for completion token params
  17. [*Fixes]
  18. * [issue 1664] Add default dtors to satisfy -Wnon-virtual-dtor
  19. * [issue 1682] Multiple I/O of the same type is not supported
  20. * [issue 1687] Fix signed/unsigned mismatch in file_stdio::seek
  21. * [issue 1688] basic_stream dtor cannot throw
  22. * [issue 1734] Fix leftovers in basic_parser corner case:
  23. * [issue 1751] https_get example sends the Host header
  24. * [issue 1754] Fix async_close error code when async_read times out
  25. * [issue 1782] root_certificates.hpp is not for production
  26. * Fix data race in websocket examples
  27. * Fix data race in http server examples
  28. * Squelch spurious websocket timer assert
  29. * Use the executor type in basic_stream timer
  30. [/-----------------------------------------------------------------------------]
  31. [heading Boost 1.71]
  32. [*Improvements]
  33. * [issue 1280] Add 1-element specialization for `buffers_cat`
  34. * [issue 1556] Set parser status and flags even if body limit has been reached
  35. * [issue 1567] Relax requirements for vector_body
  36. * [issue 1568] `detect_ssl` uses `bool` instead of `tribool`
  37. * [issue 1574] Replace `static_string` in HTTP parser
  38. * [issue 1606] Use `steady_timer` type
  39. * [issue 1611] Make chat websocket javascript client more user friendly
  40. * [issue 1613] Remove redundant use of `static_string`
  41. * [issue 1636] Improve performance of `http::string_to_verb`
  42. * Preserve `operation_aborted` on partial message
  43. * Remove unused `<experimental/unit_test/thread.hpp>`
  44. * Reduce the number of instantiations of `filter_token_list`
  45. * Add idle ping suspend test
  46. * Remove the use of `bind_executor` in `basic_stream`
  47. * Remove redundant template in service_base
  48. * Remove the use of `static_string` from `http::fields`
  49. * Enable split compilation in http::basic_fields
  50. * Remove redundant instation of `static_string` in websocket
  51. * Remove redundant use of `asio::coroutine` in `flat_stream`
  52. * More split compilation in rfc7230.hpp
  53. * More split compilation in websocket/detail/mask.hpp
  54. * Simplify generation of sec-websocket-key
  55. [*Fixes]
  56. * [issue 1332] `allocator_traits::construct` is used for user-defined types
  57. * [issue 1559] Member `get_executor` const-correctness
  58. * [issue 1569] Fix `async_detect_ssl` handler type
  59. * [issue 1570] Launder pointers
  60. * [issue 1578] Fix min/max on MSVC
  61. * [issue 1586] Fix uninitalized memory use in deflate_stream
  62. * [issue 1593] Fix UB in websocket close tests
  63. * [issue 1594] Fix data race in test stream
  64. * [issue 1599] Fix moved-from executor in idle ping timeout
  65. * [issue 1607] Remove uses of the deprecated `buffers` function
  66. * [issue 1612] Remove uses of deprecated methods in websocket tests
  67. * [issue 1620] Clean up typo in chat websocket javascript client
  68. * [issue 1621] Fix `flat_buffer` copy members
  69. * Silence gcc-8 warning
  70. * Fix `buffers_cat` iterator tests
  71. * Don't pessimize-move
  72. * Qualify calls to `beast::iequals` in basic_parser.ipp
  73. * Fix UB in websocket read tests
  74. * Simplify websocket::detail::prng
  75. * Don't over-allocate in http::basic_fields
  76. [*Documentation]
  77. * Documentation is built with SaxonHE instead of xsltproc
  78. [/-----------------------------------------------------------------------------]
  79. [heading Boost 1.70]
  80. [tip
  81. The namespace alias `net` is used throughout for `boost::asio`.
  82. ]
  83. [*New Features]
  84. * All composed operations use the new
  85. [@boost:/doc/html/boost_asio/reference/async_initiate.html `net::async_initiate`]
  86. internally.
  87. * New `tcp_stream` and
  88. `basic_stream`
  89. support:
  90. * Timeouts,
  91. [link beast.ref.boost__beast__basic_stream.async_read_some `async_read_some`],
  92. [link beast.ref.boost__beast__basic_stream.async_write_some `async_write_some`]
  93. complete with
  94. [link beast.ref.boost__beast__error `error::timeout`]
  95. on expiration.
  96. * Traffic-shaping policies
  97. [link beast.ref.boost__beast__simple_rate_policy `simple`] and
  98. [link beast.ref.boost__beast__unlimited_rate_policy `unlimited`],
  99. or a user-defined
  100. [link beast.concepts.RatePolicy ['RatePolicy]].
  101. * Supports
  102. [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1322r0.html P1322R0].
  103. * `websocket::stream`
  104. supports
  105. * Configurable handshake timeout
  106. * Configurable idle timeout
  107. * Automatic idle pings
  108. * [link beast.ref.boost__beast__ssl_stream `ssl_stream`]
  109. is a public interface
  110. * ([issue 1305]) Better
  111. `flat_buffer`,
  112. `flat_static_buffer`,
  113. `multi_buffer`, and
  114. `static_buffer`:
  115. * Revise all reference documentation
  116. * Move construction does not always invalidate buffers
  117. * non-const `data()` returns a mutable buffer sequence
  118. * Add `cdata()` to also return constant readable bytes
  119. * Eligible member functions are declared `noexcept`
  120. * ([issue 1345]) Better
  121. `flat_buffer`,
  122. `multi_buffer`
  123. * Add `clear`, `reserve()`, `max_size()`, `shrink_to_fit()`
  124. * Respect Allocator `max_size()`
  125. * Specify exception safety
  126. * ([issue 1384]) New functions
  127. `bind_front_handler`
  128. * Better
  129. `static_buffer`,
  130. `flat_static_buffer`
  131. * Add `clear()`
  132. * More members are `noexcept`
  133. * Specify exception safety
  134. * Faster
  135. `http::string_to_field`
  136. * Dynamic buffer `clear` operations perserve capacity.
  137. * New file <boost/beast/core/buffer_traits.hpp>
  138. * New variadic `is_const_buffer_sequence`
  139. * New variadic `is_mutable_buffer_sequence`
  140. * New trait `buffers_iterator_type`
  141. * New trait `buffers_type`
  142. * New classes
  143. `async_base`,
  144. `stable_async_base`
  145. * Handle boilerplate for writing composed operations
  146. * New
  147. `allocate_stable`
  148. is preferred over `handler_ptr`
  149. * New
  150. `buffer_bytes`
  151. replacement for `net::buffer_size`
  152. * New:
  153. * `saved_handler`
  154. * `buffers_range_ref`
  155. * `executor_type`
  156. * `get_lowest_layer`,
  157. `lowest_layer_type`
  158. * `close_socket`,
  159. `beast_close_socket`
  160. * `error`,
  161. `condition`
  162. * These interfaces are now public (were experimental):
  163. [link beast.ref.boost__beast__flat_stream `flat_stream`],
  164. [link beast.ref.boost__beast__detect_ssl `detect_ssl`],
  165. [link beast.ref.boost__beast__async_detect_ssl `async_detect_ssl`].
  166. * Websocket streams use PCG as the fast random number generator,
  167. for increased security.
  168. [*Documentation]
  169. * WebSocket reference documentation is revised
  170. * Updated [link beast.using_io.asio_refresher Networking Refresher]
  171. * Revised [link beast.using_io.writing_composed_operations.echo Asynchronous Echo]
  172. * Rewritten [link beast.using_io.writing_composed_operations.detect_ssl [*Detect SSL Handshake]]
  173. [*API Changes]
  174. * The __Fields__ concept is deprecated and will be removed
  175. in a future version. ['Actions Required]: Do not rely on
  176. the ['Fields] concept.
  177. * `handler_ptr` is deprecated. ['Actions Required]: Use
  178. `stable_async_base` and
  179. `allocate_stable`
  180. instead.
  181. * On Windows, Visual Studio 2017 or later is required
  182. * OpenSSL is required to build the examples and tests
  183. * HTTP stream algorithms return the number of bytes transferred
  184. from the stream. Previously, they returned the number of bytes
  185. consumed by the parser.
  186. ['Actions Required]:
  187. * Callers depending on the return value of
  188. `http::read` or
  189. `http::async_read`
  190. overloads should adjust the usage of
  191. the returned value as needed.
  192. * Metafunctions
  193. `has_get_executor`,
  194. `is_sync_stream`,
  195. `is_sync_read_stream`,
  196. `is_sync_write_stream`,
  197. `is_async_stream`,
  198. `is_async_read_stream`, and
  199. `is_async_write_stream`
  200. are in stream_traits.hpp.
  201. ['Actions Required]: Include stream_traits.hpp as needed.
  202. * `basic_parser`
  203. is abstract.
  204. ['Actions Required]
  205. * Change uses of the `basic_parser` type to omit the `Derived`
  206. template parameter
  207. * Classes derived from `basic_parser` no longer need to friend
  208. the base.
  209. * Virtual functions in the derived class may be marked `override`.
  210. * Metafunction
  211. `is_file`
  212. is in file_base.hpp.
  213. ['Actions Required]: Include file_base.hpp as needed.
  214. * `flat_static_buffer::reset()`
  215. is deprecated.
  216. ['Actions Required]:
  217. * call
  218. `clear()` instead.
  219. * `buffers_adapter` is spelled
  220. `buffers_adaptor`.
  221. ['Actions Required]:
  222. * Replace `buffers_adapter` with
  223. `buffers_adaptor`,
  224. or define `BOOST_BEAST_ALLOW_DEPRECATED`.
  225. * `buffers` is spelled
  226. `make_printable`.
  227. ['Actions Required]:
  228. * Replace `buffers` with
  229. `make_printable`,
  230. and include "make_printable.hpp" instead of "ostream.hpp".
  231. * `file_mode::append_new` is removed, as it makes no sense.
  232. ['Actions Required]:
  233. - Replace `file_mode::append_new` with either
  234. `file_mode::append` or
  235. `file_mode::append_existing`
  236. as needed.
  237. * `role_type` is moved from `websocket` to `beast`
  238. * `buffers_range_ref`
  239. is preferred to `std::reference_wrapper`.
  240. ['Actions Required]:
  241. - Call
  242. `buffers_range_ref`
  243. with the buffer, instead of calling
  244. `buffers_range`
  245. with a reference wrapper constructed from the buffer.
  246. * Nested `lowest_layer` and `lowest_layer_type` are removed.
  247. ['Actions Required]: Use the free function
  248. `get_lowest_layer` and the
  249. type trait
  250. `lowest_layer_type` instead.
  251. * WebSocket decorator is a socket option:
  252. * Overloads of the following functions which accept a Decorator
  253. are deprecated:
  254. - `accept`, `accept_ex`
  255. - `handshake`, `handshake_ex`
  256. - `async_accept`, `async_accept_ex`
  257. - `async_handshake`, `async_handshake_ex`
  258. * ([issue 1375]) The value returned from `basic_parser::content_length`
  259. no longer changes as the body of the message is received.
  260. ['Actions Required]: Call `basic_parser::content_length_remaining` instead
  261. of `basic_parser::content_length` in order to determine the remaining
  262. number of bytes in the body.
  263. [*Examples]
  264. * All example programs are updated:
  265. * Use
  266. `tcp_stream`
  267. with timeouts (HTTP)
  268. * Use
  269. `ssl_stream`
  270. * Set timeouts for WebSocket streams.
  271. * Use
  272. `bind_front_handler`
  273. * ([issue 1100]) http-crawl clears the response before each read
  274. * ([issue 1347]) echo-op is rewritten
  275. * ([issue 1401]) Examples use
  276. `flat_buffer`
  277. * Advanced servers use HTTP parser interfaces for reading
  278. * detect-ssl is rewritten
  279. * New example [path_link example/websocket/server/chat-multi example/websocket/server/chat-multi]
  280. * `async_echo` works with move-only handlers
  281. * cppcon2018 example is removed
  282. [*Fixes]
  283. * ([issue 38]) Better treatment of SSL short reads
  284. * ([issue 1223]) HTTP read counts bytes correctly when an error occurs
  285. * ([issue 1247]) Update `ssl_stream`
  286. for Asio changes
  287. * ([issue 1279]) Enable explicit instantiations of
  288. `websocket::stream`
  289. * ([issue 1290]) Don't use deprecated Asio interfaces
  290. * ([issue 1306]) `http::message`
  291. is not-a `boost::empty_value`
  292. * ([issue 1306]) `test::stream`
  293. has fewer dependencies
  294. * ([issue 1358]) Destroy abandoned websocket ops on shutdown
  295. * ([issue 1365]) Handler wrappers decay parameters sooner
  296. * ([issue 1408]) `session_alloc`
  297. is thread-safe
  298. * ([issue 1414]) Boost.System is header-only
  299. * ([issue 1418]) `test::stream`
  300. maintains a handler work guard
  301. * ([issue 1445]) Fix posix_file::close handling of EINTR
  302. * ([issue 1460]) Large WebSocket Upgrade response no longer overflows
  303. * Reusing an HTTP parser returns an error
  304. * Handler bind wrappers use the associated allocator
  305. * `buffers_cat`
  306. correctly skips empty buffers when iterated
  307. * `ostream`
  308. does not overflow or exceed the dynamic buffer's maximum size
  309. * Fixes to
  310. `test::stream::async_read`
  311. * `file_mode::append_existing`
  312. works correctly
  313. * A handler work guard is maintained on paused websocket operations
  314. * All behavior of default-constructed iterators is conforming
  315. [/-----------------------------------------------------------------------------]
  316. [heading Boost 1.69]
  317. [*New Videos]
  318. [block'''
  319. <mediaobject>
  320. <videoobject>
  321. <videodata fileref="https://www.youtube.com/embed/7FQwAjELMek"
  322. align="center" contentwidth="448" contentdepth="252"/>
  323. </videoobject>
  324. </mediaobject>
  325. ''']
  326. [*New Features]
  327. * ([issue 1133]) Add `BOOST_BEAST_USE_STD_STRING_VIEW`
  328. [*Examples]
  329. * New WebSocket server and browser-based client: example/cppcon2018
  330. [*Fixes]
  331. * ([issue 1245]) Fix a rare case of incorrect UTF8 validation
  332. * ([issue 1237]) Verify certificates in client examples
  333. * ([issue 1233]) Use [@boost:/doc/html/core/empty_value.html `boost::empty_value`]
  334. * ([issue 1091]) Fix timer on websocket upgrade in examples
  335. * ([issue 1270]) [link beast.ref.boost__beast__http__basic_fields `basic_fields`] uses intrusive base hooks
  336. * ([issue 1267]) Fix parsing of out-of-bounds hex values
  337. * ([issue 1263]) Fix uninitialized comparison in buffers iterator
  338. * ([issue 1288]) Remove extraneous strand from example
  339. * Workaround for http-server-fast and libstdc++
  340. * Partial support for `BOOST_NO_EXCEPTIONS`
  341. [*Experimental]
  342. * Add `timeout_socket`
  343. [heading Boost 1.68]
  344. This version fixes a missing executor work guard in all composed operations
  345. used in the implementation. Users who are experiencing crashes related to
  346. asynchronous completion handlers are encouraged to upgrade. Also included
  347. is an improved mechanism for generating random numbers used to mask outgoing
  348. websocket frames when operating in the client mode. This resolves a
  349. vulnerability described in the Beast Hybrid Assessment Report from Bishop Fox.
  350. [*New Features]
  351. The include directory `<beast/experimental>` contains features which are not
  352. part of the stable public interface but are available anyway. They may change
  353. in future versions.
  354. * ([issue 1108]) New [link beast.ref.boost__beast__flat_stream `flat_stream`] for working around an SSL stream performance limitation
  355. * ([issue 1151], [issue 595]) New [link beast.ref.boost__beast__http__icy_stream `http::icy_stream`] stream filter allows parsing ICY HTTP response handshakes
  356. * New [link beast.ref.boost__beast__ssl_stream `ssl_stream`] for better SSL performance and move constructability
  357. * New
  358. [link beast.ref.boost__beast__test__error `test::connect`],
  359. [link beast.ref.boost__beast__test__error `test::error`],
  360. [link beast.ref.boost__beast__test__error `test::fail_count`], and
  361. [link beast.ref.boost__beast__test__error `test::stream`] utilities for writing unit tests.
  362. * New [link beast.ref.boost__beast__http__is_mutable_body_writer `http::is_mutable_body_writer`] metafunction
  363. * New [link beast.ref.boost__beast__websocket__seed_prng `websocket::seed_prng`] for manually providing entropy to the PRNG
  364. * New [link beast.ref.boost__beast__websocket__stream.secure_prng `websocket::stream::secure_prng`] to control whether the connection uses a secure PRNG
  365. [*Improvements]
  366. * Generated WebSocket masks use a secure PRNG by default
  367. * Improvements to [link beast.ref.boost__beast__buffers_adaptor `buffers_adaptor`]
  368. * ([issue 1188]) Set "/permissive-" for MSVC builds
  369. * ([issue 1109]) Use a shared string for example HTTP server doc roots
  370. * ([issue 1079]) Add `handler_ptr::has_value`
  371. [*Fixes]
  372. * ([issue 1073]) Fix race in advanced server examples
  373. * ([issue 1076]) Use executor_work_guard in composed operations
  374. * ([issue 1079]) Remove spurious assert
  375. * ([issue 1113]) Add `const` and non-`const` overloads for message based HTTP writes
  376. * ([issue 1119]) Fix unused variable warning
  377. * ([issue 1121]) Examples use the root certificate which matches the fingerprint
  378. * ([issue 1141]) Tidy up composed operation doc
  379. * ([issue 1186]) Check error in example set_option
  380. * ([issue 1210]) Fix http_server_stackless_ssl.cpp example
  381. * ([issue 1211]) Fix parse_dec algorithm
  382. * ([issue 1214]) Silence ubsan false positive
  383. * Tidy up websocket stream javadocs
  384. * Fix move-only arguments in [link beast.ref.boost__beast__bind_handler `bind_handler`]
  385. * Fix [link beast.ref.boost__beast__http__parser `http::parser`] constructor javadoc
  386. * Fix [link beast.ref.boost__beast__buffers_adaptor `buffers_adaptor`] iterator value type
  387. * Fix [link beast.ref.boost__beast__buffers_adaptor.max_size `buffers_adaptor::max_size`]
  388. * Fix [link beast.ref.boost__beast__buffers_prefix `buffers_prefix`] iterator decrement
  389. * Fix __Fields__, __FieldsWriter__ concept docs
  390. * Fix __BodyReader__ constructor requirements doc
  391. [*Breaking Changes]
  392. * Remove deprecated `serializer::reader_impl`
  393. * Remove deprecated __Body__ `reader` and `writer` ctor signatures
  394. [heading Boost 1.67]
  395. This version fixes significant defects in
  396. [link beast.ref.boost__beast__websocket__stream `websocket::stream`]
  397. which can lead to asserts or undefined behavior. Users are encouraged
  398. to update to the latest Boost release.
  399. [*New Features]
  400. * Move-only completion handlers are supported throughout the library
  401. * ([issue 899]) Advanced server examples support idle websocket pings and timeouts
  402. * ([issue 849]) WebSocket permessage-deflate support is now a compile-time
  403. feature. This adds an additional `bool` template parameter to
  404. [link beast.ref.boost__beast__websocket__stream `websocket::stream`]
  405. When `deflateSupported` is `true`, the stream will be capable of
  406. negotiating the permessage-deflate websocket extension per the
  407. configured run-time settings.
  408. When `deflateSupported` is `false`, the stream will never negotiate
  409. the permessage-deflate websocket extension. Furthermore, all of the
  410. code necessary for implementing the permessage-deflate extension
  411. will be excluded from function instantiations. Programs which set
  412. `deflateSupported` to `false` when instantiating streams will be smaller.
  413. * ([issue 949]) WebSocket error codes are revised. New
  414. [link beast.ref.boost__beast__websocket__error error codes]
  415. are added for more fine-grained failure outcomes. Messages for error
  416. codes are more verbose to help pinpoint the problem. Error codes are
  417. now also mapped to newly added
  418. [link beast.ref.boost__beast__websocket__condition error conditions]
  419. to simplify comparisons. The error codes `websocket::error::failed`
  420. and `websocket::error::handshake_failed` are removed.
  421. Actions required:
  422. Code which explicitly compares `error_code` values against
  423. the constant `websocket::error::handshake_failed` should compare
  424. against
  425. [link beast.ref.boost__beast__websocket__condition `websocket::condition::handshake_failed`]
  426. instead.
  427. Code which explicitly compares error_code values against the
  428. constant `websocket::error::failed` should compare
  429. against
  430. [link beast.ref.boost__beast__websocket__condition `websocket::condition::protocol_violation`]
  431. instead.
  432. [*Improvements]
  433. * ([issue 857])
  434. [link beast.ref.boost__beast__http__basic_fields `http::basic_fields`]
  435. uses less storage
  436. * ([issue 894])
  437. [link beast.ref.boost__beast__http__basic_fields `http::basic_fields`]
  438. exception specifiers are provided
  439. * Implementation no longer uses deprecated `asio::null_buffers`
  440. * Add [include_file boost/beast/websocket/stream_fwd.hpp]
  441. * ([issue 955]) The asynchronous SSL detector example uses a stackless coroutine
  442. * [link beast.ref.boost__beast__bind_handler `bind_handler`]
  443. works with boost placeholders
  444. * Examples set `reuse_address(true)`
  445. * ([issue 1026]) Advanced servers support clean shutdown via SIGINT or SIGTERM
  446. * Some basic_fields operations now give the strong exception guarantee
  447. [*Fixes]
  448. * Fix "warning: ‘const’ type qualifier on return type has no effect"
  449. * ([issue 916]) Tidy up `ssl_stream` special members
  450. * ([issue 918]) Calls to `<algorithm>` are protected from macros
  451. * ([issue 954]) The control callback is invoked on the proper executor
  452. * ([issue 994]) Fix iterator version of
  453. [link beast.ref.boost__beast__http__basic_fields.erase.overload1 `http::basic_fields::erase`]
  454. * ([issue 992]) Fix use-after-move in example request handlers
  455. * ([issue 988]) Type check completion handlers
  456. * ([issue 985]) Tidy up
  457. [link beast.ref.boost__beast__bind_handler `bind_handler`]
  458. doc
  459. * Fix memory leak in advanced server examples
  460. * ([issue 1000]) Fix soft-mutex assert in websocket stream.
  461. This resolves the assert `"ws_.wr_block_ == tok_"`.
  462. * ([issue 1019]) Fix fallthrough warnings
  463. * ([issue 1024]) Fix teardown for TIME_WAIT
  464. * ([issue 1030]) Fix big-endian websocket masking
  465. * Safe treatment of zero-length string arguments in basic_fields
  466. * ([issue 1043]) Examples clear the HTTP message before reading
  467. * ([issue 1012]) Add asio_handler_invoke overloads for stream algorithms
  468. * Add Access-Control-Expose-Headers field constant
  469. [*API Changes]
  470. * Remove unintended public members of
  471. `handler_ptr`.
  472. Actions required: don't call non-public members.
  473. * `handler_ptr`
  474. is a move-only type, with `unique_ptr` semantics.
  475. Actions required: user-defined composed operations using `handler_ptr`
  476. to manage state can only be moved, not copied.
  477. * `handler_ptr`
  478. gives the strong exception guarantee. The constructor signature
  479. for managed objects constructed by `handler_ptr` now receives a
  480. `const` reference to the handler. Actions required: Change the
  481. constructor signature for state objects used with `handler_ptr`
  482. to receive a `const` reference to the handler.
  483. * ([issue 896])
  484. [link beast.ref.boost__beast__http__basic_fields `http::basic_fields`]
  485. does not support fancy pointers
  486. * [link beast.ref.boost__beast__http__parser `http::parser`]
  487. is no longer [*MoveConstructible]
  488. * ([issue 930]) `http::serializer::reader_impl` is deprecated and will
  489. be removed in the next release. Actions required: Call
  490. [link beast.ref.boost__beast__http__serializer.writer_impl `http::serializer::writer_impl`]
  491. instead of `serializer::reader_impl`.
  492. * ([issue 884]) The __BodyReader__ and __BodyWriter__ concept constructor
  493. requirements have changed. They now require the header and body
  494. elements to be passed as distinct
  495. [link beast.ref.boost__beast__http__header `http::header`]
  496. and `value_type` objects. This enables the composition of body types.
  497. The previous single-argument constructors are deprecated and will be
  498. removed in the next version.
  499. Actions required: Change user-defined instances of __BodyReader__ or
  500. __BodyWriter__ constructor signatures to the two-argument form.
  501. Alternatively. define the macro `BOOST_BEAST_ALLOW_DEPRECATED` in
  502. the project (which will cause both the new and the deprecated
  503. signatures to be accepted).
  504. * [link beast.ref.boost__beast__websocket__stream.control_callback `websocket::stream::control_callback`]
  505. now copies or moves the function object.
  506. * ([issue 1014]) DynamicBuffer input areas are not mutable.
  507. Actions required: do not attempt to write to input areas of dynamic
  508. buffers.
  509. * ([issue 941]) `get_lowest_layer` is now a type alias.
  510. Actions required: Replace instances of `typename get_lowest_layer<T>::type`
  511. with `get_lowest_layer<T>`.
  512. [heading Boost 1.66]
  513. * Initial release
  514. [endsect]