Skip to content

2.12

Choose a tag to compare

@apolukhin apolukhin released this 02 Sep 08:28

Changes since v2.11

  • Added infrastructure to detect IO-bound operations in transactions. See enable_trx_tracker static 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-endpoint and tracing-endpoint static 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() and NotAnsweredSequentialPingsCount() 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_set with format: uuid; x-usrv-cpp-type: userver::utils::StrongTypedef<my::CustomString, std::string>; std::intXX_t

  • Crypto part of the userver::universal now supports work with multiple std::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_chaotic CMake function now has a LINK_TARGETS parameter to provide targets with paths to chaotic serializers. For example with LINK_TARGETS userver::postgresql chaotic would find the userver/postgresql/include/userver/chaotic/io/userver/storages/postgres/time_point_tz.hpp header with storages::postgres::TimePointTz converters.

  • gRPC and Protobuf

  • Database drivers

  • 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_library function 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_MULTIPACKAGE CMake 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_MONITOR environment variable name was changed to USERVER_ENABLE_STACK_USAGE_MONITOR. USERVER_ENABLE_STACK_USAGE_MONITOR is 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