1 Jul 2026, 14:20 UTC569 views8 reactionsread 8 August 2026 ⚙️ Optimizations and fixes
▫️ Reduced binary size across universal and related libraries by moving some definitions out of headers, reducing template/codegen bloat, and tuning debug-info generation, saving approximately 0.3–1% in tested binaries.
▫️ Optimized gRPC server to parse and serialize messages from raw grpc::ByteBuffer, allowing congestion control to reject calls before parsing unary request payloads.
▫️ Imp…
🔥8
1 Jul 2026, 14:20 UTC466 views4 reactionsread 8 August 2026 🌟 Added engine::AwaitableToken and the engine::Awaitable concept for integration with engine::WaitAny, engine::WaitAnyContext and engine::WaitAllChecked.
🌟 Replaced TryGetContextAccessor() hooks with GetAwaitableToken(). This API is now stable, you can create your own awaitables by implementing GetAwaitableToken().
🌟 Added a second stage to graceful shutdown for server http and ugrpc: after failing health checks, lis…
🔥4
1 Jul 2026, 14:20 UTC476 views9 reactionsread 8 August 2026 Photo
#release 3.1
🌟 chaotic OpenAPI generator: Added comprehensive OpenAPI code generation for server-side HTTP handlers and corresponding config.yaml. Support with multiple content types, request body parsing, logging customization, and URL masking for sensitive parameters.
🌟 Added ScyllaDB driver: asynchronous C++ driver for ScyllaDB and Apache Cassandra with full CQL support, typed operations, and lightweight transact…
🔥9
20 Apr 2026, 12:52 UTC≈1,140 views13 reactionsread 8 August 2026 Photo
#release 3.0
Big new features since the v2.0:
🌟 Chaotic - codegen parsers and serializers by JSON schema
🌟 Easy - library for single file prototyping.
🌟 Improved Kafka driver is now widely used and has Platinum Tier.
🌟 OpenTelemetry Protocol (OTLP) support.
🌟 Logging format customization, including JSON logging.
🌟 Numerous build improvements, including MacOS, Gentoo, Arch, Alpine. Improved Conan support.
🌟 SQLite Dr…
🔥13
20 Apr 2026, 12:52 UTC≈1,400 views9 reactionsread 8 August 2026 ⚙️ Detailed diff against v2.16:
▫️ Support of C++17 is removed.
▫️ Updated moodycamel to 1.0.5. Many thanks to Vasily Sviridov for the PRs.
▫️ Supported ydb::TableClient::RetryTx handle for execution lambda in a transaction with automatic retries.
▫️ MultiIndex LRU Container is now optimized and ready to use. Many thanks to hzhdlrp for the contributions!
▫️ Added heartbeat and message headers support for RabbitMQ. Ma…
🔥9
2 Apr 2026, 11:40 UTC≈1,140 views12 reactionsread 8 August 2026 ⚙️ Optimizations and fixes
▫️ New engine::WaitAnyContext (engine::MakeWaitAny) and engine::WaitAllChecked waiting primitives optimized for usage in loops.
▫️ Kafka: Reuse consumer after a user exception.
▫️ Redis: Optimized statistics storage - removed most of per-shard and per-instance statistics that are rarely used to save memory, CPU and network bandwidth.
▫️ Prevent an unnecessary copy inside the ServerImpl::Wri…
🔥6❤3🎉3
2 Apr 2026, 11:40 UTC944 views7 reactionsread 8 August 2026 Photo
#release 2.16
🌟 Support of C++17 is deprecated and will be removed in one on the next releases. C++20 is the default for userver for quite some time. Use C++20 or even a more modern C++.
🌟 New readiness notification flow for tasks, futures, events and other awaitable objects. It provides a lightweight and efficient framework for more efficient implementation of waiting objects/methods like engine::WaitAny, engine::…
🔥6🎉1
28 Jan 2026, 09:23 UTC≈1,540 views14 reactionsread 8 August 2026 Photo
#release 2.15
🌟 Support of C++17 is deprecated and will be removed in one on the next releases. C++20 is the default for userver for quite some time. Use C++20 or even a more modern C++.
🌟 Deadlock detector is now enabled by default in testsuite runs. The behavior can be changed by overriding the pytest_userver::plugins::config::userver_deadlock_detector_mode() fixture.
🌟 Redis driver internals were rewritten to rem…
🔥10❤2👍2
28 Jan 2026, 09:23 UTC≈1,950 views18 reactionsread 8 August 2026 ⚙️ Optimizations
▫️Drastically reduced memory usage by components::Redis statistics/metrics in case of network topology changes or multiple Valkey/Redis nodes going down.
▫️Stacktrace capturing via boost::stacktrace / std::stacktrace in Boost.Context became more than x50 faster on LLVM version of libunwind. Other unwinding libraries could have also gained profit.
🛠 Misc
▫️More docs for the USERVER_LOG_DYNAMIC_DEBUG,…
🔥18
24 Dec 2025, 11:30 UTC≈1,510 views10 reactionsread 8 August 2026 Photo
#release 2.14
🌟 Added a ugrpc::RichStatus builder for creating rich gRPC error statuses with structured details following Google's error model
🌟 Added a utils::statistics::RegisterWriterScope for safe and easy registration of statistics.
🌟 No more need to call CacheUpdateTrait::StartPeriodicUpdates() from your caching components.
🌟 Implemented a Multi Index LRU container, thanks to hzhdlrp.
🌟 Statement name is now l…
🔥10
24 Dec 2025, 11:30 UTC≈1,340 views24 reactionsread 8 August 2026 ▫️Kafka is now more accurate in computing message time spent in kafka::ConsumerComponent queue.
▫️utils::statistics::RecentPeriod now does not lose precision under heavy contention.
▫️Added functionality to Dump coroutines in runtime
▫️Added DeadlockDetector that can be enabled via coro_pool.deadlock_detector option in components::ManagerControllerComponent.
▫️Added storages::mongo::Transaction
▫️Added server::middle…
🔥20🎄3👍1
23 Oct 2025, 10:10 UTC≈2,060 views12 reactionsread 8 August 2026 Photo
#release 2.13
🌟 Recursive subscriptions on dynamic configs now work without deadlocks.
🌟 Added virtual method server::handlers::HttpHandlerBase::GetUrlForLogging() for custom URL logging.
🌟 Support parsing of HTTP keys without =, i.e. /endpoint?key1&key2. Many thanks to Norlin for the PR!
🌟 Dots in tag keys of logs and spans are now not changed to underscores. HTTP client/server spans are now written according to OT…
❤🔥12
Showing the 12 most recent of 20 posts we hold for @userver_news. View and reaction counts are the latest single reading for each post, not a live figure, and a recent post is still accumulating both. A view count marked ≈ was rounded by Telegram before we ever saw it — t.me prints views in full below 1,000 and to three significant figures above, so ≈1,200,000 means somewhere between 1,150,000 and 1,249,999. Unmarked counts are exact. Text is reproduced from the public post preview and truncated for length.