2.8
Changes since v2.7:
-
sharding_strategy
of the components::Redis now supports RedisStandalone configuration, that may be useful for tests or unimportant caches. Many thanks to Aleksey Ignatiev for the PR! -
kafka::Producer now has the API for sending Kafka headers. Many thanks to Mikhail Romaneev for the PR and to Fedor Lobanov for the fix!
-
kafka::ConsumerScope now has the API for receiving Kafka headers.
-
Add span events to OpenTelemetry via tracing::Span::AddEvent(). Many thanks to Dudnik Pavel for the PR.
-
Added logging::JsonString to explicitly describe in type system that a string contains loggable JSON. Many thanks to akhoroshev for the PR!
-
Deadline Propagation for PostgreSQL is now enabled by default and can be controlled via
deadline-propagation-enabled
static option of the components::Postgres. -
Testsuite now supports @pytest.mark.uservice_oneshot.
-
utils::regex now always uses a faster and safer Re2 instead of boost::regex.
-
Dynamic config
USERVER_HANDLER_STREAM_API_ENABLED
is not used any more. -
server::handlers::HttpHandlerStatic now has an
expires
static config option. -
kafka::ProducerComponent and kafka::ConsumerComponent now supprt 'SASL_PLAINTEXT' security protocol. Many thanks to Mikhail Romaneev for the PR!
-
Implemented OneOf discriminator mapping to integer and generation of
fmt::formatter
for enums in chaotic. -
kRoundRobin
load distribution in PostgreSQL is now uniform -
gRPC
- Retries are now supported and controlled via dynamic config. See ugrpc::client::Qos for more info.
- Clients and servers now use the same configuration approach for middlewares, allowing granular overrides of settings.
-
Optimizations
- Postgres driver now uses
moodycamel
queue instead ofboost::lockfree
. Up to 2 times faster retrieval of connection from pool. - utils::TrivialBiMap is used in more cases, leading to faster runtime search and minor decrease in binaries size.
- Multiple
std::string
constants were replaced withconstinit
types, leading to faster startup times and smaller binaries. - Avoid URL copies in clients::http::Request
- Postgres driver now uses
-
Documentation and Diagnostics:
- Fixed typo at Build dependencies. Many thanks to Konstantin Goncharik for the PR.
- More docs on External SQL/YQL files
- Improved parse failure messages for Dynamic config
- Improved diagnostics for corrupted tracing::Span
- Erroneous attempt to log function address is now captured at build time.
-
Build
- Debug symbols of userver libraries are now compressed with
zstd
if the toolset supports it, leading to smaller binaries size. - Docker images now use
zstd
compression too. - Dropped CI testing on Ubuntu 20.04 which lifetime almost ended.
- Improved build type matching for installed userver. Many thanks to Aleksey Ignatiev for the PR!
- Debug symbols of userver libraries are now compressed with