diff --git a/CHANGELOG.md b/CHANGELOG.md
index cd1098e9..2b558db0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,7 @@
Version 156:
* Don't use typeid
+* Add release notes to documentation
--------------------------------------------------------------------------------
diff --git a/doc/qbk/00_main.qbk b/doc/qbk/00_main.qbk
index 5685cc56..5e1a21df 100644
--- a/doc/qbk/00_main.qbk
+++ b/doc/qbk/00_main.qbk
@@ -28,6 +28,7 @@
[template source_file[path] ''''''[path]'''''']
[template include_file[path][^<''''''[path]''''''>]]
+[template issue[n] '''(#'''[n]''')''']
[def __N3747__ [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3747.pdf [*N3747]]]
[def __NetTS__ [@http://cplusplus.github.io/networking-ts/draft.pdf [*Networking.TS]]]
@@ -111,6 +112,7 @@
[include 06_websocket.qbk]
[include 07_concepts.qbk]
[include 08_design.qbk]
+[include 09_releases.qbk]
[section:quickref Reference]
[xinclude quickref.xml]
diff --git a/doc/qbk/09_releases.qbk b/doc/qbk/09_releases.qbk
new file mode 100644
index 00000000..36e07ae8
--- /dev/null
+++ b/doc/qbk/09_releases.qbk
@@ -0,0 +1,160 @@
+[/
+ Copyright (c) 2016-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+ Official repository: https://github.com/boostorg/beast
+]
+
+[section Release Notes]
+
+[heading Boost 1.67]
+
+This version fixes significant defects in
+[link beast.ref.boost__beast__websocket__stream `websocket::stream`]
+which can lead to asserts or undefined behavior. Users are encouraged
+to update to the latest Boost release.
+
+[*New Features]
+
+* Move-only completion handlers are supported throughout the library
+
+* [issue 899] Advanced server examples support idle websocket pings and timeouts
+
+* [issue 849] WebSocket permessage-deflate support is now a compile-time
+ feature. This adds an additional `bool` template parameter to
+ [link beast.ref.boost__beast__websocket__stream `websocket::stream`]
+ When `deflateSupported` is `true`, the stream will be capable of
+ negotiating the permessage-deflate websocket extension per the
+ configured run-time settings.
+ When `deflateSupported` is `false`, the stream will never negotiate
+ the permessage-deflate websocket extension. Furthermore, all of the
+ code necessary for implementing the permessage-deflate extension
+ will be excluded from function instantiations. Programs which set
+ `deflateSupported` to `false` when instantiating streams will be smaller.
+
+* [issue 949] WebSocket error codes are revised. New
+ [link beast.ref.boost__beast__websocket__error error codes]
+ are added for more fine-grained failure outcomes. Messages for error
+ codes are more verbose to help pinpoint the problem. Error codes are
+ now also mapped to newly added
+ [link beast.ref.boost__beast__websocket__condition error conditions]
+ to simplify comparisons. The error codes `websocket::error::failed`
+ and `websocket::error::handshake_failed` are removed.
+ Actions required:
+ Code which explicitly compares `error_code` values against
+ the constant `websocket::error::handshake_failed` should compare
+ against
+ [link beast.ref.boost__beast__websocket__condition `websocket::condition::handshake_failed`]
+ instead.
+ Code which explicitly compares error_code values against the
+ constant `websocket::error::failed` should compare
+ against
+ [link beast.ref.boost__beast__websocket__condition `websocket::condition::protocol_violation`]
+ instead.
+
+[*Improvements]
+
+* [issue 857]
+ [link beast.ref.boost__beast__http__basic_fields `http::basic_fields`]
+ uses less storage
+
+* [issue 894]
+ [link beast.ref.boost__beast__http__basic_fields `http::basic_fields`]
+ exception specifiers are provided
+
+* Implementation no longer uses deprecated `asio::null_buffers`
+
+* Add [include_file boost/beast/websocket/stream_fwd.hpp]
+
+* [issue 955] The asynchronous SSL detector example uses a stackless coroutine
+
+* [link beast.ref.boost__beast__bind_handler `bind_handler`]
+ works with boost placeholders
+
+
+[*Fixes]
+
+* Fix "warning: ‘const’ type qualifier on return type has no effect"
+
+* [issue 916] Tidy up `ssl_stream` special members in
+ [source_file example/common/ssl_stream.hpp]
+
+* [issue 918] Calls to `` are protected from macros
+
+* [issue 954] The control callback is invoked on the proper executor
+
+* [issue 994] Fix iterator version of
+ [link beast.ref.boost__beast__http__basic_fields.erase.overload1 `http::basic_fields::erase`]
+
+* [issue 992] Fix use-after-move in example request handlers
+
+* [issue 988] Type check completion handlers
+
+* [issue 985] Tidy up
+ [link beast.ref.boost__beast__bind_handler `bind_handler`]
+ doc
+
+* Fix memory leak in advanced server examples
+
+* [issue 1000] Fix soft-mutex assert in websocket stream.
+ This resolves the assert `"ws_.wr_block_ == tok_"`.
+
+* [issue 1019] Fix fallthrough warnings
+
+[*API Changes]
+
+* [issue 1029] Remove unintended public members of
+ [link beast.ref.boost__beast__handler_ptr `handler_ptr`].
+ Actions required: don't call non-public members.
+
+* [link beast.ref.boost__beast__handler_ptr `handler_ptr`]
+ is a move-only type, with `unique_ptr` semantics.
+ Actions required: user-defined composed operations using `handler_ptr`
+ to manage state can only be moved, not copied.
+
+* [link beast.ref.boost__beast__handler_ptr `handler_ptr`]
+ gives the strong exception guarantee. The signature
+ for managed objects constructed by `handler_ptr` now receives a
+ `const` reference to the handler. Actions required: Change the
+ constructor signature for state objects used with `handler_ptr`
+ to receive a `const` reference to the handler.
+
+* [issue 896]
+ [link beast.ref.boost__beast__http__basic_fields `http::basic_fields`]
+ does not support fancy pointers
+
+* [link beast.ref.boost__beast__http__parser `http::parser`]
+ is no longer [*MoveConstructible]
+
+* [issue 930] `http::serializer::reader_impl` is deprecated and will
+ be removed in the next release. Actions required: Call
+ [link beast.ref.boost__beast__http__serializer.writer_impl `http::serializer::writer_impl`]
+ instead of `serializer::reader_impl`.
+
+* [issue 884] The __BodyReader__ and __BodyWriter__ concept constructor
+ requirements have changed. They now require the header and body
+ elements to be passed as distinct
+ [link beast.ref.boost__beast__http__header `http::header`]
+ and `value_type` objects. This enables the composition of body types.
+ The previous single-argument constructors are deprecated and will be
+ removed in the next version.
+ Actions required: Change user-defined instances of __BodyReader__ or
+ __BodyWriter__ constructor signatures to the two-argument form.
+ Alternatively. define the macro `BOOST_BEAST_ALLOW_DEPRECATED` in
+ the project (which will cause both the new and the deprecated
+ signatures to be accepted).
+
+* [link beast.ref.boost__beast__websocket__stream.control_callback `websocket::stream::control_callback`]
+ now copies or moves the function object.
+
+
+
+
+
+[heading Boost 1.66]
+
+* Initial release
+
+[endsect]