CHANGELOG.md 86 KB

Version 276:

  • https_get example sends the Host header
  • Fix async_close error code when async_read times out
  • Refactor zlib tests and fix enum typo

Version 275:

  • Async init-fns use the executor's default token
  • Add basic_stream::rebind_executor
  • Use automatically deduced return types for all async operations
  • Support Concepts for completion token params

Version 274:

  • Fix leftovers in basic_parser corner case

Version 273:

  • Squelch spurious websocket timer assert
  • Use the executor type in basic_stream timer

Version 272:

  • Add BEAST_THROWS
  • Add zlib tests and fixes

Version 271:

  • Add HTTP async client with system_executor example
  • Add WebSocket async client with system_executor example
  • Fix data race in HTTP server examples
  • Fix data race in WebSocket examples

Version 270:

  • Silence unused variables
  • Fix typo

Version 269:

  • Fix /permissive- missing include
  • Add test

Version 268:

  • root_certificates.hpp is not for production

Version 267:

  • Add package for Travis config
  • Fix signed/unsigned mismatch in file_stdio::seek
  • basic_stream dtor cannot throw
  • cmake: check policy first
  • Add default dtors to satisfy -Wnon-virtual-dtor
  • Multiple I/O of the same type is not supported

Version 266:

  • Fix some missing deduced return types in the docs

Version 265:

  • Fix outgoing websocket message compression

Version 264:

  • Handle overflow in max size calculation in basic_dynamic_body
  • Fix unused variable warnings in tests
  • Fix missing initializer warning in basic_fields
  • Remove unused functions in impl/static_string.hpp
  • Fix unused variable warning in multi_buffer
  • Fix header-only compilation errors in some configurations
  • Workaround for miscompilation in MSVC 14.2

Version 263:

  • Update documentation

Version 262:

  • Fix deallocate in multi_buffer

Version 261:

  • Deduplicate websocket::read_size_hint definition
  • Fix UB in websocket read tests
  • Remove redundant includes in websocket
  • Simplify websocket::detail::prng
  • Don't over-allocate in http::basic_fields
  • Fix multi_buffer allocation alignment
  • Tidy up buffers_range

Version 260:

  • More split compilation in rfc7230.hpp
  • Qualify calls to beast::iequals in basic_parser.ipp
  • More split compilation in websocket/detail/mask.hpp
  • Cleanup transitive includes in beast/core/detail/type_traits.hpp
  • Simplify generation of sec-websocket-key
  • Move detail::base64 helpers to tests
  • Remove redundant includes in core

Version 259:

  • Reduce the number of instantiations of filter_token_list
  • Remove the use of static_string from http::fields
  • Add gcc-9 to AzP CI test matrix
  • Enable split compilation in http::basic_fields
  • Remove redundant instation of static_string in websocket
  • Remove redundant use of asio::coroutine in flat_stream
  • Remove unused includes from test::stream
  • Move char_buffer into a separate file
  • Fix coverage collection in AzP CI
  • Improve performance of http::string_to_verb
  • Replace uses of net::coroutine with asio::coroutine
  • Replace uses of net::spawn with asio::spawn
  • Use beast::read_size in detail::read

Version 258:

  • Fix separate compilation in CI
  • Fix clang inititalization warning in websocket
  • Remove redundant use of yield_to in parser tests
  • Add VS 2019 AzP CI matrix item
  • Clean up typo in chat websocket javascript client

Version 257:

  • Add b2 features for compile-time options used in testing
  • Remove redundant dependencies in http/server/fast example
  • Remove experimental/unit_test/thread.hpp
  • Use if statement in basic_stream::transfer_op
  • Fix flat_buffer copy members

Version 256:

  • Remove uses of the deprecated buffers function
  • Remove uses of deprecated methods in websocket tests
  • Remove redundant use of static_string
  • Remove redundant template in service_base
  • Expand CI matrix using Azure Pipelines
  • Make chat websocket javascript client more user friendly
  • allocator_traits::construct is used for user-defined types
  • Add 1-element specialization for buffers_cat
  • Fix buffers_cat iterator tests
  • Don't pessimize-move
  • Use steady_timer type
  • Preserve operation_aborted on partial message

Version 255:

  • Add idle ping suspend test
  • Fix moved-from executor in idle ping timeout

Version 254:

  • Fix data race in test::stream::connect
  • Fix UB in websocket close tests
  • Fix uninitalized memory use in deflate_stream
  • Fix gcc-8 warning in websocket::stream

Version 253:

  • Fix async_detect_ssl handler type
  • member get_executor const-correctness
  • Fix min/max on MSVC
  • Relax requirements for vector_body

Version 252:

  • More std::string_view fixes
  • CI copies to libs/beast

Version 251:

  • Clean up CI scripts
  • detect_ssl uses bool
  • launder pointers
  • Fix compilation on MSVC with std::string_view
  • Replace static_string in parser

Version 250:

  • Use SaxonHE in reference generation
  • Cleanup endianness conversions
  • Set parser status and flags even if bodylimit has been reached

Version 249:

  • Move friend function template definition

Version 248:

  • Don't use a moved-from handler

Version 247:

  • Fix async_base immediate completion

Version 246:

  • decorator ctor is explicit

Version 245:

  • decorator constructor is constrained

Version 244:

  • Tidy up declval in some traits
  • Fix websocket keep-alive ping expiration

Version 243:

  • Fix some typos
  • Tidy up file_stdio for VS2015
  • Fix http::message constructor constraint

Version 242:

  • test::stream has deprecated lowest_layer for ssl
  • MSVC uses ::fopen_s
  • Fix http::message constructor constraint
  • Check defined(BOOST_MSVC)

Version 241:

  • Tidy up a doc code snippet
  • basic_parser::content_length is stable (API Change)

Version 240:

  • Fix ssl_stream teardown

Version 239:

  • More split compilation in HTTP

Version 238:

  • Refactor Jamfiles to work with release layout

Version 237:

  • cmake: Use static libs to speed up builds

Version 236:

  • root_certificates.hpp: brought in the server certificate

Version 235:

  • Fix self-assignment warning in buffer test
  • Jamfile cleanup

Version 234:

  • Don't link to OpenSSL needlessly (bjam)
  • HTTPS URLs in README.md

Version 233:

  • Check ANDROID instead
  • Use secure TLS/SSL versions

Version 232:

  • Fix close_socket for net::basic_socket changes
  • Fix file_win32_write_op async initiation
  • Fix basic_stream lowest_layer for ssl

Version 231:

  • Doc section names are stable
  • Add missing include
  • Constrain to_static_string to integers

Version 230:

  • Don't use dynamic_buffer_ref
  • Remove dynamic_buffer_ref
  • Fix completion handler invocation signatures

Version 229:

  • Rename to buffer_bytes
  • Tidy up examples
  • detect_ssl returns a bool
  • Fix stable_async_base example

API Changes:

  • handler_ptr is deprecated

Actions Required:

  • Replace use of handler_ptr with stable_async_base and allocate_stable.

Version 228:

  • Fix UB in decorator:
  • Sync up convenience headers
  • The Fields concept is deprecated (API Change)
  • Fix includes.xsl for newer doxygen
  • Tidy up quick reference
  • SSL teardowns are in an associated namespace

Version 227:

  • Fix decorator for certain sizes

Version 226:

  • Support -fno-exceptions
  • make_strand is in net::
  • Fix HTTP parser static string calculation
  • Move parser definitions to .ipp
  • Appveyor uses msvc-14.0

Version 225:

  • Tidy up an unused function
  • Fix wsload jamfile
  • Examples use flat_buffer
  • Remove session_alloc (API Change)

Actions Required:

  • Don't use session_alloc

Version 224:

  • Remove extraneous error check in advanced-server-flex
  • Advanced servers use HTTP parser interfaces for reading
  • Reusing an HTTP parser returns an error

Version 223:

  • Add test::stream::service
  • Add websocket service
  • Pausation abandoning test
  • Destroy abandoned websocket ops on shutdown

Version 222:

  • stream_base::timeout::suggested is a nested function

Version 221:

  • Rename to async_base, stable_async_base
  • role_type is in boost/beast/core/role.hpp (API Change)
  • Cleanup in test::stream internals
  • Pass references as pointers to async_initiate

Actions Required:

  • Include or define BOOST_BEAST_ALLOW_DEPRECATED=1

  • Version 220:

    • Documentation and release notes

    Version 219:

    • More split definitions in test::stream
    • Visual Studio 2017 minimum requirement for Windows
    • Better treatment of SSL short reads
    • ssl_stream is a public interface
    • basic_parser is abstract, not CRTP (API Change)
    • OpenSSL is required for tests and examples

    Version 218:

    • detect_ssl, async_detect_ssl are public interfaces
    • Add OpenSSL installation/setup instructions
    • Enable split Beast compilation for tests

    Version 217:

    • websocket idle pings
    • RatePolicy documentation
    • Pass strand to async_accept
    • Fix file_body_win32
    • Use async_initiate
    • Check BOOST_NO_CXX11_THREAD_LOCAL
    • Fast prng is pcg

    Version 216:

    • Refactor websocket::stream operations
    • Add websocket::stream timeouts
    • Use suggested timeouts in Websocket examples
    • Add make_strand
    • Add RatePolicy to basic_stream
    • Use async_initiate in basic_stream
    • basic_stream connects are members
    • Beast supports latest Asio changes (API Change)
    • WebSocket Decorator is a socket option (API Change)
    • Overloads of the following functions which accept a Decorator are deprecated:
      • accept, accept_ex
      • handshake, handshake_ex
      • async_accept, async_accept_ex
      • async_handshake, async_handshake_ex

    Actions Required:

    • Code which passes decorator to any websocket::stream member function should call stream::set_option instead with a newly constructed stream_base::decorator object containing the decorator. Alternatively, the macro BOOST_BEAST_ALLOW_DEPRECATED may be defined to 1.

    • Fix compilation errors required by Asio changes


    Version 215:

    • basic_stream uses boost::shared_ptr
    • Remove bind_back_handler
    • bind_front_handler works with member functions
    • Examples use bind_front_handler
    • Add experimental test/handler.hpp
    • Rename to async_op_base::invoke_now
    • Add async_op_base::invoke
    • Remove CppCon2018 example
    • Examples use ssl_stream

    Version 214:

    • Handler binders use the associated allocator
    • Add detail::bind_continuation
    • Rewrite the echo-op example

    Version 213:

    • Fix posix_file::close handling of EINTR
    • basic_stream subsumes stranded_stream:
    • Use timeouts in HTTP server examples
    • Use timeouts in HTTP client examples
    • Use tcp_stream in WebSocket client examples
    • Use tcp_stream in WebSocket server examples
    • Use tcp_stream, HTTP timeouts in advanced servers

    Version 212:

    • dynamic_buffer_ref tests and tidy
    • flat_stream tests and tidy
    • stranded_socket tests and tidy
    • buffers_front tests
    • Improved websocket stream documentation

    Version 211:

    • close_socket is in stream_traits.hpp
    • Improvements to test::stream
    • Add stranded_stream
    • Add flat_stream
    • flat_buffer::clear preserves capacity
    • multi_buffer::clear preserves capacity
    • Fixes to rfc7230

    Version 210:

    • Tidy up read implementation
    • Fix stable_async_op_base javadoc
    • Better handling of stream timeouts
    • Add stream_traits.hpp
    • Add executor_type trait
    • Fix hexadecimal string conversion table
    • is_completion_handler, type_traits.hpp are deprecated
    • Fixes to test::stream::async_read

    API Changes:

    • Stream traits are now in stream_traits.hpp
    • is_file is now in file_base.hpp
    • is_completion_handler is deprecated

    Actions Required:

    • Include stream_traits.hpp as needed
    • Include file_base.hpp as needed
    • Use std::is_invocable instead of is_completion_handler

    Version 209:

    • Faster http::string_to_field
    • async_echo supports move-only handlers
    • test::stream maintains a handler work guard
    • Qualify buffer_copy, don't qualify buffer_size
    • Add dynamic_buffer_ref
    • Refactor quickref.xml
    • Add buffer_size

    Version 208:

    • Add get_lowest_layer free function
    • Add lowest_layer_type metafunction
    • Add close_socket, beast_close_socket customization
    • Doc work

    Version 207

    • Send from the strand
    • Pass the correct handler in basic_timeout_stream

    API Changes:

    • lowest_layer is removed

    Actions Required:

    • Remove lowest_layer and lowest_layer_type from user-defined streams.
    • Use the get_lowest_layer free function and the lowest_layer_type trait as needed.

    Version 206

    • Clear error codes idiomatically
    • websocket stream uses shared_ptr
    • Add websocket-chat-multi example

    • Version 205

      • Doc work
      • Add detail/soft_mutex.hpp
      • Add detail/prng.hpp

      Version 204

      • Add basic_timeout_stream
      • Unit test macros use the global suite
      • Doc work

      Version 203

      • Update networking refresher doc
      • Include error code in call to set_option
      • saved_handler is a public interface
      • Use new saved_handler in websocket
      • session_alloc is thread-safe
      • examples use flat_buffer
      • parse_until is not static
      • Boost.System is header-only

      Version 202

      • Use cxxstd instead of cxxflags
      • Update coverage badge images
      • Tidy up basic_stream_socket docs
      • Refactor async_op_base
      • Use async_op_base
      • async_op_base is a public interface
      • Add tests for bind_back_handler
      • Add tests for async_op_base

      Version 201

      • Decay bound arguments in handler wrapper parameters
      • Add bind_back_handler
      • Tidy up default-constructed iterators
      • Add core errors and conditions
      • New basic_stream_socket

      Version 200

      • Don't include OpenSSL for core snippets
      • Tidy up msvc-14 workaround in multi_buffer
      • buffers_cat fixes and coverage
      • Refactor buffers_adaptor
      • Refactor buffers_range
      • Fix and refactor buffers_cat
      • Refactor buffers_prefix
      • Add const and mutable buffer sequence traits
      • Add buffers_iterator_type trait
      • Use new buffer traits, remove old unused traits
      • Optimize for size on buffers_cat preconditions
      • Refactor buffers_suffix
      • Tidy up flat_buffer tests
      • Fix ostream prepare calculation for low limits
      • Tidy up flat_static_buffer tests
      • Add more tests for dynamic buffers
      • Tidy up multi_buffer
      • Refactor ostream
      • Refactor static_buffer
      • HTTP tidying
      • Adjust static_asio lib options in Jamfile
      • Add type_traits tests
      • Add buffers_range_ref (replaces reference_wrapper parameter)

      API Changes:

      • buffers_adaptor replaces buffers_adapter (rename)
      • make_printable replaces buffers (rename)
      • Remove file_mode::append_new

      Actions Required:

      • Replace buffers_adapter.hpp with buffers_adaptor.hpp, and replace buffers_adapter with buffers_adaptor. Or, define BOOST_BEAST_ALLOW_DEPRECATED

      • Replace call sites to use make_printable instead of buffers, and also include make_printable.hpp instead of ostream.hpp.

      • Replace file_mode::append_new with file_mode::append or file_mode::append_existing instead of file_mode::append_new


      Version 199:

      • Workarounds for msvc-14
      • Fix Appveyor badge links

      Version 198:

      • flat_buffer improvements
      • multi_buffer improvements
      • static_buffer improvements
      • flat_static_buffer_improvements
      • saved_handler maintains a work_guard (websocket)
      • Add buffer_traits.hpp, buffers_type
      • Tidy up experimental files
      • Tidy up core files
      • Fix bind_handler, bind_front_handler
      • Improved handler bind wrapper tests

      API Changes:

      • Files return errc::bad_file_descriptor
      • flat_static_buffer::reset is deprecated

      Actions Required:

      • Callers checking for errc::invalid_argument from calls to file APIs should check for errc::bad_file_descriptor instead.

      • Replace calls to flat_static_buffer::reset with flat_static_buffer::clear


      Version 197:

      • Improvements to echo-op example
      • Crawler example clears the response before each read
      • Use a struct instead of a pair in flat_stream (experimental)

      API Changes:

      • Refactor HTTP operations

      Actions Required:

      • Callers depending on the return value of http::read or http::async_read overloads should adjust the usage of the returned value as needed.

      Version 196:

      • Tidy up calls to placement new
      • Remove unused type_traits
      • Simplify handler_ptr

      Version 195:

      • net is a namespace alias for boost::asio
      • Simplify multi_buffer and static_buffer sequences
      • Documentation work

      Version 194:

      • http::async_read returns the right byte count on error
      • Add net namespace alias
      • Don't use-after-free in test
      • Tidy up ssl_stream (experimental)
      • Dynamic buffer improvements
      • Saved handlers are dispatched

      Version 193:

      • Update ssl_stream signatures for networking changes
      • Fix test::stream async_result transformation
      • Tidy up test::stream
      • Enable explicit instantiation of websocket::stream

      Version 192:

      • Use mp11::integer_sequence
      • Tidy up warnings and deprecated usage
      • http::message is not-a boost::empty_value
      • Fix link in docs
      • Fixes to timeout services (experimental)

      Version 191:

      • Add bind_front_handler
      • Use bind_front_handler
      • Simplify some type traits
      • Use lean_tuple in buffers_cat
      • Use lean_tuple in bind_handler, bind_front_handler
      • Use mp11 in detail::variant
      • Fix buffers_cat uninitialized warning
      • Fix static_string uninitialized warning
      • Fix warning in is_ssl_handshake

      Version 190:

      • Add missing includes to convenience headers
      • Unit test framework is experimental
      • Add buffers_range
      • Rename experimental directory
      • Improve compilation of tests for continuous integration
      • Fix visibility warnings in test

      Version 189-hf1:

      • Fix broken doc link
      • example/cppcon2018 only requires C++11

      Version 189:

      • Add CppCon2018 chat server example and video

      Version 188:

      • Remove extraneous strand from example
      • Add missing include in http/read.ipp
      • Test for gcc warning bug
      • Fix a spurious gcc warning

      Version 187:

      • Add experimental timeout_socket
      • Fix warning in file tests
      • Fix uninitialized comparison in buffers iterator
      • Partial support for BOOST_NO_EXCEPTIONS
      • Fix a spurious gcc warning
      • Test for gcc warning bug
      • Add missing include
      • Remove extraneous strand from example

      Version 186:

      • basic_fields uses intrusive base hooks
      • Fix parsing of out-of-bounds hex values

      Version 185:

      • Remove extraneous function
      • Fix some typos
      • Add BOOST_BEAST_USE_STD_STRING_VIEW
      • Fix timer on websocket upgrade in examples

      Version 183:

      • Fix a rare case of failed UTF8 validation
      • Verify certificates in client examples
      • Use boost::empty_value
      • Workaround for http-server-fast and libstdc++

      Version 182:

      • Silence ubsan false positive

      Version 181:

      • Fix parse_dec algorithm
      • Add parse_dec tests

      Version 180:

      • Fix http_server_stackless_ssl.cpp example

      Version 179:

      • Use the exchange() idiom in move constructors
      • Most members of std::allocate are deprecated in C++17
      • Remove some unused variables

      Version 178:

      • Use static_cast instead

      Version 177:

      • Add test for issue #1188
      • Set /permissive-
      • Check error in example set_option

      Version 176:

      • Tidy up Quick Reference
      • Fix array end calculation in utf8 assertion
      • WebSocket masks use secure PRNG by default

      Version 175:

      • Fix initialization warning

      Version 174:

      • Fix Fields, FieldsWriter concept docs
      • Fix BodyReader constructor requirements doc

      Version 173:

      • Remove Autobahn testsuite doc note
      • Fix buffers_adapter iterator value type
      • Fix buffers_adapter max_size
      • Fix buffers_prefix iterator decrement
      • buffers_adapter improvements
      • Add icy_stream Shoutcast stream filter

      Version 172:

      • Tidy up websocket stream javadocs
      • Fix move-only arguments in bind_handler
      • Fix http::parser constructor javadoc
      • Tidy up test::stream javadocs
      • Tidy up composed operation doc

      Version 171:

      • Add handler_ptr::has_value
      • Remove spurious assert
      • Fix unused variable warning

      Version 170:

      • Add flat_stream to experimental
      • Add ssl_stream to experimental
      • Add test::error to experimental
      • Add test::fail_count to experimental
      • Add test::stream to experimental
      • Use a shared string for example HTTP server doc roots
      • Remove deprecated serializer::reader_impl()
      • Remove deprecated Body reader and writer ctor signatures
      • Add is_mutable_body_writer metafunction
      • Add const and non-const overloads for message based http writes
      • Use the root certificate which matches the fingerprint

      Version 169:

      • Use buffers_to_string in tests
      • Use boost::void_t
      • Refactor HTTP write_op implementation
      • Use fully qualified namespace in BOOST_BEAST_HANDLER_INIT
      • New flat_stream example class
      • Use flat_stream in ssl_stream example code

      Version 168:

      • Use executor_work_guard in composed operations
      • Revert verb.ipp change which caused spurious warnings
      • Fix race in advanced server examples

      Version 167:

      • Revert: Tidy up calls to post()

      Version 166:

      • Use boost::is_convertible as a workaround

      Version 165:

      • Fix BOOST_NO_CXX11_ALLOCATOR check

      Version 164:

      • Fix masking on continuation frames
      • Add Access-Control-Expose-Headers field constant

      Version 163:

      • Tidy up calls to post()
      • Fix narrowing warnings

      Version 162:

      • Add asio_handler_invoke overloads for stream algorithms
      • Improve websocket::stream::control_callback javadoc

      Version 161:

      • Don't copy the handler in write_some_op
      • Add move-only handler tests
      • Fix handler parameter javadocs

      Version 160:

      • Examples clear the HTTP message before reading

      Version 159:

      • Fix typo in release notes
      • Safe treatment of zero-length string arguments in basic_fields
      • Some basic_fields operations now give the strong exception guarantee

      Version 158:

      • Tidy up end_of_stream javadoc
      • Tidy up websocket docs
      • Examples set reuse_address(true)
      • Advanced servers support clean shutdown via SIGINT or SIGTERM
      • DynamicBuffer input areas are not mutable
      • Tidy up some documentation

      API Changes:

      • get_lowest_layer is a type alias

      Actions required:

      • Replace instances of typename get_lowest_layer<T>::type with get_lowest_layer<T>.

      Version 157:

      • Fix teardown for TIME_WAIT
      • Fix big-endian websocket masking

      Version 156:

      • Don't use typeid
      • Add release notes to documentation
      • Fix stale link for void-or-deduced

      Version 155:

      • Fix memory leak in advanced server examples
      • Fix soft-mutex assert in websocket stream
      • Fix fallthrough warnings
      • Tidy up bind_handler doc

      Version 154:

      • Type check completion handlers
      • bind_handler doc update
      • bind_handler works with boost placeholders

      Version 153:

      • Remove BOOST_VERSION checks
      • Use make_error_code for setting an error_code from errc
      • Use boost::winapi::GetLastError() consistently
      • Update README.md for branches
      • Avoid string_view::clear
      • Fix iterator version of basic_fields::erase
      • Fix use-after-move in example request handlers
      • Add Bishop Fox interview media

      Version 152:

      • Refactor detect_ssl_op
      • Disable gdb on Travis for Meltdown

      WebSocket:

      • Redistribute the read tests in the translation units
      • Refactor error headers
      • Add WebSocket error conditions

      API Changes:

      • Refactor WebSocket errors (API Change):

      Actions Required:

      • Code which explicitly compares error_code values against the constant websocket::error::handshake_failed should compare against websocket::condition::handshake_failed instead.

      • Code which explicitly compares error_code values against the constant websocket::error::failed should compare against websocket::condition::protocol_violation instead.


      Version 151:

      • Sanitizer failures are errors
      • Depend on container_hash
      • Fix high-ASCII in source file

      WebSocket:

      • Control callback is invoked on the execution context
      • Add stream_fwd.hpp
      • Remove unnecessary include

      API Changes:

      • http::parser is not MoveConstructible
      • permessage-deflate is a compile-time feature

      Version 150:

      • handler_ptr tests
      • Documentation

      API Changes:

      • serializer::reader_impl is deprecated

      Actions Required:

      • Call serializer::writer_impl instead of reader_impl

      Version 149:

      • built-in r-value return values can't be assigned
      • Tidy up ssl_stream special members
      • Fix CMakeLists.txt variable
      • Protect calls from macros
      • pausation always allocates
      • Don't copy completion handlers
      • handler_ptr is move-only
      • Fix Travis memory utilization

      API Changes:

      • handler_ptr gives the strong exception guarantee

      Actions Required:

      • Change the constructor signature for state objects used with handler_ptr to receive a const reference to the handler.

      Version 148:

      • Install codecov on codecov CI targets only
      • Update reports for hybrid assessment
      • Handle invalid deflate frames

      Version 147:

      • Don't use boost::string_ref
      • Use iterator wrapper in detail::buffers_range

      HTTP:

      • Tidy up basic_fields exception specifiers

      WebSocket:

      • control callback is copied or moved
      • Send idle pings in advanced servers

      Version 146:

      • Fix some typos
      • Faster ascii_tolower
      • Documentation tidying
      • Fix typo in examples documentation
      • Add detail::aligned_union and tidy up
      • Use variant in buffers_cat_view

      API Changes:

      • Remove unintended public members of handler_ptr

      Version 145:

      • Rename some detail functions
      • Refactor basic_fields allocator internals
      • Refactor HTTP async read composed operations
      • null_buffers is deprecated
      • Version 124 works with Boost 1.65.1 and earlier
      • basic_fields does not support fancy pointers

      Version 144-hf1:

      • Update reports for hybrid assessment
      • Handle invalid deflate frames
      • Install codecov on codecov CI targets only

      Version 144:

      • Fix websocket permessage-deflate negotiation

      Version 143:

      • Fix autobahn report link

      Version 142:

      • Warn about upcoming API changes to certain concepts
      • Fix name typo in http write test

      Version 141:

      • Tidy up some documentation

      Version 140:

      • Fix some integer warnings in 64-bit builds
      • Fix utf8_checker test failures
      • Fix signature for async_read_some, and tests
      • Tidy up basic_parser
      • Some basic_fields special members are protected

      Version 139:

      • Revisit boost library min/max guidance

      Version 138:

      • Tidy up some documentation

      Version 137:

      • ConstBufferSequence mandates pointer equivalence
      • Add FieldsWriter constructor requirement
      • Tidy up some documented constructor syntax

      Version 136:

      • Tidy up message doc image

      Version 135:

      • Fix typo in example server help text

      Version 134:

      • Add static_buffer_base default constructor definition

      Version 133:

      • Remove const&& overload of message::body

      Version 132:

      • Tidy up project folders in CMakeLists.txt
      • Rename Cmake variables for clarity
      • Add ref-qualified overloads for message::body
      • Tidy up FieldsReader doc

      API Changes:

      • Fields::writer replaces Fields::reader
      • BodyReader and BodyWriter names are swapped

      Actions Required:

      • Rename reader to writer for user defined Fields
      • Swap the reader and writer names for user defined Body types
      • Swap use of is_body_reader and is_body_writer

      Version 131:

      • basic_fields returns const values
      • Set SNI hostname in example SSL clients

      Version 130:

      • Tidy up fallthrough warning
      • Remove cxx11_sfinae_expr build requirement from tests

      Version 129:

      • Add autobahn test report to doc
      • Documentation tidying
      • Fix prepare_payload: chunked is HTTP/1.1

      Version 128:

      • Update doc links
      • Add explicit-failures-markup.xml

      HTTP:

      • Add message::need_eof
      • Use message::need_eof in example servers
      • Use synchronous writes in chunk output example

      WebSocket:

      • Fix utf8 validation for autobahn
      • Temporarily disable utf8 validation tests
      • Tidy up fast websocket server host names

      API Changes:

      • Remove serializer::keep_alive
      • Remove serializer::chunked
      • Add has_content_length_impl to Fields
      • Add message::has_content_length
      • Rename some basic_parser observers

      Actions Required:

      • Call message::keep_alive instead of serializer::keep_alive
      • Call serializer::get::chunked instead of serializer::chunked
      • Implement has_content_length_impl for user-defined Fields
      • Remove the "is_" prefix from call sites invoking certain basic_parser members

      Version 127:

      • Add BOOST_BEAST_NO_POSIX_FADVISE
      • Version command line option for HTTP client examples
      • More Jamfile compiler requirements for tests

      Version 126:

      • Add CppCon2017 presentation link
      • Update README.md
      • Update stream write documentation for end of stream changes
      • Tidy up unused variable warnings
      • Don't return end_of_stream on win32 file body writes
      • Fix doc typo
      • Fix shadowing in session_alloc
      • Fix executor type compilation
      • Add Travis tests with the default compilers
      • Update Boost.WinAPI usage to the new location and namespace.
      • Fix buffered_read_stream async_read_some signature

      Version 125:

      API Changes:

      • Update for Net-TS Asio

      Actions Required:

      • Use BOOST_ASIO_HANDLER_TYPE instead of handler_type
      • Use BOOST_ASIO_INITFN_RESULT_TYPE instead of async_result
      • Use boost::asio::async_completion
      • Use boost::asio::is_dynamic_buffer
      • Use boost::asio::is_const_buffer_sequence
      • Use boost::asio::is_mutable_buffer_sequence
      • boost::asio::associated_allocator_t replaces handler_alloc

      Version 124:

      • Fix for a test matrix compiler
      • Fix basic_fields javadoc

      API Changes:

      • http write returns success on connection close

      Actions Required:

      • Add code to servers to close the connection after successfully writing a message where message::keep_alive() would return false.

      Version 123:

      • Use unit-test subtree
      • Fix spurious race in websocket close test
      • Check compiler feature in Jamfile
      • Clear previous message fields in parser

      Version 122:

      • Add test for issue 807
      • assert on empty buffer in websocket read
      • Fix zlib symbol conflicts
      • CMake 3.5.1 is required
      • config.hpp is not a public header
      • Add missing case in error test

      Version 121:

      • Add test for issue 802
      • Fix enum and non-enum in conditional exp. warning

      Version 120:

      • Fix spurious strand_ in advanced_server_flex
      • OpenSSL targets are optional (CMake)

      Version 119:

      • Tidy up doc badge links

      Version 118:

      • file_win32 opens for read-only in shared mode
      • Remove unused strands in server examples
      • Update build instructions
      • Doc root is at index.html

      HTTP:

      • Fix writing header into std::ostream

      Version 117:

      • Add buffers_to_string

      API Changes:

      • buffers_suffix replaces consuming_buffers
      • buffers_prefix replaces buffer_prefix
      • buffers_prefix_view replaces buffer_prefix_view
      • buffers_front replaces buffer_front
      • buffers_cat replaces buffer_cat
      • buffers_cat_view replaces buffer_cat_view
      • Remove buffers_suffix::get

      Actions Required:

      • Use buffers_suffix instead of consuming_buffers
      • Use buffers_prefix instead of buffer_prefix
      • Use buffers_prefix_view instead of buffer_prefix_view
      • Use buffers_front instead of buffer_front
      • Use buffers_cat instead of buffer_cat
      • Use buffers_cat_view instead of buffer_cat_view
      • Avoid calling buffers_suffix::get

      Version 116:

      API Changes:

      • message::body is a member function
      • message::version is a member function

      Actions Required:

      • Call member function message::body instead of accessing the data member at call sites.

      • Call member function message::version instead of accessing the version member at call sites.


      Version 115:

      • Update README.md master doc link

      Version 114:

      (No changes)


      Version 113:

      • Fix handler signature in async_read_header
      • Remove field_range copy constructor

      Version 112:

      • Update websocket notes

      API Changes:

      • WebSocket writes return the bytes transferred

      • HTTP reads and writes return bytes transferred

      Actions Required:

      • Modify websocket write completion handlers to receive the extra std::size_t bytes_transferred parameter.

      • Modify HTTP read and/or write completion handlers to receive the extra std::size_t bytes_transferred parameter.


      Version 111:

      WebSocket:

      • Fix utf8 check split code point at buffer end
      • Refactor stream operations and tests plus coverage
      • Suspended ops special members

      Version 110:

      • Refactor stream open state variable
      • Refactor websocket stream members
      • Refactor websocket stream: fixes and tests
      • Add test::stream::lowest_layer
      • Fix invalid iterator in test reporter

      Version 109:

      • refactor test::stream

      WebSocket:

      • Fix async_read_some handler signature
      • websocket close fixes and tests
      • websocket handshake uses coroutine
      • websocket ping tests
      • Fix websocket close_op resume state
      • websocket write tests
      • split up websocket tests
      • websocket read tests

      API Changes:

      • websocket accept refactoring

      Actions Required:

      • Do not call websocket accept overloads which take both a message and a buffer sequence, as it is illegal per rfc6455.

      Version 108:

      • Fix argument parsing in HTTP examples
      • Don't use async_write_msg in examples

      Version 107:

      • Use test::stream

      WebSocket

      • Fix done state for WebSocket reads
      • Fix utf8 check for compressed frames
      • Rename frame and header buffer types

      Version 106:

      • Dynamic buffer input areas are mutable
      • Add flat_static_buffer::reset

      HTTP:

      • Fix for basic_parser::skip(true) and docs

      WebSocket:

      • websocket test improvements
      • Remove obsolete write_op
      • Refactor write_op
      • Refactor ping_op
      • Refactor fail_op
      • Refactor read_op
      • Refactor close_op
      • Refactor read_op + fail_op
      • Websocket close will automatically drain
      • Autobahn|Testsuite fixes
      • Tidy up utf8_checker and tests

      Version 105:

      • Fix compile error in websocket snippet
      • Tidy up Jamfile and tests

      Version 104:

      • Remove unused include
      • Use #error in config.hpp
      • Only set -std=c++11 on Travis
      • Only set /permissive- on Appveyor
      • Tidy up some test warnings
      • tools/ renamed from build/

      WebSocket:

      • Fix pausation::save

      Version 103:

      • Boost test matrix fixes
      • Tidy up allocator usage
      • Example HTTP server fixes

      Version 102:

      • Section headings in examples

      Version 101:

      • Refactor all examples

      Version 100:

      • Fix doc convenience includes
      • Fix doc includes
      • Remove unused test header
      • Rename test macros
      • Reorder define test macro params
      • vcxproj workaround for include symlinks
      • Add variadic min/max

      WebSocket:

      • Remove obsolete frame tests
      • Refactor fail/clode code
      • Call do_fail from read_some
      • eof on accept returns error::closed
      • Fix stream::read_size_hint calculation
      • Documentation

      API Changes:

      • Calls to stream::close and stream::async_close will automatically perform the required read operations

      • drain_buffer is removed

      • role_type replaces teardown_tag

      Actions Required:

      • Remove calling code which drains the connection after calling stream::close or stream::async_close

      • Replace code which uses drain_buffer. For websocket::stream, it is no longer necessary to manually drain the connection after closing.

      • Modify signatures of teardown and async_teardown to use role_type instead of teardown_tag

      • Change calls to teardown and async_teardown to pass the correct role_type, client or server, depending on context.


      Version 99:

      • Log the value of LIB_DIR for doc builds (debug)
      • Use correct handler signature in fail_op
      • Fix doc typo

      Version 98:

      • basic_fields::key_compare is noexcept
      • Fix bench-zlib cmake
      • Use unique names Jam projects
      • Trim utf8 checker test

      Version 97:

      • Update redirect

      Version 96:

      • Move bench/ to test/
      • Move extras/ to test/
      • Use property
      • Rename wsload compile target
      • Fix library.json
      • Update boostorg links
      • Add bench-zlib
      • Faster zlib tests
      • Less compression on websocket test

      • Version 95:

        • Tidy up Travis build scripts
        • Move scripts to build/
        • Fix race in test::pipe
        • close on test::pipe teardown
        • Add test::stream
        • Tidy up static_buffer braced init
        • Fix html redirect
        • Add valgrind variant, fix false positives

        Version 94:

        • Use off-site Quick Start link temporarily

        Version 93:

        • Unset BOOST_COROUTINES_NO_DEPRECATION_WARNING

        Version 92:

        • Fix typo in test/CMakeLists.txt
        • basic_fields::value_type is not copyable
        • Update repository links in source comments
        • Ignore Content-Length in some cases
        • Tidy up doc snippet paths
        • Use off-site doc link

        Version 91:

        • Adjust redirect html
        • Don't build pre-C++11
        • source.dox is path-independent
        • Tidy up namespace qualifiers
        • Tidy up MSVC CMakeLists.txt
        • Optimize buffered_read_stream
        • constexpr in derived buffers
        • Set BOOST_ASIO_NO_DEPRECATED
        • Use Asio array optimization in static_buffer_base
        • Rename wstest source file
        • Use fopen_s on Windows
        • Fix Appveyor script
        • Update project metadata
        • Move benchmarks to bench/
        • Fix doc title
        • Build stand-alone doc
        • Update doc copyrights
        • Refactor test build scripts

        WebSocket:

        • Tidy up websocket javadocs
        • Refactor accept, handshake ops
        • Use read buffer instead of buffered stream

        API Changes

        • control frame callbacks are non-const references

        Actions Required:

        • Modify calls to set the control frame callback, to pass non-const reference instances, and manage the lifetime of the instance.

        Version 90:

        • Fix websocket read of zero length message
        • Fix typo in equal_range
        • Output to integrated documentation

        Version 89:

        • Fix CONTRIBUTING.md links

        Version 88:

        • Update doc links in README.md
        • Refactor tests Jamfile
        • Don't use program_options

        WebSocket:

        • Fix uninitialized frame done

        Version 87:

        • Update appveyor for Boost branch
        • Rename to BEAST_EXPECT
        • variant fixes and tests
        • Update README, add CONTRIBUTING.md and CODE_OF_CONDUCT.md

        Version 86:

        • Boost prep
        • Remove use of lexical_cast
        • Use custom variant
        • Update README.md
        • Add local-travis.sh
        • Use winapi
        • Update CMakeLists.txt for boost
        • Update documentation for boost
        • Update copyrights
        • Remove spurious declaration
        • Tidy up Jamfile
        • Normalize doc build scripts
        • Use configured doxygen and xsltproc
        • Fix Deferred Body Type Example Documentation
        • Add library metadata

        API Changes:

        • websocket read returns the number of bytes inserted

        Actions Required:

        • Change the signature of completion handlers used with websocket::stream::async_read to void(error_code, std::size_t)

        Version 85:

        • Fix test failure
        • Tidy up test warning

        Version 84:

        • Tidy up buffer_front
        • static_buffer::consume improvement
        • multi_buffer is type-check friendly
        • bind_handler allows placeholders
        • Add consuming_buffers::get

        WebSocket:

        • WebSocket read optimization

        API Changes:

        • websocket::stream::read_buffer_size is removed

        Actions Required:

        • Remove calls websocket::stream::read_buffer_size
        • Use read_some and write_some instead of read_frame and write_frame

        Version 83:

        • Add flat_static_buffer::mutable_data
        • Add buffer_front
        • Add wstest compression option
        • Turn some flat_static_buffer_tests on
        • Documentation work
        • read_some, async_read_some return bytes used
        • Fix private timer::clock_type

        WebSocket

        • Add wstest compression option
        • Fix buffer lifetime in websocket write

        API Changes:

        • Add static_buffer

        Actions Required:

        • Callers who depend on static_buffer returning sequences of exactly length one should switch to flat_static_buffer.

        Version 82:

        • Documentation tidying
        • is_invocable works with move-only types
        • Use std::function and reference wrapper
        • Add session_alloc to example/common
        • Silence spurious warning

        HTTP

        • Fix extraneous argument in async_write_header

        WebSocket

        • stream tidying
        • Add rdclose to websocket stream state
        • stream uses flat_buffer
        • accept requires a message
        • Add wstest benchmark tool

        API Changes:

        • Rename to flat_static_buffer and flat_static_buffer_base

        Actions Required:

        • Rename static_buffer to flat_static_buffer_base
        • Rename static_buffer_n to flat_static_buffer

        Version 81:

        • Pass string_view by value
        • better is_final on empty_base_optimization
        • Suppress incorrect GCC warning
        • multi_buffer ctor is explicit
        • File is not copy-constructible

        API Changes:

        • Refactor basic_parser, chunk parsing:

        Actions Required:

        • Adjust signatures for required members of user-defined subclasses of basic_parser

        • Use the new basic_parser chunk callbacks for accessing chunk extensions and chunk bodies.


        Version 80:

        • Javadoc tidying
        • Add basic_dynamic_body.hpp
        • Shrink buffer_prefix_view
        • Remove unused file_path
        • Add basic_file_body.hpp
        • buffers_ref is Assignable

        HTTP

        • Shrink chunk header buffer sequence size

        API Changes:

        • Refactor chunked-encoding serialization

        Actions Required:

        • Remove references to ChunkDecorators. Use the new chunk-encoding buffer sequences to manually produce a chunked payload body in the case where control over the chunk-extensions and/or trailers is required.

        Version 79:

        • Remove spurious fallthrough guidance

        Version 78:

        • Add span
        • Documentation work
        • Use make_unique_noinit
        • Fix warning in zlib
        • Header file tidying
        • Tidy up FieldsReader doc
        • Add Boost.Locale utf8 benchmark comparison
        • Tidy up dstream for existing Boost versions
        • Tidy up file_posix unused variable
        • Fix warning in root ca declaration

        HTTP:

        • Tidy up basic_string_body
        • Add vector_body
        • span, string, vector bodies are public
        • Fix spurious uninitialized warning
        • fields temp string uses allocator

        API Changes:

        • Add message::keep_alive()
        • Add message::chunked() and message::content_length()
        • Remove string_view_body

        Actions Required:

        • Change user defined implementations of Fields and FieldsReader to meet the new requirements.

        • Use span_body instead of string_view_body


        • Version 77:

          • file_posix works without large file support

          Version 76:

          • Always go through write_some
          • Use Boost.Config
          • BodyReader may construct from a non-const message
          • Add serializer::get
          • Add serializer::chunked
          • Serializer members are not const
          • serializing file_body is not const
          • Add file_body_win32
          • Fix parse illegal characters in obs-fold
          • Disable SSE4.2 optimizations

          API Changes:

          • Rename to serializer::keep_alive
          • BodyReader, BodyWriter use two-phase init

          Actions Required:

          • Use serializer::keep_alive instead of serializer::close and take the logical NOT of the return value.

          • Modify instances of user-defined BodyReader and BodyWriter types to perform two-phase initialization, as per the updated documented type requirements.


          Version 75:

          • Use file_body for valid requests, string_body otherwise.
          • Construct buffer_prefix_view in-place
          • Shrink serializer buffers using buffers_ref
          • Tidy up BEAST_NO_BIG_VARIANTS
          • Shrink serializer buffers using buffers_ref
          • Add serializer::limit
          • file_body tests
          • Using SSE4.2 intrinsics in basic_parser if available

          Version 74:

          • Add file_stdio and File concept
          • Add file_win32
          • Add file_body
          • Remove common/file_body.hpp
          • Add file_posix
          • Fix Beast include directories for cmake targets
          • remove redundant flush() from example

          Version 73:

          • Jamroot tweak
          • Verify certificates in SSL clients
          • Adjust benchmarks
          • Initialize local variable in basic_parser
          • Fixes for gcc-4.8

          HTTP:

          • basic_parser optimizations
          • Add basic_parser tests

          API Changes:

          • Refactor header and message constructors
          • serializer::next replaces serializer::get

          Actions Required:

          • Evaluate each message constructor call site and adjust the constructor argument list as needed.

          • Use serializer::next instead of serializer::get at call sites


          Version 72:

          HTTP:

          • Tidy up set payload in http-server-fast
          • Refine Body::size specification
          • Newly constructed responses have a 200 OK result
          • Refactor file_body for best practices
          • Add http-server-threaded example
          • Documentation tidying
          • Various improvements to http_server_fast.cpp

          WebSocket:

          • Add websocket-server-async example

          Version 71:

          • Fix extra ; warning
          • Documentation revision
          • Fix spurious on_chunk invocation
          • Call prepare_payload in HTTP example
          • Check trailers in test
          • Fix buffer overflow handling for string_body and mutable_body
          • Concept check in basic_dynamic_body
          • Tidy up http_sync_port error check
          • Tidy up Jamroot /permissive-

          WebSockets:

          • Fine tune websocket op asserts
          • Refactor websocket composed ops
          • Allow close, ping, and write to happen concurrently
          • Fix race in websocket read op
          • Fix websocket write op
          • Add cmake options for examples and tests

          API Changes:

          • Return std::size_t from Body::writer::put

          Actions Required:

          • Return the number of bytes actually transferred from the input buffers in user defined Body::writer::put functions.

          Version 70:

          • Serialize in one step when possible
          • Add basic_parser header and body limits
          • Add parser::on_header to set a callback
          • Fix BEAST_FALLTHROUGH
          • Fix HEAD response in file_service

          API Changes:

          • Rename to message::base
          • basic_parser default limits are now 1MB/8MB

          Actions Required:

          • Change calls to message::header_part() with message::base()

          • Call body_limit and/or header_limit as needed to adjust the limits to suitable values if the defaults are insufficient.


          Version 69:

          • basic_parser optimizations
          • Use BEAST_FALLTHROUGH to silence warnings
          • Add /permissive- to msvc toolchain

          Version 68:

          • Split common tests to a new project
          • Small speed up in fields comparisons
          • Adjust buffer size in fast server
          • Use string_ref in older Boost versions
          • Optimize field lookups
          • Add const_body, mutable_body to examples
          • Link statically on cmake MSVC

          API Changes:

          • Change BodyReader, BodyWriter requirements
          • Remove BodyReader::is_deferred
          • http::error::bad_target replaces bad_path

          Actions Required:

          • Change user defined instances of BodyReader and BodyWriter to meet the new requirements.

          • Replace references to http::error::bad_path with http::error::bad_target


          Version 67:

          • Fix doc example link
          • Add http-server-small example
          • Merge stream_base to stream and tidy
          • Use boost::string_view
          • Rename to http-server-fast
          • Appveyor use Boost 1.64.0
          • Group common example headers

          API Changes:

          • control_callback replaces ping_callback

          Actions Required:

          • Change calls to websocket::stream::ping_callback to use websocket::stream::control_callback

          • Change user defined ping callbacks to have the new signature and adjust the callback definition appropriately.


          Version 66:

          • string_param optimizations
          • Add serializer request/response aliases
          • Make consuming_buffers smaller
          • Fix costly potential value-init in parser
          • Fix unused parameter warning
          • Handle bad_alloc in parser
          • Tidy up message piecewise ctors
          • Add header aliases
          • basic_fields optimizations
          • Add http-server example
          • Squelch spurious warning on gcc

          Version 65:

          • Enable narrowing warning on msvc cmake
          • Fix integer types in deflate_stream::bi_reverse
          • Fix narrowing in static_ostream
          • Fix narrowing in ostream
          • Fix narrowing in inflate_stream
          • Fix narrowing in deflate_stream
          • Fix integer warnings
          • Enable unused variable warning on msvc cmake

          Version 64:

          • Simplify buffered_read_stream composed op
          • Simplify ssl teardown composed op
          • Simplify websocket write_op
          • Exemplars are compiled code
          • Better User-Agent in examples
          • async_write requires a non-const message
          • Doc tidying
          • Add link_directories to cmake

          API Changes:

          • Remove make_serializer

          Actions Required:

          • Replace calls to make_serializer with variable declarations

          Version 63:

          • Use std::to_string instead of lexical_cast
          • Don't use cached Boost
          • Put num_jobs back up on Travis
          • Only build and run tests in variant=coverage
          • Move benchmarks to a separate project
          • Only run the tests under ubasan
          • Tidy up CMakeLists.txt
          • Tidy up Jamfiles
          • Control running with valgrind explicitly

          Version 62:

          • Remove libssl-dev from a Travis matrix item
          • Increase detail::static_ostream coverage
          • Add server-framework tests
          • Doc fixes and tidy
          • Tidy up namespaces in examples
          • Clear the error faster
          • Avoid explicit operator bool for error
          • Add http::is_fields trait
          • Squelch harmless not_connected errors
          • Put slow tests back for coverage builds

          API Changes:

          • parser requires basic_fields
          • Refine FieldsReader concept
          • message::prepare_payload replaces message::prepare

          Actions Required:

          • Callers using parser with Fields types other than basic_fields will need to create their own subclass of basic_parser to work with their custom fields type.

          • Implement chunked() and keep_alive() for user defined FieldsReader types.

          • Change calls to msg.prepare to msg.prepare_payload. For messages with a user-defined Fields, provide the function prepare_payload_impl in the fields type according to the Fields requirements.


          Version 61:

          • Remove Spirit dependency
          • Use generic_cateogry for errno
          • Reorganize SSL examples
          • Tidy up some integer conversion warnings
          • Add message::header_part()
          • Tidy up names in error categories
          • Flush the output stream in the example
          • Clean close in Secure WebSocket client
          • Add server-framework SSL HTTP and WebSocket ports
          • Fix shadowing warnings
          • Tidy up http-crawl example
          • Add multi_port to server-framework
          • Tidy up resolver calls
          • Use one job on CI
          • Don't run slow tests on certain targets

          API Changes:

          • header::version is unsigned
          • status-codes is unsigned

          Version 60:

          • String comparisons are public interfaces
          • Fix response message type in async websocket accept
          • New server-framework, full featured server example

          Version 59:

          • Integrated Beast INTERFACE (cmake)
          • Fix base64 alphabet
          • Remove obsolete doc/README.md

          API Changes:

          • Change Body::size signature (API Change):

          Actions Required:

          • For any user-defined models of Body, change the function signature to accept value_type const& and modify the function definition accordingly.

          Version 58:

          • Fix unaligned reads in utf8-checker
          • Qualify size_t in message template
          • Reorganize examples
          • Specification for http read
          • Avoid std::string in websocket
          • Fix basic_fields insert ordering
          • basic_fields::set optimization
          • basic_parser::put doc
          • Use static string in basic_fields::reader
          • Remove redundant code
          • Fix parsing chunk size with leading zeroes
          • Better message formal parameter names

          API Changes:

          • basic_fields::set renamed from basic_fields::replace

          Actions Required:

          • Rename calls to basic_fields::replace to basic_fields::set

          Version 57:

          • Fix message.hpp javadocs
          • Fix warning in basic_parser.cpp
          • Integrate docca for documentation and tidy

          Version 56:

          • Add provisional IANA header field names
          • Add string_view_body
          • Call on_chunk when the extension is empty
          • HTTP/1.1 is the default version
          • Try harder to find Boost (cmake)
          • Reset error codes
          • More basic_parser tests
          • Add an INTERFACE cmake target
          • Convert buffer in range loops

          Version 55:

          • Don't allocate memory to handle obs-fold
          • Avoid a parser allocation using non-flat buffer
          • read_size replaces read_size_helper

          Version 54:

          • static_buffer coverage
          • flat_buffer coverage
          • multi_buffer coverage
          • consuming_buffers members and coverage
          • basic_fields members and coverage
          • Add string_param
          • Retain ownership when reading using a message
          • Fix incorrect use of [[fallthrough]]

          API Changes:

          • basic_fields refactor

          Version 53:

          • Fix basic_parser::maybe_flatten
          • Fix read_size_helper usage

          Version 52:

          • flat_buffer is an AllocatorAwareContainer
          • Add drain_buffer class

          API Changes:

          • auto_fragment is a member of stream
          • binary, text are members of stream
          • read_buffer_size is a member of stream
          • read_message_max is a member of stream
          • write_buffer_size is a member of stream
          • ping_callback is a member of stream
          • Remove opcode from read, async_read
          • read_frame returns bool fin
          • opcode is private
          • finish(error_code&) is a BodyReader requirement

          Actions Required:

          • Change call sites which use auto_fragment with set_option to call stream::auto_fragment instead.

          • Change call sites which use message_type with set_option to call stream::binary or stream::text instead.

          • Change call sites which use read_buffer_size with set_option to call stream::read_buffer_size instead.

          • Change call sites which use read_message_max with set_option to call stream::read_message_max instead.

          • Change call sites which use write_buffer_size with set_option to call stream::write_buffer_size instead.

          • Change call sites which use ping_callback1 withset_optionto callstream::ping_callback` instead.

          • Remove the opcode reference parameter from calls to synchronous and asynchronous read functions, replace the logic with calls to stream::got_binary and stream::got_text instead.

          • Remove the frame_info parameter from all read frame call sites

          • Check the return value 'fin' for calls to read_frame

          • Change ReadHandlers passed to async_read_frame to have the signature void(error_code, bool fin), use the bool to indicate if the frame is the last frame.

          • Remove all occurrences of the opcode enum at call sites


          Version 51

          • Fix operator<< for header
          • Tidy up file_body
          • Fix file_body::get() not setting the more flag correctly
          • Use BOOST_FALLTHROUGH
          • Use BOOST_STRINGIZE
          • DynamicBuffer benchmarks
          • Add construct, destroy to handler_alloc
          • Fix infinite loop in basic_parser

          API Changes:

          • Tune up static_buffer
          • multi_buffer implementation change

          Actions Required:

          • Call sites passing a number to multi_buffer's constructor will need to be adjusted, see the corresponding commit message.

          Version 50

          • parser is constructible from other body types
          • Add field enumeration
          • Use allocator more in basic_fields
          • Fix basic_fields allocator awareness
          • Use field in basic_fields and call sites
          • Use field in basic_parser
          • Tidy up basic_fields, header, and field concepts
          • Fields concept work
          • Body documentation work
          • Add missing handler_alloc nested types
          • Fix chunk delimiter parsing
          • Fix test::pipe read_size
          • Fix chunk header parsing

          API Changes:

          • Remove header_parser
          • Add verb to on_request for parsers
          • Refactor prepare
          • Protect basic_fields special members
          • Remove message connection settings
          • Remove message free functions
          • Remove obsolete serializer allocator
          • http read_some, async_read_some don't return bytes

          Version 49

          • Use instead of

            HTTP:

            • Add HEAD request example

            API Changes:

            • Refactor method and verb
            • Canonicalize string_view parameter types
            • Tidy up empty_body writer error
            • Refactor header status, reason, and target

            Version 48

            • Make buffer_prefix_view public
            • Remove detail::sync_ostream
            • Tidy up core type traits

            API Changes:

            • Tidy up chunk decorator
            • Rename to buffer_cat_view
            • Consolidate parsers to parser.hpp
            • Rename to parser

            Version 47

            • Disable operator<< for buffer_body
            • buffer_size overload for basic_multi_buffer::const_buffers_type
            • Fix undefined behavior in pausation
            • Fix leak in basic_flat_buffer

            API Changes:

            • Refactor treatment of request-method
            • Refactor treatment of status code and obsolete reason
            • Refactor HTTP serialization and parsing

            Version 46

            • Add test::pipe
            • Documentation work

            API Changes:

            • Remove HTTP header aliases
            • Refactor HTTP serialization
            • Refactor type traits

            Version 45

            • Workaround for boost::asio::basic_streambuf type check
            • Fix message doc image
            • Better test::enable_yield_to
            • Fix header::reason
            • Documentation work
            • buffer_view skips empty buffer sequences
            • Disable reverse_iterator buffer_view test

            Version 44

            • Use BOOST_THROW_EXCEPTION
            • Tidy up read_size_helper and dynamic buffers
            • Require Boost 1.58.0 or later
            • Tidy up and make get_lowest_layer public
            • Use BOOST_STATIC_ASSERT
            • Fix async return values in docs
            • Fix README websocket example
            • Add buffers_adapter regression test
            • Tidy up is_dynamic_buffer traits test
            • Make buffers_adapter meet requirements

            Version 43

            • Require Boost 1.64.0
            • Fix strict aliasing warnings in buffers_view
            • Tidy up buffer_prefix overloads and test
            • Add write limit to test::string_ostream
            • Additional constructors for consuming_buffers

            Version 42

            • Fix javadoc typo
            • Add formal review notes
            • Make buffers_view a public interface

            Version 41

            • Trim Appveyor matrix rows
            • Concept revision and documentation
            • Remove coveralls integration
            • Tidy up formal parameter names

            WebSocket

            • Tidy up websocket::close_code enum and constructors

            API Changes

            • Return http::error::end_of_stream on HTTP read eof
            • Remove placeholders
            • Rename prepare_buffer(s) to buffer_prefix
            • Remove handler helpers, tidy up hook invocations

            Version 40

            • Add to_static_string
            • Consolidate get_lowest_layer in type_traits.hpp
            • Fix basic_streambuf movable trait
            • Tidy up .travis.yml

            Version 39

            Beast versions are now identified by a single integer which is incremented on each merge. The macro BEAST_VERSION identifies the version number, currently at 39. A version setting commit will always be at the tip of the master and develop branches.

            • Use beast::string_view alias
            • Fixed braced-init error with older gcc

            HTTP

            • Tidy up basic_parser javadocs

            WebSocket:

            • Add websocket async echo ssl server test:
            • Fix eof error on ssl::stream shutdown

            API Changes:

            • Refactor http::header contents
            • New ostream() returns dynamic buffer output stream
            • New buffers() replaces to_string()
            • Rename to multi_buffer, basic_multi_buffer
            • Rename to flat_buffer, basic_flat_buffer
            • Rename to static_buffer, static_buffer_n
            • Rename to buffered_read_stream
            • Harmonize concepts and identifiers with net-ts
            • Tidy up HTTP reason_string

            1.0.0-b38

            • Refactor static_string
            • Refactor base64
            • Use static_string for WebSocket handshakes
            • Simplify get_lowest_layer test
            • Add test_allocator to extras/test
            • More flat_streambuf tests
            • WebSocket doc work
            • Prevent basic_fields operator[] assignment

            API Changes:

            • Refactor WebSocket error codes
            • Remove websocket::keep_alive option

            1.0.0-b37

            • CMake hide command lines in .vcxproj Output windows"
            • Rename to detail::is_invocable
            • Rename project to http-bench
            • Fix flat_streambuf
            • Add ub sanitizer blacklist
            • Add -funsigned-char to asan build target
            • Fix narrowing warning in table constants

            WebSocket:

            • Add is_upgrade() free function
            • Document websocket::stream thread safety
            • Rename to websocket::detail::pausation

            API Changes:

            • Provide websocket::stream accept() overloads
            • Refactor websocket decorators
            • Move everything in basic_fields.hpp to fields.hpp
            • Rename to http::dynamic_body, consolidate header

            1.0.0-b36

            • Update README.md

            1.0.0-b35

            • Add Appveyor build scripts and badge
            • Tidy up MSVC CMake configuration
            • Make close_code a proper enum
            • Add flat_streambuf
            • Rename to BEAST_DOXYGEN
            • Update .gitignore for VS2017
            • Fix README.md CMake instructions

            API Changes:

            • New HTTP interfaces
            • Remove http::empty_body

            1.0.0-b34

            • Fix and tidy up CMake build scripts

            1.0.0-b33

            • Require Visual Studio 2015 Update 3 or later

            HTTP

            • Use fwrite return value in file_body

            WebSocket

            • Set internal state correctly when writing frames
            • Add decorator unit test
            • Add write_frames unit test

            1.0.0-b32

            • Add io_service completion invariants test
            • Update CMake scripts for finding packages

            API Changes:

            • Remove http Writer suspend and resume feature

            1.0.0-b31

            • Tidy up build settings
            • Add missing dynabuf_readstream member

            WebSocket

            • Move the handler, don't copy it

            1.0.0-b30

            WebSocket

            • Fix race in pings during reads
            • Fix race in close frames during reads
            • Fix race when write suspends
            • Allow concurrent websocket async ping and writes

            1.0.0-b29

            • Fix compilation error in non-template class
            • Document type-pun in buffer_cat
            • Correctly check ostream modifier (/extras)

            HTTP

            • Fix Body requirements doc
            • Fix illegal HTTP characters accepted as hex zero
            • Fix Writer return value documentation

            WebSocket

            • Fix race in writes during reads
            • Fix doc link typo

            1.0.0-b28

            • Split out and rename test stream classes
            • Restyle async result constructions
            • Fix HTTP split parse edge case

            1.0.0-b27

            • Tidy up tests and docs
            • Add documentation building instructions

            API Changes:

            • Invoke callback on pings and pongs
            • Move basic_streambuf to streambuf.hpp

            1.0.0-b26

            • Tidy up warnings and tests

            1.0.0-b25

            • Fixes for WebSocket echo server
            • Fix 32-bit arm7 warnings
            • Remove unnecessary include
            • WebSocket server examples and test tidying
            • Fix deflate setup bug

            API Changes:

            • Better handler_ptr

            1.0.0-b24

            • bjam use clang on MACOSX
            • Simplify Travis package install specification
            • Add optional yield_to arguments
            • Make decorator copyable
            • Add WebSocket permessage-deflate extension support

            1.0.0-b23

            • Tune websocket echo server for performance
            • Add file and line number to thrown exceptions
            • Better logging in async echo server
            • Add copy special members
            • Fix message constructor and special members
            • Travis CI improvements

            1.0.0-b22

            • Fix broken Intellisense
            • Implement the Asio deallocation-before-invocation guarantee
            • Add handler helpers
            • Avoid copies in handler_alloc
            • Update README.md example programs
            • Fix websocket stream read documentation
            • Disable Boost.Coroutine deprecation warning
            • Update documentation examples

            1.0.0-b21

            • Remove extraneous includes

            1.0.0-b20

            ZLib

            • Add ZLib module

            API Changes:

            • Rename HTTP identifiers

            1.0.0-b19

            • Boost library min/max guidance
            • Improvements to code coverage
            • Use boost::lexical_cast instead of std::to_string
            • Fix prepare_buffers value_type
            • Fix consuming_buffers value_type
            • Better buffer_cat

            HTTP

            • Make chunk_encode public
            • Add write, async_write, operator<< for message_headers
            • Add read, async_read for message_headers
            • Fix with_body example

            WebSocket

            • Optimize utf8 validation
            • Optimize mask operations

            API Changes:

            • Refactor message and message_headers declarations
            • prepared_buffers is private
            • consume_buffers is removed

            1.0.0-b18

            • Increase optimization settings for MSVC builds

            HTTP

            • Check invariants in parse_op:
            • Clean up message docs

            WebSocket

            • Write buffer option does not change capacity
            • Close connection during async_read on close frame
            • Add pong, async pong to stream

            Core

            • Meet DynamicBuffer requirements for static_streambuf
            • Fix write_frame masking and auto-fragment handling

            Extras

            • unit_test::suite fixes:
              • New overload of fail() specifies file and line
              • BEAST_EXPECTS only evaluates the reason string on a failure
            • Add zlib module

            1.0.0-b17

            • Change implicit to default value in example
            • Tidy up some declarations
            • Fix basic_streambuf::capacity
            • Add basic_streambuf::alloc_size
            • Parser callbacks may not throw
            • Fix Reader concept doc typo
            • Add is_Reader trait
            • Tidy up basic_headers for documentation
            • Tidy up documentation
            • Add basic_parser_v1::reset
            • Fix handling of body_what::pause in basic_parser_v1
            • Add headers_parser
            • Engaged invokable is destructible
            • Improve websocket example in README.md
            • Refactor read_size_helper

            API Changes:

            • Added init() to Reader requirements
            • Reader must be nothrow constructible
            • Reader is now constructed right before reading the body
              • The message passed on construction is filled in
            • Rework HTTP concepts:
              • Writer uses write instead of operator()
              • Refactor traits to use void_t
              • Remove is_ReadableBody, is_WritableBody
              • Add has_reader, has_writer, is_Reader, is_Writer
              • More friendly compile errors on failed concept checks
            • basic_parser_v1 requires all callbacks present
            • on_headers parser callback now returns void
            • on_body_what is a new required parser callback returning body_what

            1.0.0-b16

            • Make value optional in param-list
            • Frame processing routines are member functions
            • Fix on_headers called twice from basic_parser_v1
            • Constrain parser_v1 constructor
            • Improve first line serialization
            • Add pause option to on_headers interface
            • Refactor base_parser_v1 callback traits:
            • Refine Parser concept
            • Relax ForwardIterator requirements in FieldSequence
            • Fix websocket failure testing
            • Refine Writer concept and fix exemplar in documentation

            API Changes:

            • Rename mask_buffer_size to write_buffer_size
            • Make auto_fragment a boolean option

            The message class hierarchy is refactored (breaking change):

            • One message class now models both HTTP/1 and HTTP/2 messages
            • message_v1, request_v1, response_v1 removed
            • New classes basic_request and basic_response model messages without the body.

              Error resolution: Callers should use message, request, and response instead of message_v1, request_v1, and response_v1 respectively.


            1.0.0-b15

            • rfc7230 section 3.3.2 compliance
            • Add HTTPS example
            • Add Secure WebSocket example
            • Fix message_v1 constructor
            • Tidy up DynamicBuffer requirements
            • Tidy up error types and headers
            • Fix handling empty HTTP headers in parser_v1

            1.0.0-b14

            • Add missing rebind to handler_alloc
            • Fix error handling in http server examples
            • Fix CMake scripts for MinGW
            • Use BOOST_ASSERT
            • Better WebSocket decorator
            • Update and tidy documentation

            1.0.0-b13

            • dstream improvements
            • Remove bin and bin64 directories
            • Tidy up .vcxproj file groupings

            1.0.0-b12

            • Use -p to print suites from unit test main.
            • BEAST_EXPECTS to add a reason string to test failures
            • Fix unit test runner to output all case names
            • Update README for build requirements
            • Rename to CHANGELOG.md

            1.0.0-b11

            • Set URI in generated WebSocket Upgrade requests
            • Rename echo server class and file names
            • Rename to DynamicBuffer in some code and documentation
            • Fix integer warnings in Windows builds
            • Add 32 and 64 bit Windows build support
            • Update README for build instructions and more
            • Add repository and documentation banners

            1.0.0-b10

            • Fix compilation warnings
            • Add websocketpp comparison to HTML documentation

            1.0.0-b9

            • Fix CMakeLists.txt

            1.0.0-b8

            • Fix include in example code
            • Fix basic_headers rfc2616 Section 4.2 compliance

            1.0.0-b7

            • Fix prepare by calling init. prepare() can throw depending on the implementation of Writer. Publicly provided beast::http writers never throw.
            • Fixes to example HTTP server
            • Fully qualify ambiguous calls to read and parse
            • Remove deprecated http::stream wrapper
            • Example HTTP server now calculates the MIME-type
            • Fixes and documentation for teardown and use with SSL:
            • Add example code to rfc7230 javadocs
            • Remove extraneous header file
            • Add skip_body parser option

            • 1.0.0-b6

              • Use SFINAE on return values
              • Use beast::error_code instead of nested types
              • Tidy up use of GENERATING_DOCS
              • Remove obsolete RFC2616 functions
              • Add message swap members and free functions
              • Add HTTP field value parser containers: ext_list, param_list, token_list
              • Fixes for some corner cases in basic_parser_v1
              • Configurable limits on headers and body sizes in basic_parser_v1

              API Changes: