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