2.11
- Added support for TLS in RedisCluster mode. Many thanks to Danilkormilin for the PR!
- Added ascetic web interface for the uservice-dynconf.
- server::handlers::HttpHandlerStatic now can serve static files from non-root URL paths. Many thanks to Konstantin Goncharik for the PR!
- Added retry budget plugin for HTTP clients clients::http::plugins::retry_budget::Component.
- server::handlers::HttpHandlerStatic now has directory-file static config option that returns file in directory requests. It is set to "index.html" by default, so that http://localhost/ requests return the index.html. Option not-found-file allows customizing 404 pages.
- Added utils::move_only_function.
- Added seek functionality to kafka::ConsumerScope. Many thanks to Mikhail Romaneev for the PR!
- Add a static config option message_key_log_format to kafka::ConsumerComponent to log message key in hex. Many thanks to Mikhail Romaneev for the PR!
- utils::statistics::HistogramView now provides total sum to comply with Prometheus format. Many thanks to DmitriyH for the PR!
- Added UTEST_P_DEATH and UEXPECT_DEBUG_DEATH macro to userver::utest.
- Renamed utils::NullTerminatedView to utils::zstring_view to match C++29 targeted proposal P3655R1.
- Added Get/Set batch size for storages::mongo::Cursor. Many thanks to Konstantin Goncharik for the PR!
- Added engine::GetQueueSize(). Many thanks to Emil Rakhimov for the PR!
- Fixed std::int64_t narrowing to std::int32_t in Kafka. Many thanks to Mikhail Romaneev for the PR!
- Chaotic now validates array type before parsing to chaotic::Array. Many thanks to Konstantin Goncharik for the PR!
- Allow dynamic selection of response streaming. Many thanks to Sergei Fedorov for the PR!
- Added support for mongo::options::Hint for storages::mongo::operations::Delete, storages::mongo::bulk_ops::Update and storages::mongo::bulk_ops::Delete.
- storages::Query now used in ClickHouse, MySQL and SQLite drivers, making it possible to directly use result of generation external SQL/YQL files. storages::Query::Statement() and storages::Query::GetName() are now deprecated and will be removed soon.
gRPC:
- gRPC clients now have ugrpc::client::Reader, ugrpc::client::Writer and ugrpc::client::ReaderWriter names to match ugrpc::server names.
- Fixed data race in bidirectional stream client.
- Optimized clients and server for cases when logging for handler or client is disabled.
- Multiple optimizations for the gRPC logging. Up to 150 times faster logging in edge cases.
Other Optimizations:
- utils::zstring_view is now used throughout the userver to avoid temporary std::string constructions. Affected components include PostgreSQL driver, HTTP clients, Chaotic, universal and Kafka.
- URL utils for schema, query and fragment extraction now have overloads that return std::string_view and avoid dynamic memory allocations.
- Properly make date header for S3 API. This avoids rare cases of CPU-intensive thread blocking. Many thanks to Daniil Shvalov for the PR.
- Size of storages::redis::ReplyData dropped down to 32 bytes from 64 bytes, leading to less memory usage for responses with long arrays.
- Optimized hex logging in Kafka. Many thanks to Mikhail Romaneev for the PR!
Documentation and Diagnostics:
- RealMedium sample was modernized and cleaned up. Now it can be used as a sample. Many thanks to Liiizak for multiple PRs!
- Updated build instructions. Many thanks to h1laryz for the PR!
- Clarified http::ContentType parsing errors.
- More clarifications on engine::Task interruptions for concurrency primitives.
tools/*became samples and were moved into samples/. Tests were added.- "task_processor" and "fs_task_processor" static options now have proper defaults. See Guide on TaskProcessor Usage
- Documented log sinks and formats more thoroughly. See Logging and Tracing.
- Simplified storages::redis::Client *scan commands usage, added samples and more descriptions.
- More docs and samples (and functions) for the userver/http/url.hpp.
- ODBC driver foundation gained an improved error handling and connection pool. Many thanks to Alexey for the PR!
- Added gRPC server middleware implementation, gRPC client middleware implementation and Serving Static Content and Dynamic Web Pages documentation pages.
- Updated Dynamic config with info on how to use kill switches in Functional service tests (testsuite).
Build:
CMAKE_CXX_STANDARDwas set to to 20 by default. C++17 still supported.- Added preliminary CMake configure support on Windows. Many thanks to Alex for the PR.
- Added cmake-format config and formatted the CMake files. Many thanks to Dzmitry Ivaniuk for the PR!
- Added
with_redis_tlsflag for support Redis TLS in Conan. Many thanks to Mikhail Romaneev for the PR! userver_testsuite_add()CMake function now works is used in subdirectory of a project. Many thanks to DmitriyH for the PR!
Full Changelog: v2.10...v2.11