Github   Telegram
Loading...
Searching...
No Matches
Roadmap and Changelog

We keep an eye on all the issues and feature requests at the github.com/userver-framework, at the English-speaking and Russian-speaking Telegram support chats. All the good ideas are discussed, big and important ones go to the Roadmap. We also have our in-house feature requests, those could be also found in Roadmap.

Important or interesting features go to the changelog as they get implemented. Note that there's also a Security Changelog.

Changelog news also go to the userver framework news channel.

Roadmap

Plans for the first release

  • Add web interface to the uservice-dynconf
    • ✓ Add component to serve static pages
  • ✓ Migrate userver-only related CI checks to the GithubCI
  • Migrate to upstream versions of formatters
  • ✓ Improve documentation
    • ✓ Improve Feature Comparison with other Frameworks
    • ✓ Add TCP acceptor sample
    • ✓ Add gRPC testsuite mock sample
    • ✓ Add reference sections for the Python fixtures
    • ✓ Add HTTP authentication sample
  • ✓ Improve experience with metrics
    • ✓ Add Prometheus metrics format
    • ✓ Add Graphite metrics format
    • ✓ Provide a modern simple interface to write metrics
  • Add chaos tests for drivers
    • ✓ TCP chaos proxy implemented
    • ✓ UDP chaos proxy implemented
    • ✓ Mongo
    • ✓ HTTP Client
    • DNS resolver
    • Redis
    • PostgreSQL
    • Clickhouse
    • gRPC
  • Enable PostgreSQL pipelining
  • Implement and enable Deadline Propagation
    • ✓ HTTP Client
    • Mongo
    • PostgreSQL
    • Redis
    • gRPC
  • ✓ Implement streaming API for the HTTP
  • Add basic Kafka driver.

Changelog

Beta (February 2023)

  • tracing::Span now logs the location where it was constructed.
  • Now the string<>enum utils::TrivialBiMap mappings could be used within storages::postgres::io::CppToUserPg. See uPg: Mapping a C++ enum to PostgreSQL enum type. for more info.
  • components::Logging now provides options for configuring the task processors to do the asynchronous logging.
  • Redis driver now supports the geosearch and unlink commands.
  • DNS resolvers were switched to asynchronous mode by default.
  • UDP chaos proxy was implemented, see chaos.UdpGate
  • C++ Standard now could be explicitly controlled via the CMake flag CMAKE_CXX_STANDARD.
  • Optimizations:
    • Many metrics were moved to a faster utils::statistics::Writer.
    • gRPC now allows concurrent execution of 1 Read and 1 Write on the same Bidirectional stream.
  • Python dependencies for build are now automatically installed, thanks to Pavel Shuvalov for the PR!
  • Added a Conan option to disable LTO, thanks to Oleg Burchakov for the PR!
  • Diagnostic messages and docs were improved, including:
    • In case of a typo in static config name the fixed name is now reported
    • error-injection static option for components::Postgres was documented
    • Fixed typos, thanks to Ch0p1k3 for the PR!

Beta (January 2023)

  • Unknown/mistyped values in static configs are now reported by default. Static configs validation now could use minimum and maximum.
  • gRPC clients now have ReadAsync() functions, that return a future and allow to request multiple results from different RPCs at the same moment.
  • ugrpc::server::Server now can return a vector of gRPC service names.
  • To aid in asynchronous drivers development the engine::io::FdPoller is now a part of the public API.
  • Added a blazing fast utils::TrivialBiMap.
  • HTTP Streaming is now considered production ready (docs to come soon).
  • Testsuite fixtures were improved:
  • Optimizations:
    • Now the engine does less random number generator invocations for HTTP handling.
    • Logging of tracing::Span became x2 faster
    • IntrusiveMpscQueue is now used for engine internals, IO operations now schedule faster.
    • Writing HTTP headers became faster, thanks to Ivan Trofimov for the PR.
    • utils::TrivialBiMap is now used wherever it is possible.
  • Metrics:
  • FreeBSD build fixes.
  • Multiple documentation and diagnostics improvements.
  • Added ToStringView(HttpMethod) function, thanks to Фёдор Барков for the PR.
  • Added more engine::Yield tests, thanks to Ivan Trofimov for the PR.

Beta (December 2022)

  • Added logs colorization to the testsuite plugins, thanks to Victor Makarov for the PR.
  • Multiple big improvements in framework testing:
    • improved unit tests re-entrance
    • multiple new chaos and metrics tests
    • improved testsuite diagnostics
  • Added a Custom Authorization/Authentication via PostgreSQL sample.
  • Added an option set_tracing_headers to disable HTTP tracing headers, thanks to Ivan Trofimov for the PR.
  • Fixed race in RabbitMQ sample, thanks to Ivan Trofimov for the PR.
  • Fixed PostgreSQL testing at GithubCI, thanks to Ivan Trofimov for the PR.

Beta (November 2022)

Beta (October 2022)

  • Experimental support for Conan packaging, many thanks to Anton for the PR.
  • Prometheus and Graphite metrics formats were added, see Service Statistics and Metrics (Prometheus/Graphite/...) for details.
  • Initial support for chaos testing was added, see Chaos Testing for more info.
  • Generic Escape implementation for ranges was added to Clickhouse, thanks to Ivan Trofimov for the PR.
  • TLS/SSL support for Redis.
  • Multiple optimizations from Ivan Trofimov:
    • utils::datetime::WallCoarseClock and its usage in the framework core;
    • HTTP "Date" header caching;
    • Significant reduction of syscalls count during any recv operations;
    • Server::GetRequestsView not initialized if it is not required;
    • utils::encoding::ToHex became faster;
    • Marking response as ready became faster.
  • Better diagnostics for CoroPool initialization failure, thanks to Ivan Trofimov for the PR.
  • New handler server::handlers::OnLogRotate.
  • Multiple optimizations, including:
    • Faster async cancellations for PostgreSQL;
    • Avoid using dynamic_cast in multiple places;
    • Avoid calling std::chrono::steady_clock::now() in multiple places.
  • gRPC mockserver support (docs will be updated soon at gRPC client and service).
  • gRPC now provides an efficient API for async execution of requests without additional utils::Async invocations.
  • Build fixes for older platforms, thanks to Yuri Bogomolov for the PR.
  • components::Logging now can output logs to UNIX sockets.
  • Now the "help wanted" issues at github have additional tags "good first issue" and "big", to help you to choose between a good starting issue and a big feature. See Issues, feature and pull requests, releases for more info.

Beta (September 2022)

  • Ivan Trofimov implemented the RabbitMQ driver.
  • Added navigation to the next and previous page in docs, thanks to multiple feature requests in Telegram support chat.
  • Improved Task::Detach docs and added recomendation to use concurrent::BackgroundTaskStorage instead, thanks to Ivan Trofimov for the bugreport.
  • Added start- targets for the samples, to simplify experimenting with them.
  • Docs now support dark theme out ot the box.
  • Fixed CMake issue with -DUSERVER_FEATURE_TESTSUITE=0, thanks to Георгий Попов for the bugreport.
  • Fixed build on Arch Linux, thanks to Mikhail K. for the bugreport.
  • Fixed building in virtual environment on Windows, thanks to sabudilovskiy for the bug report.
  • Fixed building with -std=gnu++20, thanks to Георгий Попов for the PR.
  • Improved package version detection in CMake via pkg-config.
  • Added a USERVER_FEATURE_UTEST flag for disabling utest and ubench target builds, thanks to Anton for the PR.
  • Simplified gRPC component registration and usage.
  • Added an ability to turn on gRPCs ChannelZ.
  • Added evalsha/script load commands for Redis driver.

Beta (August 2022)

Pre anounce (May-Jul 2022)