1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237
|
[/
Copyright (c) 2016-2019 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.88]
[*Fixes]
* [issue 2962] Fixed out-of-bounds access in `iequals` function
[*Improvements]
* [issue 2974] Updated SSL examples to verify peer certificate hostname
* [issue 2954] Refactored CMakeLists
* [issue 2955] Removed Boost.Scope dependency from examples
* [issue 2716] WebSockets: Peer pings are counted as activity for `idle_timeout`
[*Documentation]
* [issue 2918] Added new examples for Unix domain sockets
* [issue 2910] Added SSL/TLS Certificate section to documentation
* [issue 2730] Improved documentation of `websocket::stream::async_close`
[heading Boost 1.87]
[*API Changes]
* [issue 2920] Added `error_code` overload for `basic_fields::insert()`
* [issue 2911] Added overload for `websocket::stream::get_status` to query permessage-deflate status
[*Fixes]
* [issue 2926] Fixed use-after-move in calls to `net::dispatch` within `http::basic_stream`, which caused `bad_executor` exceptions on timeouts
* [issue 2915] Removed mutating operations in initiating functions
* [issue 2915] Fixed cancellation handling in `teardown_tcp_op`
* [issue 2920] Set `state_` in `basic_parser` before calling `on_finish_impl`
* [issue 2939] Removed static specifier from `clamp` functions
* [issue 2903] Addressed `-Wattributes` warnings in tests
* [issue 2944] Addressed unreachable code warning in tests
[*Improvements]
* [issue 2940] Added forward declaration headers for types in `beast::http` namespace
* [issue 2920] Enabled `http::parser` to use `basic_fields::insert()` with `error_code` overload
* [issue 2920] Applied `header_limit_` in `http::basic_parser` to trailer headers
* [issue 2920] Improved `http::basic_parser` to return `http::error::header_limit` earlier
* [issue 2905] Added support for modular boost build structure
[heading Boost 1.86]
[*API Changes]
* [issue 2878] Added HTTP status code 418 `I'm a teapot`
[*Fixes]
* [issue 2879] Narrowing conversion in `read_size_hint_db()`
* [issue 2893] Overloads that are ambiguous when using default completion tokens
* [issue 2517] Misplaced static_assert in `http::basic_fields` move-assignment operator
* [issue 2880] Underflow of `bytes_transferred` in WebSocket partial write operations
* [issue 2879] `websocket::stream::read_size_hint()` does not exceed `read_message_max`
* [issue 2877] Various warnings in tests
* [issue 2872] Error handling in SSL shutdown operations in examples
* [issue 2869] Annotate fallthrough case in zlib
* [issue 2866] Handling of expired timers in `basic_stream::ops::transfer_op`
* [issue 2864] Ambiguity in `test::basic_stream` constructor overloads
* [issue 2861] Partial parsing of the final chunk in `http::parser`
[*Improvements]
* [issue 2897] Graceful shutdown in `server_flex_awaitable` example
* [issue 2897] Simplified awaitable examples
* [issue 2888] Added fuzzing targets
* [issue 2875] Removed superfluous uses of `std::bind` in some examples
* [issue 2875] `ssl_stream` does not use `flat_stream`
[*Documentation]
* [issue 2875] `ssl_stream` and `flat_stream` marked as deprecated
* [issue 2875] `net::ssl::stream` is canonical in snippets and examples
* [issue 2872] Added `SSL/TLS Shutdown Procedure` section
[heading Boost 1.85]
[*API Changes]
* [issue 2811] The status code list has been updated to conform with the IANA registry
[*Fixes]
* [issue 2803] Unreachable code warning in `buffers_cat.hpp`
* [issue 2778] Connection error handling in `websocker_server_awaitable` example
* [issue 2739] Concurrent calls to `async_write` in advanced server examples
* [issue 2810] zlib name conflicts with minizip
* [issue 2818] host string should be updated after `SSL_set_tlsext_host_name()`
[*Improvements]
* [issue 2782] `asio::associator` is specialized for `bind_wrapper` and `bind_front_wrapper`
* [issue 2646] Add non-allocating overload for error category message function
[*Documentation]
* [issue 2789] Specifies when calling `http::message::prepare_payload()` is optional
* [issue 2799] Operations affected by `basic_stream::expires_after()`
* [issue 2808] `teardown()` and `async_teardown()` are customization points
* [issue 2814] Moving or copying `http::serializer` after first usage is undefined behaviour
* [issue 2817] `websocket::permessage_deflate` should be configured before performing the WebSocket handshake
* [issue 2816] `bytes_transferred` in http reads operations reports the number of bytes consumed by the HTTP parser
[heading Boost 1.84]
[*API Changes]
* Remove deprecated allocation and invocation hooks
[*Features]
* Support for `immediate_executor`
[*Fixes]
* [issue 2766] Use the explicit type std::size_t when completing transfer_op
* [issue 2727] Replaced `BOOST_ASIO_INITFN_RESULT_TYPE` with `BOOST_ASIO_INITFN_AUTO_RES`
* [issue 2715] `server-flex-awaitable` example resets parser
[*Documentation]
* [issue 2713] Corrected the `websocket::stream::async_ping/pong` handler requirement
* [issue 2755] Update documentation for `websocket::stream::async_write_some`
[heading Boost 1.83]
[*Fixes]
* [issue 2680] aligned_storage unused for C+23
* [issue 2653] MSVC literal `not` error
* [issue 2661] ssl_stream ambiguity error on clang
* [issue 2649] Jamefile uses openssl.jam
[heading Boost 1.82]
[*Features]
* [issue 2475] Add `error_code`s use source_location
[*Fixes]
* [issue 2602] tcp_stream uses the correct executor of the timer.
* [issue 2638] `std::placeholders` ambiguity fix.
[*Improvements]
* error_categories use numeric ids
* `file_body` support seek
[heading Boost 1.81]
[*Features]
* Add `buffers_generator`
* Add [link beast.ref.boost__beast__http__message_generator `http::message_generator`]
* Add [link beast.ref.boost__beast__buffer_ref `buffer_ref`]
* Support for per-operation cancellation
[*Fixes]
* [issue 2439] Fix CVE-2018-25032 in zlib streams
* [issue 264] Websocket support continue in upgrade
* [issue 471] Unquote takes s by reference
[*Improvements]
* [issue 2104] C++20 awaitable examples.
* [issue 226], [issue 227] per-message compression options
* [issue 2449] websocket timeout option api
* [issue 2468] multiple content length error
[*Miscellaneous]
* Use `span` from Boost.Core
* Use `static_string` from Boost.StaticString
* `serializer::is_done` is `const`
* Support for default-completion and rebind
* [issue 2469] s390x architecture support
[*Documentation]
* [issue 891] Feature table for buffers
* [issue 516] Case-insensitivity for fields is stated
* [issue 298] api version is documented
[heading Boost 1.80]
[*Miscellaneous]
* [issue 2363] Remove `BOOST_BEAST_USE_STD_STRING_VIEW`
* [issue 2417] use boost::core::string_view. This improves inter-conversion between string_view implementations. Some observable differences for users:
* `core::string_view` no longer supports the `.to_string()` or `.clear()` extensions from Utility
* code that relied on `.max_size()` returning `.size(),` needs to be fixed to use `.size()` instead
* `remove_suffix()` and `remove_prefix()` were more lenient than the standard specs; be sure you don't rely on it clamping the argument to valid range
* `BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS` no longer suppresses conversions to `std::string`
[heading Boost 1.79]
[*Fixes]
* [issue 2391] Add missing include for file_body test.
* [issue 2364] Fix WebSocket handshake response on failure.
* [issue 2280] (related) Fix open append mode for file_posix.
* [issue 2280] Fix open append mode for file_win32.
* [issue 2280] Fix file open with append/append_existing flag on Windows
* [issue 2354] Fix clang-cl UTF8 path handling for `file_win32`.
* [issue 2354] Fix clang-cl UTF8 path handling for `file_stdio`.
[*Miscellaneous]
* [issue 2375] Add ARM64 builds to drone CI
* [issue 2217] Fix async_base documentation link
* [issue 2280] Add tests for file open in append/append_existing mode
* [issue 2351] Update CI to include gcc 11, clang 12, msvc 14.3
* [issue 2350] Add individual tests to CMake workflow
[heading Boost 1.78]
[*Fixes]
* Fix CVE-2016-9840 in zlib implementation.
* Fix TLS SNI handling in websocket_client_async_ssl example.
* [issue 2313] Fix reuse of sliding window in WebSocket permessage_deflate.
* Fix accept error handling in http_server_async example.
[*Miscellaneous]
* Remove test framework's dependency on RTTI.
* Move library-specific docca configuration to Beast.
* Remove dependency on RTTI in `test::stream`.
* Fix missing includes in test headers.
[heading Boost 1.77]
[*Fixes]
* [issue 2233] Remove use of POSIX-only constant.
[*Miscellaneous]
* Fixes to tests.
* Improvements and fixes in Github and Drone CI.
* Accommodate Docca updates.
* Update example root certificates.
* Add example of reading large response body.
* Remove Travis CI.
* Update CMakeLists.txt
[heading Boost 1.76]
[*Fixes]
* [issue 2139] Add executor rebind to test::stream.
* Fix unused variable compiler warning in WebSocket async shutdown.
[*Improvements]
* [issue 2124] Floating point support no longer required to use Beast.
* Reduce size of websockety compiled code by using a common buffers type for all operations.
* HTTP Parser has improved detection of incorrect use.
[*Miscellaneous]
* [issue 2140] Add cxxstd tag to library metadata.
* Move to Drone CI.
* Minor documentation formatting improvements.
* CML now finds required Boost::thread library during in-tree build.
[heading Boost 1.75]
[*Fixes]
* Eliminate spurious unused parameter warning in `detect_ssl`.
* Update Websocket examples to set the SNI for TLS connections.
* [issue 2023] websocket async_shutdown will now shutdown the underlying TLS transport.
* [issue 2011] File open with append_existing flag now works correctly in posix environments.
* [issue 2039] Windows builds now link to bcrypt as required by the filesystem library.
* [issue 2063] Logic error fixed in `advanced_server_flex` example.
* [issue 1582] Fix unreachable code error on MSVC.
* [issue 2070] Fix http body behaviour when body_limit it none.
* [issue 2065] Fix behaviour of `basic_stream` when a zero-length write is requested.
* [issue 2080] Add enums representing Sec-* HTTP headers.
* [issue 2085] Fix `nullptr` implicit cast on `fields::set()`.
* [issue 2029] Fix C++20 tests for `basic_stream`.
[*Miscellaneous]
* Add handler tracking to asynchronous operations:
* Define the preprocessor macro `BOOST_ASIO_ENABLE_HANDLER_TRACKING` to enable Asio handler
tracking in Boost.Beast asynchronous operations. Please see
[@boost:/doc/html/boost_asio/overview/core/handler_tracking.html asio handler tracking]
for details.
* Add Bishop-Fox 2020 Security Assessment.
[heading Boost 1.74]
[*API Changes]
* The API to Asio has undergone changes. Please refer to the Asio release notes for details.
* Beast has been updated to track and respect developer choices in the use of Asio. In particular:
* Define `BOOST_ASIO_NO_DEPRECATED` to disallow deprecated invocation hooks.
* Define `BOOST_ASIO_NO_TS_EXECUTORS` to ensure that executors conform to the
[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0443r11.html Standard Executors] proposal.
* Define `BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT` to select
[@https://cplusplus.github.io/networking-ts/draft.pdf Networking TS] style executors by default.
If this macro is not defined, Asio default executors will be the
[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0443r11.html Standard Executors] implementation.
* [issue 1897] Parser `body_limit` is optional (API Change)
['Actions Required]
* The signature of `basic_parser<>::body_limit(n)` has changed. It now accepts an
optional `std::uint64_t`. The caller may indicate that no body limit is required
by calling `body_limit(boost::none)`. The default limits remain in place in order
to maintain 'safe by default' behaviour.
* [issue 1934] Remove deprecated interfaces (API Change)
['Actions Required]
* The macro `BOOST_BEAST_NO_DEPRECATED` will no longer be noticed by Beast. The only way to
enable deprecated functionality is now the macro `BOOST_BEAST_ALLOW_DEPRECATED` which is
undefined by default. That is, all deprecated behaviour is disabled by default.
* The following deprecated functions have been removed:
* `websocket::async_accept_ex`
* `websocket::async_handshake_ex`
* `websocket::accept_ex`
* `websocket::handshake_ex`
Programs still using these names should be refactored to use the `decorator` feature and
the remaining handshake and accept functions.
* `websocket::role_type` has been removed. Users should use `beast::role_type` instead.
* `handler_ptr` has been removed. Users should use `net::bind_handler` and/or
`bind_front_handler` instead.
* Code that depends on `mutable_data_type` should be refactored to use
`mutable_buffers_type`. Classes affected are:
* `buffers_adaptor`
* `flat_buffer`
* `flat_static_buffer`
* `multi_buffer`
* `static_buffer`
* The `reset` function has been removed from `flat_static_buffer`. Use the
`clear` function instead.
* The `core/type_traits.hpp` public header has been removed and along with it
the type trait `is_completion_handler`. Beast uses the CompletionHandler correctness
checks provided by Asio. In a c++20 environment, these convert to concept checks.
* The error code enum `invalid_code_lenths` (sic) was a synonym of `invalid_code_lengths`.
Affected programs should be modified to use `invalid_code_lengths`.
* The file `core/buffers_adapter.hpp` has been removed along with the deprecated
alias typename `buffers_adapter`. Affected programs should use
` core/buffers_adapator.hpp` and the type `buffers_adaptor`.
* [issue 1956] Deprecate `string_param` (API Change)
['Actions Required]
`string_param`, which was previously the argument type when setting field values
has been replaced by `string_view`. Because of this, it is no longer possible to
set message field values directly as integrals.
Users are requied to convert numeric arguments to a string type prior to calling
`fields::set` et. al.
Beast provides the non-allocating `to_static_string()` function for this purpose.
To set Content-Length field manually, call `message::content_length`.
[*Fixes]
* [issue 1913] Fix standalone compilation error with `std::string_view`
* [issue 1925] [issue 1916] Fix compile errors on Visual Studio with /std:c++latest
* [issue 1924] Fix c++20 deprecation warning in `span_body`
* [issue 1920] Fix use `buffered_read_stream` with `use_awaitable`
* [issue 1918] Fix `async_detect_ssl` with `use_awaitable`
* [issue 1944] Fix `FILE` namespace qualification
* [issue 1942] Fix http read `bytes_transferred`
* [issue 1943] Fix `basic_stream` `expires_after`
* [issue 1980] Fix `max` compile error
* [issue 1949] `iless` and `iequal` take part in Heterogeneous Lookup
[*Miscellaneous]
* [issue 1907] OpenSSL 1.0.2 or later is required when using SSL/TLS streams.
This is a requirement inherited from Boost.Asio.
* Additional tests have been added to ensure correct integration with C++20
coroutines when avaialable.
[heading Boost 1.73]
[*API Changes]
* Nested `mutable_data_type` in Beast dynamic buffers is deprecated. Affected types:
* `buffers_adaptor`
* `flat_buffer`
* `flat_static_buffer`
* `multi_buffer`
* `static_buffer`
[*Changes Required]
* Use nested `mutable_buffers_type` instead of `mutable_data_type`,
or define `BOOST_BEAST_ALLOW_DEPRECATED`
[*Miscellaneous]
* Update root certificates in examples
[*Fixes]
* [issue 1880] Fix Content-Length parsing
* [issue 1852] Fix examples to dispatch to strand
* [issue 1875] Ensure `basic_stream::close` will not throw
* [issue 1863] Field digest is endian-independent
* [issue 1853] Fix ostream flush
* [issue 1831] `flat_buffer::shrink_to_fit` is `noexcept`
* [issue 1828] Fix erase field
* [issue 1822] Examples use strands correctly
* [issue 1818] `file_body` returns `short_read` on eof during read
* [issue 1786] Fix bug in win32 `file_body`
* [issue 1260] Add accessor function to File member of `basic_file_body`
* [issue 793] `file_win32` supports UTF-8 paths
* [issue 793] `file_stdio` supports unicode paths
* [issue 1786] `file_win32` bodies respect `http::serializer::split`
* Correct `buffer_bytes` documentation
* Fix missing include in sha1.hpp
* Fix ostream warning
* Update broken links in README
* Translate some win32 errors to net error codes
* Moved-from dynamic buffers do not clear if different allocator
* Fix compilation macro documentation
* Clarify end-of-file behaviour in `File::read` docs
* ostream_buffer satisfies preconditions of DynamicBuffer_v1::commit
* Fix release build of docs
* Fix `echo-op` test
* Fix non-msvc cmake
[heading Boost 1.72]
[*Examples]
* Add async-ssl-system-executor http client example
* Add async-ssl-system-executor websocket client example
[*Features]
* Async init-fns use the executor's default token
* Use automatically deduced return types for all async operations (since C++14)
* Support Concepts for completion token params
[*Fixes]
* [issue 1664] Add default dtors to satisfy -Wnon-virtual-dtor
* [issue 1682] Multiple I/O of the same type is not supported
* [issue 1687] Fix signed/unsigned mismatch in file_stdio::seek
* [issue 1688] basic_stream dtor cannot throw
* [issue 1734] Fix leftovers in basic_parser corner case:
* [issue 1751] https_get example sends the Host header
* [issue 1754] Fix async_close error code when async_read times out
* [issue 1782] root_certificates.hpp is not for production
* Fix data race in websocket examples
* Fix data race in http server examples
* Squelch spurious websocket timer assert
* Use the executor type in basic_stream timer
[/-----------------------------------------------------------------------------]
[heading Boost 1.71]
[*Improvements]
* [issue 1280] Add 1-element specialization for `buffers_cat`
* [issue 1556] Set parser status and flags even if body limit has been reached
* [issue 1567] Relax requirements for vector_body
* [issue 1568] `detect_ssl` uses `bool` instead of `tribool`
* [issue 1574] Replace `static_string` in HTTP parser
* [issue 1606] Use `steady_timer` type
* [issue 1611] Make chat websocket javascript client more user friendly
* [issue 1613] Remove redundant use of `static_string`
* [issue 1636] Improve performance of `http::string_to_verb`
* Preserve `operation_aborted` on partial message
* Remove unused `<experimental/unit_test/thread.hpp>`
* Reduce the number of instantiations of `filter_token_list`
* Add idle ping suspend test
* Remove the use of `bind_executor` in `basic_stream`
* Remove redundant template in service_base
* Remove the use of `static_string` from `http::fields`
* Enable split compilation in http::basic_fields
* Remove redundant instation of `static_string` in websocket
* Remove redundant use of `asio::coroutine` in `flat_stream`
* More split compilation in rfc7230.hpp
* More split compilation in websocket/detail/mask.hpp
* Simplify generation of sec-websocket-key
[*Fixes]
* [issue 1332] `allocator_traits::construct` is used for user-defined types
* [issue 1559] Member `get_executor` const-correctness
* [issue 1569] Fix `async_detect_ssl` handler type
* [issue 1570] Launder pointers
* [issue 1578] Fix min/max on MSVC
* [issue 1586] Fix uninitalized memory use in deflate_stream
* [issue 1593] Fix UB in websocket close tests
* [issue 1594] Fix data race in test stream
* [issue 1599] Fix moved-from executor in idle ping timeout
* [issue 1607] Remove uses of the deprecated `buffers` function
* [issue 1612] Remove uses of deprecated methods in websocket tests
* [issue 1620] Clean up typo in chat websocket javascript client
* [issue 1621] Fix `flat_buffer` copy members
* Silence gcc-8 warning
* Fix `buffers_cat` iterator tests
* Don't pessimize-move
* Qualify calls to `beast::iequals` in basic_parser.ipp
* Fix UB in websocket read tests
* Simplify websocket::detail::prng
* Don't over-allocate in http::basic_fields
[*Documentation]
* Documentation is built with SaxonHE instead of xsltproc
[/-----------------------------------------------------------------------------]
[heading Boost 1.70]
[tip
The namespace alias `net` is used throughout for `boost::asio`.
]
[*New Features]
* All composed operations use the new
[@boost:/doc/html/boost_asio/reference/async_initiate.html `net::async_initiate`]
internally.
* New `tcp_stream` and
`basic_stream`
support:
* Timeouts,
[link beast.ref.boost__beast__basic_stream.async_read_some `async_read_some`],
[link beast.ref.boost__beast__basic_stream.async_write_some `async_write_some`]
complete with
[link beast.ref.boost__beast__error `error::timeout`]
on expiration.
* Traffic-shaping policies
[link beast.ref.boost__beast__simple_rate_policy `simple`] and
[link beast.ref.boost__beast__unlimited_rate_policy `unlimited`],
or a user-defined
[link beast.concepts.RatePolicy ['RatePolicy]].
* Supports
[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1322r0.html P1322R0].
* `websocket::stream`
supports
* Configurable handshake timeout
* Configurable idle timeout
* Automatic idle pings
* [link beast.ref.boost__beast__ssl_stream `ssl_stream`]
is a public interface
* ([issue 1305]) Better
`flat_buffer`,
`flat_static_buffer`,
`multi_buffer`, and
`static_buffer`:
* Revise all reference documentation
* Move construction does not always invalidate buffers
* non-const `data()` returns a mutable buffer sequence
* Add `cdata()` to also return constant readable bytes
* Eligible member functions are declared `noexcept`
* ([issue 1345]) Better
`flat_buffer`,
`multi_buffer`
* Add `clear`, `reserve()`, `max_size()`, `shrink_to_fit()`
* Respect Allocator `max_size()`
* Specify exception safety
* ([issue 1384]) New functions
`bind_front_handler`
* Better
`static_buffer`,
`flat_static_buffer`
* Add `clear()`
* More members are `noexcept`
* Specify exception safety
* Faster
`http::string_to_field`
* Dynamic buffer `clear` operations perserve capacity.
* New file <boost/beast/core/buffer_traits.hpp>
* New variadic `is_const_buffer_sequence`
* New variadic `is_mutable_buffer_sequence`
* New trait `buffers_iterator_type`
* New trait `buffers_type`
* New classes
`async_base`,
`stable_async_base`
* Handle boilerplate for writing composed operations
* New
`allocate_stable`
is preferred over `handler_ptr`
* New
`buffer_bytes`
replacement for `net::buffer_size`
* New:
* `saved_handler`
* `buffers_range_ref`
* `executor_type`
* `get_lowest_layer`,
`lowest_layer_type`
* `close_socket`,
`beast_close_socket`
* `error`,
`condition`
* These interfaces are now public (were experimental):
[link beast.ref.boost__beast__flat_stream `flat_stream`],
[link beast.ref.boost__beast__detect_ssl `detect_ssl`],
[link beast.ref.boost__beast__async_detect_ssl `async_detect_ssl`].
* Websocket streams use PCG as the fast random number generator,
for increased security.
[*Documentation]
* WebSocket reference documentation is revised
* Updated [link beast.using_io.asio_refresher Networking Refresher]
* Revised [link beast.using_io.writing_composed_operations.echo Asynchronous Echo]
* Rewritten [link beast.using_io.writing_composed_operations.detect_ssl [*Detect SSL Handshake]]
[*API Changes]
* The __Fields__ concept is deprecated and will be removed
in a future version. ['Actions Required]: Do not rely on
the ['Fields] concept.
* `handler_ptr` is deprecated. ['Actions Required]: Use
`stable_async_base` and
`allocate_stable`
instead.
* On Windows, Visual Studio 2017 or later is required
* OpenSSL is required to build the examples and tests
* HTTP stream algorithms return the number of bytes transferred
from the stream. Previously, they returned the number of bytes
consumed by the parser.
['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.
* Metafunctions
`has_get_executor`,
`is_sync_stream`,
`is_sync_read_stream`,
`is_sync_write_stream`,
`is_async_stream`,
`is_async_read_stream`, and
`is_async_write_stream`
are in stream_traits.hpp.
['Actions Required]: Include stream_traits.hpp as needed.
* `basic_parser`
is abstract.
['Actions Required]
* Change uses of the `basic_parser` type to omit the `Derived`
template parameter
* Classes derived from `basic_parser` no longer need to friend
the base.
* Virtual functions in the derived class may be marked `override`.
* Metafunction
`is_file`
is in file_base.hpp.
['Actions Required]: Include file_base.hpp as needed.
* `flat_static_buffer::reset()`
is deprecated.
['Actions Required]:
* call
`clear()` instead.
* `buffers_adapter` is spelled
`buffers_adaptor`.
['Actions Required]:
* Replace `buffers_adapter` with
`buffers_adaptor`,
or define `BOOST_BEAST_ALLOW_DEPRECATED`.
* `buffers` is spelled
`make_printable`.
['Actions Required]:
* Replace `buffers` with
`make_printable`,
and include "make_printable.hpp" instead of "ostream.hpp".
* `file_mode::append_new` is removed, as it makes no sense.
['Actions Required]:
* Replace `file_mode::append_new` with either
`file_mode::append` or
`file_mode::append_existing`
as needed.
* `role_type` is moved from `websocket` to `beast`
* `buffers_range_ref`
is preferred to `std::reference_wrapper`.
['Actions Required]:
* Call
`buffers_range_ref`
with the buffer, instead of calling
`buffers_range`
with a reference wrapper constructed from the buffer.
* Nested `lowest_layer` and `lowest_layer_type` are removed.
['Actions Required]: Use the free function
`get_lowest_layer` and the
type trait
`lowest_layer_type` instead.
* WebSocket decorator is a socket option:
* 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`
* ([issue 1375]) The value returned from `basic_parser::content_length`
no longer changes as the body of the message is received.
['Actions Required]: Call `basic_parser::content_length_remaining` instead
of `basic_parser::content_length` in order to determine the remaining
number of bytes in the body.
[*Examples]
* All example programs are updated:
* Use
`tcp_stream`
with timeouts (HTTP)
* Use
`ssl_stream`
* Set timeouts for WebSocket streams.
* Use
`bind_front_handler`
* ([issue 1100]) http-crawl clears the response before each read
* ([issue 1347]) echo-op is rewritten
* ([issue 1401]) Examples use
`flat_buffer`
* Advanced servers use HTTP parser interfaces for reading
* detect-ssl is rewritten
* New example [path_link example/websocket/server/chat-multi example/websocket/server/chat-multi]
* `async_echo` works with move-only handlers
* cppcon2018 example is removed
[*Fixes]
* ([issue 38]) Better treatment of SSL short reads
* ([issue 1223]) HTTP read counts bytes correctly when an error occurs
* ([issue 1247]) Update `ssl_stream`
for Asio changes
* ([issue 1279]) Enable explicit instantiations of
`websocket::stream`
* ([issue 1290]) Don't use deprecated Asio interfaces
* ([issue 1306]) `http::message`
is not-a `boost::empty_value`
* ([issue 1306]) `test::stream`
has fewer dependencies
* ([issue 1358]) Destroy abandoned websocket ops on shutdown
* ([issue 1365]) Handler wrappers decay parameters sooner
* ([issue 1408]) `session_alloc`
is thread-safe
* ([issue 1414]) Boost.System is header-only
* ([issue 1418]) `test::stream`
maintains a handler work guard
* ([issue 1445]) Fix posix_file::close handling of EINTR
* ([issue 1460]) Large WebSocket Upgrade response no longer overflows
* Reusing an HTTP parser returns an error
* Handler bind wrappers use the associated allocator
* `buffers_cat`
correctly skips empty buffers when iterated
* `ostream`
does not overflow or exceed the dynamic buffer's maximum size
* Fixes to
`test::stream::async_read`
* `file_mode::append_existing`
works correctly
* A handler work guard is maintained on paused websocket operations
* All behavior of default-constructed iterators is conforming
[/-----------------------------------------------------------------------------]
[heading Boost 1.69]
[*New Videos]
[block'''
<mediaobject>
<videoobject>
<videodata fileref="https://www.youtube.com/embed/7FQwAjELMek"
align="center" contentwidth="448" contentdepth="252"/>
</videoobject>
</mediaobject>
''']
[*New Features]
* ([issue 1133]) Add `BOOST_BEAST_USE_STD_STRING_VIEW`
[*Examples]
* New WebSocket server and browser-based client: example/cppcon2018
[*Fixes]
* ([issue 1245]) Fix a rare case of incorrect UTF8 validation
* ([issue 1237]) Verify certificates in client examples
* ([issue 1233]) Use [@boost:/doc/html/core/empty_value.html `boost::empty_value`]
* ([issue 1091]) Fix timer on websocket upgrade in examples
* ([issue 1270]) [link beast.ref.boost__beast__http__basic_fields `basic_fields`] uses intrusive base hooks
* ([issue 1267]) Fix parsing of out-of-bounds hex values
* ([issue 1263]) Fix uninitialized comparison in buffers iterator
* ([issue 1288]) Remove extraneous strand from example
* Workaround for http-server-fast and libstdc++
* Partial support for `BOOST_NO_EXCEPTIONS`
[*Experimental]
* Add `timeout_socket`
[heading Boost 1.68]
This version fixes a missing executor work guard in all composed operations
used in the implementation. Users who are experiencing crashes related to
asynchronous completion handlers are encouraged to upgrade. Also included
is an improved mechanism for generating random numbers used to mask outgoing
websocket frames when operating in the client mode. This resolves a
vulnerability described in the Beast Hybrid Assessment Report from Bishop Fox.
[*New Features]
The include directory `<beast/experimental>` contains features which are not
part of the stable public interface but are available anyway. They may change
in future versions.
* ([issue 1108]) New [link beast.ref.boost__beast__flat_stream `flat_stream`] for working around an SSL stream performance limitation
* ([issue 1151], [issue 595]) New [link beast.ref.boost__beast__http__icy_stream `http::icy_stream`] stream filter allows parsing ICY HTTP response handshakes
* New [link beast.ref.boost__beast__ssl_stream `ssl_stream`] for better SSL performance and move constructability
* New
[link beast.ref.boost__beast__test__error `test::connect`],
[link beast.ref.boost__beast__test__error `test::error`],
[link beast.ref.boost__beast__test__error `test::fail_count`], and
[link beast.ref.boost__beast__test__error `test::stream`] utilities for writing unit tests.
* New [link beast.ref.boost__beast__http__is_mutable_body_writer `http::is_mutable_body_writer`] metafunction
* New [link beast.ref.boost__beast__websocket__seed_prng `websocket::seed_prng`] for manually providing entropy to the PRNG
* New [link beast.ref.boost__beast__websocket__stream.secure_prng `websocket::stream::secure_prng`] to control whether the connection uses a secure PRNG
[*Improvements]
* Generated WebSocket masks use a secure PRNG by default
* Improvements to [link beast.ref.boost__beast__buffers_adaptor `buffers_adaptor`]
* ([issue 1188]) Set "/permissive-" for MSVC builds
* ([issue 1109]) Use a shared string for example HTTP server doc roots
* ([issue 1079]) Add `handler_ptr::has_value`
[*Fixes]
* ([issue 1073]) Fix race in advanced server examples
* ([issue 1076]) Use executor_work_guard in composed operations
* ([issue 1079]) Remove spurious assert
* ([issue 1113]) Add `const` and non-`const` overloads for message based HTTP writes
* ([issue 1119]) Fix unused variable warning
* ([issue 1121]) Examples use the root certificate which matches the fingerprint
* ([issue 1141]) Tidy up composed operation doc
* ([issue 1186]) Check error in example set_option
* ([issue 1210]) Fix http_server_stackless_ssl.cpp example
* ([issue 1211]) Fix parse_dec algorithm
* ([issue 1214]) Silence ubsan false positive
* Tidy up websocket stream javadocs
* Fix move-only arguments in [link beast.ref.boost__beast__bind_handler `bind_handler`]
* Fix [link beast.ref.boost__beast__http__parser `http::parser`] constructor javadoc
* Fix [link beast.ref.boost__beast__buffers_adaptor `buffers_adaptor`] iterator value type
* Fix [link beast.ref.boost__beast__buffers_adaptor.max_size `buffers_adaptor::max_size`]
* Fix [link beast.ref.boost__beast__buffers_prefix `buffers_prefix`] iterator decrement
* Fix __Fields__, __FieldsWriter__ concept docs
* Fix __BodyReader__ constructor requirements doc
[*Breaking Changes]
* Remove deprecated `serializer::reader_impl`
* Remove deprecated __Body__ `reader` and `writer` ctor signatures
[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
* Examples set `reuse_address(true)`
* ([issue 1026]) Advanced servers support clean shutdown via SIGINT or SIGTERM
* Some basic_fields operations now give the strong exception guarantee
[*Fixes]
* Fix "warning: ‘const’ type qualifier on return type has no effect"
* ([issue 916]) Tidy up `ssl_stream` special members
* ([issue 918]) Calls to `<algorithm>` 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
* ([issue 1024]) Fix teardown for TIME_WAIT
* ([issue 1030]) Fix big-endian websocket masking
* Safe treatment of zero-length string arguments in basic_fields
* ([issue 1043]) Examples clear the HTTP message before reading
* ([issue 1012]) Add asio_handler_invoke overloads for stream algorithms
* Add Access-Control-Expose-Headers field constant
[*API Changes]
* Remove unintended public members of
`handler_ptr`.
Actions required: don't call non-public members.
* `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.
* `handler_ptr`
gives the strong exception guarantee. The constructor 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.
* ([issue 1014]) DynamicBuffer input areas are not mutable.
Actions required: do not attempt to write to input areas of dynamic
buffers.
* ([issue 941]) `get_lowest_layer` is now a type alias.
Actions required: Replace instances of `typename get_lowest_layer<T>::type`
with `get_lowest_layer<T>`.
[heading Boost 1.66]
* Initial release
[endsect]
|