2.12
Changes since v2.11
-
Added infrastructure to detect IO-bound operations in transactions. See
enable_trx_trackerstatic config option into components::ManagerControllerComponent and userver/utils/trx_tracker.hpp. The detection is turned on by default and is used in HTTP clients and gRPC for PostgreSQL transactions. -
Added support for separate logs and traces endpoints into OpenTelemetry. See
logs-endpointandtracing-endpointstatic config options of the otlp::LoggerComponent. -
Implemented non blocking receive for engine::io::TlsWrapper. Many thanks to Denis Razinkin for the PR!
-
Added server::websocket::WebSocketConnection now has
SendPing()andNotAnsweredSequentialPingsCount()functions for initiating pings on server side. -
Created userver mirror repo at SourceCraft.
-
Kafka now supports SSL authentication. Many thanks to Timur Yalymov for the PR!
-
Fixed UB in WebSockets. Many thanks to Denis Razinkin for the PR!
-
Chaotic now handles
x-usrv-cpp-container: std::unordered_setwithformat: uuid;x-usrv-cpp-type: userver::utils::StrongTypedef<my::CustomString, std::string>;std::intXX_t -
Crypto part of the
userver::universalnow supports work with multiplestd::string_views. Thanks to Dmitry Sorokin for vibe-coding the initial version of PR. -
Google Benchmark ASLR-disabling feature enabled if supported. Many thanks to Konstantin Goncharik for the PR!
-
Simplified third-party types usage in chaotic.
userver_target_generate_chaoticCMake function now has aLINK_TARGETSparameter to provide targets with paths to chaotic serializers. For example withLINK_TARGETS userver::postgresqlchaotic would find theuserver/postgresql/include/userver/chaotic/io/userver/storages/postgres/time_point_tz.hppheader with storages::postgres::TimePointTz converters. -
gRPC and Protobuf
- Implemented retries. See gRPC Timeouts and Retries for more info.
- ugrpc::client::ClientFactoryComponent now can be customized via
ssl-credentials-options. Many thanks to aklyuchev86 for the PR! - decimal64::Decimal::FromStringPermissive() now understands format with exponent, which makes it compatible with Protobuf well-known Decimal types.
-
Database drivers
- Implemented storages::redis::Client::GenericCommand() for execution of custom commands.
- Redis now supports
sentinel_passwordstorages::secdist::Secdist option for authorization on sentinels with password along withpasswordauthorization on shards. Many thanks to Tikhon Sergienko for the PR! - Implemented storages::mongo::Collection::Distinct() command.
- Implemented storages::clickhouse::ParameterStore. Many thanks to Alexey Medvedev for the PR!
update-periodfor components::Secdist is now set to10s. As a result all the databases now automatically recreate connections on connection data change in SecDist.- Implemented parsing of C++
enuminto PostgreSQL text forenumswithParse()andToString()functions. See uPg: PostgreSQL user type mappings for more info.
-
Optimizations
- concurrent::BackgroundTaskStorage was optimized with striped counters. Detaching a task now takes ~6% of the whole CPU usage of the detaching benchmark (before the optimizations it was ~46%).
- storages::Query now avoids dynamic initialization when constructed from storages::Query::NameLiteral. As a result variables generated with CMake
userver_add_sql_libraryfunction are now not affected by initialization order fiasco issues and can be safely used in any static or global variable. Dynamic memory allocations are now avoided for the above cases. - utils::zstring_view now used for Kafka topic names avoiding temporary string constructions.
-
Build
- The oldest supported Python is now Python 3.9.
- Protobuf 6.x.y is now supported. Thanks to halfdarkangel for the PR!
- Supported by-component installation in CPack. See
USERVER_INSTALL_MULTIPACKAGECMake option for a way to enable the feature. - Optimized compilation time for the userver/utils/periodic_task.hpp header by removing inclusion of 7 heavy headers.
- Improved build times by disabling modules scan. Many thanks to Konstantin Goncharik for the PR!
- Builds are now tested on Fedora.
- Bumped Kafka version to 4.0 in CI checks. Many thanks to MichaelKab for PR!
-
Documentation and Diagnostics:
- Version change widget was rewritten to avoid versions hard-code. Many thanks to Lone-Marshal for the PR!
- Added docs on Distro package maintainers roles.
- Added more information on metadata usage into gRPC
USERVER_GTEST_ENABLE_STACK_USAGE_MONITORenvironment variable name was changed toUSERVER_ENABLE_STACK_USAGE_MONITOR.USERVER_ENABLE_STACK_USAGE_MONITORis now usable not only in unit-tests, but in all the userver based applications and services.- Redis driver now does much more logging on cluster topology change to ease the cluster issues debugging.
- Dynamic config pages with description are now generated from schemes.
Full Changelog: v2.11...v2.12