Releases: microsoft/cpprestsdk
v2.10.9
- PR#973 Address gcc warnings-as-errors in compression code, test improvements
- PR#986 Prevent infinite loop during proxy authentication
- PR#987 Remove use of aligned_union that broke CentOS 7.
- PR#1004 #993, #1002: Add flexibility for iOS building. Adds command line args…
- PR#1009 gcc: Fix compilation with -fno-operator-names
- PR#1019 FIX: crash with std::logic_error when reusing a connection that timed out on the server
- PR#1021 handle null bytes when parsing utf8
- PR#1017 Add in support for adding i386 slice when building for 32-bit targets. Also improve messaging and add means to clean
- PR#1024 http_compression.cpp: fix build with gcc 4.7
- PR#1022 Resolve double free when WinHttpSendRequest fails
v2.10.8
- PR#938 Allow ppltasks.h and pplxtasks.h to co-exist
- PR#951 Fix incorrect const in reinterpret_cast
- PR#955 Fix UWP missing header
- PR#956 Adds support for OpenSSL 1.1.1
- PR#959 Fix Android build issue by remove the crossplat name space before android parameters
- PR#960 Update vcpkg to latest master to fix VS2015 build.
- PR#966 Fix string size for error message generated by windows_category
- PR#958 Add uri_builder::append_path_raw(...) to allow adding elements to path intentionally beginning with '/' ("//" will result in the final path value)
- PR#952 cmake: add code to detect system brotli library
- PR#963 Fix Brotli compress_helper early termination issue
- PR#961 Fixes iOS builds and makes it more future proof
v2.10.7
cpprestsdk (2.10.7)
- cpprestsdk now has Azure Pipelines continuous integration.
- Builds for Android and iOS were repaired, now checked in Azure Pipelines to make sure that doesn't bit-rot in the future.
- Several race conditions in the listener were worked around; the listeners remain experimental and are unlikely to productized in their current form; the race conditions are structural, but at least the client tests pass most of the time.
- Incorrect handling of connection pooling bug that caused segfaults on Ubuntu introduced in 2.10.4 has been repaired.
- websocketpp checked in 0.5.1 version has been changed to a submodule and updated to 0.8.1.
- Added an API to set the number of threads in the asio thread pool, see PR#883
- Legacy unmaintained Visual Studio project files have been deleted, please use CMake instead.
- PR#670 Export methods to set/get the ambient scheduler in cpprest dll
- PR#866 Add Transfer-Encoding compression support and extensible compression API
- PR#892 Improve utf8_to_utf16 speed for common path
- PR#897 added URI resolution according to RFC3986
- PR#935 Fix spelling mistakes across the library
- PR#936 Use pplx namespace consistently
- PR#937 Remove _ASYNCRTIMP from ~http_listener() and implement inline
- PR#940 Avoid using identifiers reserved by C++ in header guards
- PR#943 blackjack sample: use vector instead of shared pointer for array
-- cpprestsdk team [email protected] MON, 30 Oct 2018 20:32:00 -0800
cpprestsdk (2.10.6)
- PR#844 Fix clang build error
-- cpprestsdk team [email protected] MON, 30 Aug 2018 16:51:00 -0800
cpprestsdk (2.10.5)
- Issue#842 Fix incorrect
cpprest/version.h
-- cpprestsdk team [email protected] FRI, 17 Aug 2018 09:47:00 -0800
cpprestsdk (2.10.4)
- Added a
.clang-format
to enable consistent formatting. - Added support for
Host:
headers changing the checked CNAME field for SSL certificates in WinHTTP and Asio. - PR#736 passes 0666 to open() for creating files to better match the default behavior for other http clients (wget, etc).
- PR#732 fixes a build issue with clang
- PR#737 taught our cmake to respect the GNUInstallDirs variables
- PR#762 improved handling of dead connections in the connection pool on Asio.
- PR#750 improved error handling in the accept() call in
http_listener
- PR#776 improved the iOS buildsystem
-- cpprestsdk team [email protected] WED, 15 Aug 2018 12:35:00 -0800
cpprestsdk (2.10.3)
- Added a root
CMakeLists.txt
to improve support for VS2017 Open Folder. - PR#809 improves support for
/permissive-
in MSVC - Issue#804 fixed a regression due to compression support; we no longer fail on unknown Content-Encoding headers if we did not set Accepts-Encoding
- PR#813 fixes build failure with boost 1.63
- PR#779 PR#787 suppress and fix some warnings with new versions of gcc and clang
-- cpprestsdk team [email protected] THU, 2 Aug 2018 15:52:00 -0800
v2.10.1
This is a minor, source only release. Please contact your distribution maintainers for updates to precompiled binaries.
- Improved CMake generation of UWP binaries.
- Fixed regression in CMake versions supported. As listed in the main CMakeLists.txt, we intend to only require 3.0.
- Mirrored changes in the main PPL sources to
Concurrency::details::do_while()
, which yield a significant compiler throughput improvement on MSVC - Fix issues under
/permissive-
, an on-by-default flag for new projects in VS2017 15.5
v2.10.0
Release Notes
This is a source only release. Please contact your distribution maintainers for updates to precompiled binaries.
- Removed VS2013 MSBuild files. Use CMake with the "Visual Studio 12 2013" generator.
- Added VS2017 MSBuild files for convenience. It is highly recommended to use vcpkg or CMake instead to build the product library.
- Added UWP versions of the Windows Store samples for VS2017.
- Updated minimum required cmake version to 3.0.
- Added CMake config-file support to installation. This should be consumed by doing:
find_package(cpprestsdk REQUIRED)
target_link_libraries(my_executable PRIVATE cpprestsdk::cpprest)
- Fixed several race conditions and memory leaks in the ASIO
http_client
. - Fixed process termination bug around certain exceptional cases in all
http_client
s. - Improved handling of
/Zcwchar_t-
on MSVC. That doesn't make it a good idea. - Fixed use-after-free in the Windows Desktop
http_client
exposed by VS2017. - Totally overhaul the CMake buildsystem for much better support of Windows and more shared code between platforms.
- PR#550 adds all remaining official HTTP status codes to
http::status_codes
. - PR#563 wraps SSL errors on Windows Desktop in
http_exception
s, with more readable descriptions. - PR#562 and PR#307 fixes building with LibreSSL.
- PR#551 adds convenience wrappers
json::value::has_T_field(T)
for inspecting object values. - PR#549 fixes a race condition in the ASIO client during header parsing.
- PR#495 fixes a memory leak during proxy autodetection on Windows Desktop.
- PR#496 and PR#500 expand proxy autodetection to also consider Internet Explorer settings on Windows Desktop.
- PR#498 fixes error when handling responses of type NoContent, NotModified, or from 100 to 199.
- PR#398 enables specifying the User Agent used in OAuth2 requests.
- PR#494 improves the BingRequest sample's handling of proxies.
- PR#516 enables certificate revocation checks on Windows Desktop.
- PR#502 improves compatibility with glibc 2.26.
- PR#507 adds
http_request::get_remote_address()
to expose the client's IP address forhttp_listener
. - PR#521 enables use of empty passwords on Windows in
web::credentials
. - PR#526 and PR#285 improve compatibility with openssl 1.1.0.
- PR#527 fixes a bug in the ASIO
http_client
where the proxy is passed the same credentials as the target host. - PR#504 makes
uri_builder::to_string()
anduri_builder::to_uri()
const
. - PR#446 adds handling for the host wildchar
+
to the ASIOhttp_listener
. - PR#465 improves compatibility with clang on Linux.
- PR#454 improves compatibility with icc 17.0.
- PR#487 fixes static library builds of
test_runner
on non-Windows platforms. - PR#415 handles malformed URL requests to the ASIO
http_listener
instead of crashing. - PR#393 fixes a race condition in the websocketpp
websocket_client
. - PR#259 fixes several races in the ASIO
http_listener
which result in memory leaks or use after free of the connection objects. - PR#376 adds
http_client_config::set_nativesessionhandle_options()
which enables customization of the session handle on Windows Desktop. - PR#365 updates our convenience OpenSSL build scripts for Android to use openssl 1.0.2k.
- PR#336 makes the ASIO
http_client
more consistent with the Windows clients by not appending the port when it is default. This improves compatibility with AWS S3. - PR#251 dramatically improves UTF8/16 conversions from 6s per 1MB to 3s per 1GB (2000x improvement).
- PR#246 enables TLS 1.1 and 1.2 on Windows 7 and Windows 8.
- PR#308 enables limited IPv6 support to
http_client
andhttp_server
, depending on the underlying platform. - PR#309 fixes a bug in base64 encoding that previously read beyond the input array, causing segfaults/AVs.
- PR#233 adds compression support (deflate and gzip) for Windows Desktop and ASIO
http_client
s based on Zlib. - PR#218 fixes a memory leak in the UWP
http_client
when processing headers. - PR#260 fixes inappropriate handling of certain connections errors in the ASIO
http_listener
.
v2.9.0
Release Notes
Linux
- Merged #70 & #65 which should fix building on CentOS/RedHat.
- #143 Work around SSL compression methods memory leak in ASIO.
- #82 Fixed ambiguous call to begin when using with boost library.
- #117 Fix header reading on linux listener using HTTPS.
- #97 Add support for basic authentication.
- #206 remove warnings-errors for system-headers under linux; honour http_proxy env-variable.
OSX
- #114 Removed redundant std::move() that was causing errors on Xcode 7.3 gcc.
- #140 Fix returning std::move causing build failure on osx.
Android
- #137 Fix android build script for linux, remove libiconv dependency.
Windows
- #150 Add static library for windows xp.
- #115 Added projects which target v140_xp to resolve Issue#113.
- #71 Add a project for compiling as a static lib.
WebSockets
- #102 Added websocket_client_config option for ssl verify mode.
- #217 Fixed race condition in Casablanca WinRT Websocket client.
http_client
- #131 Update to include access control allow origin.
- #156 add host based connection pool map on non windows http_clients.
- #161 Header parsing assumes whitespace after colon.
- #146 Fix ambiguous reference to ‘credentials’
Uri
- #149 Some perf improvements for uri related code.
Json
- #86 Fix obtaining raw string_t pointer from temporary.
- #96 Fix typo hexidecimal/hexadecimal.
- #116 Fixing latin1 to UTF-16 convertion.
pplx
- #47 Fixing .then to work with movable-only types.
Misc
- Switched license from Apache 2.0 to MIT
- Streamlined development model by removing the "development" branch. Please make PRs against master form this point forward and use tags to retrieve a specific stable version.
v2.8.0
Release Notes
oauth 1.0
- Merged #66 which adds proxy support for oauth1_config class.
oauth 2.0
- Merged #1 which adds proxy support for token_from_code and token_from_refresh methods.
- Merged #38: Include cpprest/details/web_utilities.h to bring in the definition for web_proxy.
http_client
- Merged #39: Add TLS extension SNI for boost asio based http_client. Resolves #35.
- Merged #40 which allows specifying a host header in http requests.
- Merged #41 which adds HTTP and HTTPS client proxy support for non-Windows platforms.
- Merged #55 which fixes a bug where http_client_asio took forever to cancel.
http_listener
- Merged #16: win32 http_listener response refactor.
iOS
Windows
- Merged #26: Static lib compilation for UWP.
Websockets
- Merged #30 which adds a CPPREST_EXCLUDE_WEBSOCKETS option to CMake to allow removing all OpenSSL and Boost dependencies.
- Merged #37 which fixes C4592 warning under Visual Studio 2015 Update 1 in websockets++. Resolves #34.
Buildsystem
- a075fb2 fixes issues with MSBuild's multicore switch (/m).
- Merged #30 which adds PCH support for the Visual Studio generator via CMake.
Miscellaneous
v2.7.0
Release Notes
websockets
- Merged pull request allowing through CMake to use an external version of Websocket++. #294
- Fixed potential AV with the Windows Runtime websocket client, if the task returned from the close function wasn't waited to complete before running the destructor.
- Merged pull request fixing potential AV with the Windows Runtime websocket_client, if the destructor was run without the user waiting on the task returned from connect to complete. Technically users should always make sure to wait for the connection to succeed or fail, this just helps incase that wasn't done.
- Merged pull request for Adding proxy support for token_from_code and token_from_refresh methods.
http_client
- Merged pull request adding support for timeouts down to the microsecond level. Please note not all platforms support this fine granularity, some only down to milliseconds.
- Fixed issue where Boost.Asio based http_client incorrectly used the http_client_config timeout setting for determining how long to keep around connections in the pool before closing.
http_listener
- Fixed bug with Boost.Asio based http_listener where the incoming request body stream write head wasn't closed. #325
- Merged pull request to enable https listener and client ca
uri_builder
- Updated uri_builder::append_query API that operators on a provided key and value to percent encode the '&', ';', '=' characters to avoid any confusion. #396
miscellaneous
- Fixed issue with utf16_to_utf8 utility function when encoding certain surrogate pairs. #392
- Merged a couple of pull requests (here, here, and here) fixing several issues with arm64. #312, #291
- Merged pull request fixing double include issues when building with CMake.
- Merged pull request fixing cast issue on FreeBSD.
- Removed unnecessary heap allocation and cleaned up a bit the scoped_c_thread_locale::c_locale() implementation.
Windows
- Removed some unnecessary _MSC_VER macro checks as Visual Studio 2012 is no longer supported.
- Fixed several incorrect assumptions of thread safe function local static initialization with Visual Studio 2013. #391
- Updated OpenSSL dependency to version 1.0.2d. #398
Android
- Removed unused files for building libiconv from Build_android folder.
- Fixed the NuGet Package issue for Android on VS2015, #400
iOS
- Added .gitignore to the Build_iOS folder to ignore the downloaded build dependencies. #373
v2.6.0
Release Notes
streams
- Deprecated the streambuf::putn API. In some cases with file streams this API makes a copy. To be more efficient and not break existing code a new function putn_nocopy has been created. This makes it clear to users they need to ensure the pointer data provided is valid until the returned task is completed.
- File streams cleanup improvements: replacing C style casts, updating some shared_ptr parameters to const reference, and removed unnecessary data structures saving heap allocations and space. Fixes #353, #126
json
- Added ability to erase elements from a json array or object. #147
- Added missing static factories for working with 64bit integers to the json::value class. #351
- Fixed improper serialization of control characters that should always be Unicode escaped.
- Fixed issue with parsing and then serializing not properly escaping necessary characters if parsed originally from a stream. #259
- Updated json::value::as_number() and json::value::as_string() to return by const reference.
- Made json::object copy constructor not private. Also removed a few unnecessary copy constructors and stick with compiler generated.
http_listener
- Fixed potential crash on Windows that could occur in some cases if the client sent and invalid URI. #267
- Fixed potential hang on Windows if running on a single core machine. #106
- Merged pull request fixing issue with listeners not being properly remove if port is in use on non-Windows. #375
websocket_client
- Updated Websocket++ version to 0.5.1.
- Added tests for Windows Runtime websockets client. #223
- Removed unnecessary extra event in Windows Runtime implementation from websocket client.
oauth 2.0
- Allow conversions for the OAuth 'expires_in' field from a JSON string value to a numeric value. #381
pplx
- Merged pull request fixing deadlock if an exception occurs while trying to schedule a task. #379
miscellaneous
- Updated some code documentation comments to improve reference documentation.
- Merged pull request qualifying web::credentials namespace in http_client authentication_tests.cpp to avoid collisions with OpenSSL.
- Fixed locale based test cases to silently pass if the necessary locale isn't installed on the machine. #354
- Removed a bunch of unnecessary MSBuild properties from test vcxproj files. #264
- Changed safeint.hpp to use pragma once instead of ifdef guard.
Windows
- Removed DllMain and global process exiting flag as no longer needed.
- Removed Visual Studio 2012 project files. VS2012 is no longer supported.
- Added support for Visual Studio 2015 RC, preview is no longer supported.
- Fixed problem with CasaLens sample not compiling due to std::bind with some versions of Visual Studio 2015.
- Removed a bunch of Windows specific string conversion code, replaced with C++ standard equivalent.
- Fixed a potential deadlock on Windows XP when using CPPREST_FORCE_PPLX. #374
- Updated to Boost version 1.58.
- Updated to OpenSSL version 1.0.2a.
- Added support for Universal Windows Platform (UWP).
- Added support for websockets with Windows Desktop with Visual Studio 2015. #277
- Merged pull request adding version information to the dlls. #318
iOS
- Updated Boost dependency to version 1.57.
- Improvements to script for building Boost, including no longer building for OS X, adding x86_64 simulator, and always using latest iOS SDK available on the machine. #196
- Removed dependency on Boost.Locale and libiconv, replaced with C++ standard equivalent.
- Fixed issue including CMakeLists.txt from another CMake project. #372
Ubuntu
- Fixed remaining warnings with GCC and removed warning suppression in CMakeLists.txt. #253
- Removed dependency on Boost.Locale and libiconv.
Android
- Removed dependency on Boost.Locale and libiconv.
- Added a workaround using -funwind-tables compilation option since not included by default with Visual Studio Android support. #388
v2.5.0
Release Notes
NuGet Packages
The NuGet packages have been significantly restructured. Instead of having one massive package containing binaries for all the different platforms we support, each individual Visual Studio project file now produces its own package. For example for Windows desktop using the v120 toolset the following package contains everything you need:
Another example, for Windows store applications with the v120 toolset the following package contains everything you need:
Splitting into smaller package allows users to pick only the binaries that are actually needed saving download time and storage space. As part of this we've stopped stripping symbols so our packages contain full pdbs. If you download the source code from CodePlex you have full source code debugging.
For backwards compatibility, and ease of use for people who want everything in one download, each individual package is pulled together into an aggregate package containing all the packages as dependencies.
Please note binaries for Visual Studio 2012 have been removed from the Nuget package. The project files still are in the repository and remaining building. At a future release we will remove the project files as well.
Android
- Fixed issue in CMakeLists.txt where parenthesis were incorrectly used instead of brackets.
- Fixed issue in CMakeLists.txt where pplxlinux.cpp source file was missing.
- Added Android TestRunner packing androidproj to build.
Windows
- Fixed several code analysis warnings.
- Updating NuGet package for missing OpenSSL license, also patched 2.4.0's NuGet package.
- Fixed not working on XP issue because of crypto API. #331, #334
- Fixed several functions missing an explicit calling convention. This caused problems if you changed the calling convention from the cdecl.
- Added support for Windows on Devices/Galileo. #217
- Added option to force using PPLX on Windows threadpool instead of PPL on the Concurrency Runtime. Library can be rebuilt using CPPREST_FORCE_PPLX macro. For some scenarios with lots of tasks this can lead to performance improvements and better CPU utilization. With VS2015 PPL tasks run on the Windows threadpool by default. #341
- Updated all binaries to use whole program optimizations, slightly decreasing binary size and small potential performance improvements.
- Merged pull request adding support for CMake for Windows desktop.
OSX
- Merged a pull request to work around a FindOpenSSL.cmake issue, enabling it to find Homebrew's copy.
- Added support for iOS 64bit simulator. #196
websocket_client
- Fixed a race condition in Websocket++ based implementation during websocket client destructor which would sometimes result in an AV/Segfault.
- Added proxy support for Websocket++ based implementation.
- Added support for Server Name Indication (SNI) to Websocket++ based implementation.
- Updated server certificate verification to accept SERVER_GATED_CRYPTO and SGC_NETSCAPE usage for Websocket++ based implementation on Windows.
pplx
- Merged a pull request lazy instantiating the underlying threadpool used. Allows for forking processes in certain circumstances. #68
http_client
- Made std::function parameter to http_client::add_handler passed by const reference.
- Fixed invalid check in WinHTTP based implementation causing autologon security level to be high if credentials are not provided.
- Added extract_utf8string and extract_utf16string to http_request and http_response classes. This allows uses either UTF-8 or UTF-16, instead of utility::string_t, more efficiently regardless of the platform.
- Implemented native handle API for non-Windows platforms exposing Boost.Asio structures. This allows for configuring additional options like client certificates for example. #168
- Fixed bug in Boost.Asio based implementation that incorrectly caused multiple handshakes to occur when reusing connections with HTTPS.
- Fixed bug incorrectly setting the Content-Length header when not using the "C" locale.
json
- Fixed issue where the JSON library assumes char is a signed type, however C++ doesn't guarantee this. On ARM with Clang for example char is an unsigned type. This lead to incorrect parsing.
miscellaneous
- Merged pull request adding http_constants.dat to be installed with 'make install'.
- Deprecated utility function web::http::bind, this was an implementation detail and really never should have been part of the API.
- Added overloads that accept a std::locale for utility::conversions::print_string and utility::conversions::scan_string.
- Fixed several locations where a stringstream was being used and assumed the "C" locale was set.
- Merged pull request fixing bug with nullptr from SafeInt3.hpp with GCC. #340
- Moved internal safeint types to msl::safeint3 namespace to avoid conflicting with Visual Studio versions. #216
tests
- Fixed race conditions in close_callback_client_from_server
- Added proper synchronization to test_websocket_server (preventing some race conditions). #305