From e1fbef56a94052f37e9fcde7d6fb91590431d7d2 Mon Sep 17 00:00:00 2001 From: antoshkka Date: Wed, 20 Sep 2023 20:09:22 +0300 Subject: [PATCH] feat docs: add release notes and changelog for v1.0.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tests: на прод не влияет --- README.md | 14 +-- mysql/include/userver/storages/mysql.hpp | 6 +- .../userver/storages/postgres/postgres.hpp | 6 +- rabbitmq/include/userver/rabbitmq.hpp | 6 +- scripts/docs/en/landing.md | 2 +- .../docs/en/userver/framework_comparison.md | 5 +- scripts/docs/en/userver/grpc.md | 16 +-- scripts/docs/en/userver/http_server.md | 25 ++-- scripts/docs/en/userver/mongodb.md | 4 +- scripts/docs/en/userver/redis.md | 10 +- .../docs/en/userver/roadmap_and_changelog.md | 116 ++++++++++++------ 11 files changed, 130 insertions(+), 80 deletions(-) diff --git a/README.md b/README.md index 82dfcb5ff36d..3a263b36d218 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # userver [](https://userver.tech/) -| Service Templates | Status | -|------------------------|-----| -| [Core](https://github.com/userver-framework/service_template) | [![CI](https://github.com/userver-framework/service_template/actions/workflows/ci.yml/badge.svg)](https://github.com/userver-framework/service_template/actions/workflows/ci.yml) [![Docker build](https://github.com/userver-framework/service_template/actions/workflows/docker.yaml/badge.svg)](https://github.com/userver-framework/service_template/actions/workflows/docker.yaml) | -| [PostgreSQL](https://github.com/userver-framework/pg_service_template) | [![CI](https://github.com/userver-framework/pg_service_template/actions/workflows/ci.yml/badge.svg)](https://github.com/userver-framework/pg_service_template/actions/workflows/ci.yml) [![Docker build](https://github.com/userver-framework/pg_service_template/actions/workflows/docker.yaml/badge.svg)](https://github.com/userver-framework/pg_service_template/actions/workflows/docker.yaml) | -| [gRPC+PostgreSQL](https://github.com/userver-framework/pg_grpc_service_template) | [![CI](https://github.com/userver-framework/pg_grpc_service_template/actions/workflows/ci.yml/badge.svg)](https://github.com/userver-framework/pg_grpc_service_template/actions/workflows/ci.yml) [![Docker build](https://github.com/userver-framework/pg_grpc_service_template/actions/workflows/docker.yaml/badge.svg)](https://github.com/userver-framework/pg_grpc_service_template/actions/workflows/docker.yaml) | +| Service Templates | Develop / Green Trunk | v1.0 | +|------------------------|-----|-----| +| Core: | [![CI](https://github.com/userver-framework/service_template/actions/workflows/ci.yml/badge.svg) ![Docker build](https://github.com/userver-framework/service_template/actions/workflows/docker.yaml/badge.svg)](https://github.com/userver-framework/service_template/) | [[➚]](https://github.com/userver-framework/service_template/tree/v1.0.x) | +| PostgreSQL: | [![CI](https://github.com/userver-framework/pg_service_template/actions/workflows/ci.yml/badge.svg) ![Docker build](https://github.com/userver-framework/pg_service_template/actions/workflows/docker.yaml/badge.svg)](https://github.com/userver-framework/pg_service_template/) | [[➚]](https://github.com/userver-framework/pg_service_template/tree/v1.0.x) | +| gRPC+PostgreSQL: | [![CI](https://github.com/userver-framework/pg_grpc_service_template/actions/workflows/ci.yml/badge.svg) ![Docker build](https://github.com/userver-framework/pg_grpc_service_template/actions/workflows/docker.yaml/badge.svg)](https://github.com/userver-framework/pg_grpc_service_template) | [[➚]](https://github.com/userver-framework/pg_grpc_service_template/tree/v1.0.x) | **userver** is an open source asynchronous framework with a rich set of abstractions for fast and comfortable creation of C++ microservices, services and utilities. @@ -37,8 +37,8 @@ or [Habr](https://habr.com/post/674902) (Russian). * Efficient asynchronous drivers for databases (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL/MariaDB (experimental) ...) and data transfer protocols - (HTTP, GRPC, AMQP 0-9-1 (experimental), TCP, TLS ...), tasks construction and - cancellation. + (HTTP, gRPC, AMQP 0-9-1 (experimental), TCP, TLS, WebSocket ...), tasks + construction and cancellation. * Rich set of high-level components for caches, tasks, distributed locking, logging, tracing, statistics, metrics, JSON/YAML/BSON. * Functionality to change the service configuration on-the-fly. diff --git a/mysql/include/userver/storages/mysql.hpp b/mysql/include/userver/storages/mysql.hpp index 0a6e38026bb4..1e9513c2383a 100644 --- a/mysql/include/userver/storages/mysql.hpp +++ b/mysql/include/userver/storages/mysql.hpp @@ -12,11 +12,11 @@ // clang-format off /// @page mysql_driver MySQL Driver - EXPERIMENTAL /// -/// **Disclaimer**: current state of the driver is highly experimental, and +/// **Disclaimer**: current state of the driver is experimental, and /// although APIs are not likely to change drastically, some adjustments may be /// made in the future. -/// Please also keep in mind that this driver is a community-based effort and is -/// not backed by Yandex expertise nor by Yandex-scale production usage. +/// Please also keep in mind that this driver is +/// not backed by Yandex-scale production usage. /// /// 🐙 **userver** provides access to MySQL databases servers via /// components::MySQL. The uMySQL driver is asynchronous, and with it one can diff --git a/postgresql/include/userver/storages/postgres/postgres.hpp b/postgresql/include/userver/storages/postgres/postgres.hpp index 0e3e59ffb59a..311db9e12844 100644 --- a/postgresql/include/userver/storages/postgres/postgres.hpp +++ b/postgresql/include/userver/storages/postgres/postgres.hpp @@ -26,15 +26,15 @@ /// separately from the query; /// - Automatic PgaaS topology discovery; /// - Selecting query target (master/slave); -/// - Connection failover +/// - Connection failover; /// - Transaction support; /// - Variadic template query parameter passing; /// - Query result extraction to C++ types; /// - Binary protocol usage for communication; /// - Portals for effective background cache updates; /// - Queries pipelining; -/// - Mapping PostgreSQL user types to C++ types. -/// - @ref scripts/docs/en/userver/deadline_propagation.md +/// - Mapping PostgreSQL user types to C++ types; +/// - @ref scripts/docs/en/userver/deadline_propagation.md . /// /// @section toc More information /// - For configuration see components::Postgres diff --git a/rabbitmq/include/userver/rabbitmq.hpp b/rabbitmq/include/userver/rabbitmq.hpp index 91f4d5e21631..1ebe9e93070a 100644 --- a/rabbitmq/include/userver/rabbitmq.hpp +++ b/rabbitmq/include/userver/rabbitmq.hpp @@ -17,11 +17,11 @@ /// @page rabbitmq_driver RabbitMQ (AMQP 0-9-1) - EXPERIMENTAL /// -/// Disclaimer: current state of the driver is highly experimental, and +/// Disclaimer: current state of the driver is experimental, and /// although APIs are not likely to change drastically, some adjustments may be /// made in the future. -/// Please also keep in mind that this driver is a community-based effort and is -/// not backed by Yandex expertise nor by Yandex-scale production usage. +/// Please also keep in mind that this driver is +/// not backed by Yandex-scale production usage. /// /// 🐙 **userver** provides access to RabbitMQ servers via /// components::RabbitMQ. The uRabbitMQ driver is asynchronous, it suspends diff --git a/scripts/docs/en/landing.md b/scripts/docs/en/landing.md index 610b921f4078..3916e549d909 100644 --- a/scripts/docs/en/landing.md +++ b/scripts/docs/en/landing.md @@ -68,7 +68,7 @@ developers:
Efficient asynchronous drivers for databases (MongoDB, PostgreSQL, MySQL/MariaDB (experimental), Redis, ClickHouse, - ...) and data transfer protocols (HTTP, GRPC, TCP, AMQP-0.9.1 (experimental), ...), tasks + ...) and data transfer protocols (HTTP, WEbSockets, gRPC, TCP, AMQP-0.9.1 (experimental), ...), tasks construction and cancellation.
diff --git a/scripts/docs/en/userver/framework_comparison.md b/scripts/docs/en/userver/framework_comparison.md index 9035ef15d4cb..53356f4dcdef 100644 --- a/scripts/docs/en/userver/framework_comparison.md +++ b/scripts/docs/en/userver/framework_comparison.md @@ -44,7 +44,8 @@ use ❌ and ❓ respectively. | Async TCP/UDP | ✔️ @ref engine::io::Socket "[↗]" | ✔️ | ❓ | ✔️ [[↗]][tokio-net] | ❌ | | Async TLS Socket | ✔️ @ref engine::io::TlsWrapper "[↗]" | ✔️ | ❓ | ± third-party libs | ❌ | | Async HTTPS client | ✔️ @ref clients::http::Client "[↗]" | ✔️ | ❓ | ✔️ | ❓ | -| Async HTTPS server | ❌ | ❓ | ❓ | ✔️ | ❓ | +| Async HTTPS server | ✔️ @ref components::Server "[↗]" | ❓ | ❓ | ✔️ | ❓ | +| WebSockets Server | ✔️ @ref components::Server "[↗]" | ± third-party libs | ❌ [[↗]][dapr-websock] | ± third-party libs | ✔️ [[↗]][drogon] | | Deadlines and Cancellations | ✔️ | ❓ | ❓ | ❓ | ± [[↗]][drog-timeout] | | Retries and Load Balancing | ✔️ | ✔️ [[↗]][gom-features] | ✔️ | ❓ |❓ | @@ -59,8 +60,10 @@ use ❌ and ❓ respectively. [dapr-postgre]: https://docs.dapr.io/reference/components-reference/supported-state-stores/setup-postgresql/ [dapr-mysql]: https://docs.dapr.io/reference/components-reference/supported-state-stores/setup-mysql/ [dapr-distlock]: https://github.com/dapr/dapr/issues/3549 +[dapr-websock]: https://github.com/dapr/dapr/issues/5766 [actix-test]: https://actix.rs/docs/testing/ [acti-db]: https://actix.rs/docs/databases/ +[drogon]: https://github.com/drogonframework/drogon [drog-testig]: https://drogon.docsforge.com/master/testing-framework/ [drog-http-client]: https://drogon.docsforge.com/master/api/drogon/HttpClient/ [drog-db]: https://drogon.docsforge.com/master/database-general/ diff --git a/scripts/docs/en/userver/grpc.md b/scripts/docs/en/userver/grpc.md index 11e6d70ae15b..a4284dcfe00c 100644 --- a/scripts/docs/en/userver/grpc.md +++ b/scripts/docs/en/userver/grpc.md @@ -14,14 +14,14 @@ See also: ## Capabilities -* Creating asynchronous gRPC clients and services -* Forwarding gRPC Core logs to userver logs -* Caching and reusing connections (**TODO**) -* Timeouts and retries of requests (**TODO**) -* Collection of metrics on driver usage -* Cancellation support -* Automatic authentication using middlewares -* @ref scripts/docs/en/userver/deadline_propagation.md +* Creating asynchronous gRPC clients and services; +* Forwarding gRPC Core logs to userver logs; +* Caching and reusing connections; +* Timeouts; +* Collection of metrics on driver usage; +* Cancellation support; +* Automatic authentication using middlewares; +* @ref scripts/docs/en/userver/deadline_propagation.md . ## Installation diff --git a/scripts/docs/en/userver/http_server.md b/scripts/docs/en/userver/http_server.md index 53abcf702053..ec46352b3e2a 100644 --- a/scripts/docs/en/userver/http_server.md +++ b/scripts/docs/en/userver/http_server.md @@ -6,18 +6,19 @@ ## Capabilities -* HTTP 1.1/1.0 support -* HTTPS -* WebSocket -* Body decompression with "Content-Encoding: gzip" -* HTTP pipelining -* Custom authorization @ref scripts/docs/en/userver/tutorial/auth_postgres.md -* Deadline propagation -* Congestion control -* Rate limiting -* Requests-in-flight limiting -* Body size / headers count / URL length / etc. limits -* @ref scripts/docs/en/userver/deadline_propagation.md +* HTTP 1.1/1.0 support; +* HTTPS; +* WebSocket; +* Body decompression with "Content-Encoding: gzip"; +* HTTP pipelining; +* Custom authorization @ref scripts/docs/en/userver/tutorial/auth_postgres.md ; +* Congestion control; +* Rate limiting; +* Requests-in-flight limiting; +* Requests-in-flight inspection via server::handlers::InspectRequests ; +* Body size / headers count / URL length / etc. limits; +* Streaming; +* @ref scripts/docs/en/userver/deadline_propagation.md . ## Streaming API diff --git a/scripts/docs/en/userver/mongodb.md b/scripts/docs/en/userver/mongodb.md index 04538dfeb3da..635e2a3b9600 100644 --- a/scripts/docs/en/userver/mongodb.md +++ b/scripts/docs/en/userver/mongodb.md @@ -4,13 +4,15 @@ The mongo asynchronous driver provides an interface to work with MongoDB databases and the BSON format. ## Main features + * Building and reading BSON documents with support for most of the C++ types; * Support for basic operations with collections via storages::mongo::Collection; * Support for bulk operations; * Dynamic management of database sets; * Aggregation support; +* Timeouts; * Congestion control; -* @ref scripts/docs/en/userver/deadline_propagation.md +* @ref scripts/docs/en/userver/deadline_propagation.md . ## Metrics diff --git a/scripts/docs/en/userver/redis.md b/scripts/docs/en/userver/redis.md index 0dedb0a72f11..4ae479d025d5 100644 --- a/scripts/docs/en/userver/redis.md +++ b/scripts/docs/en/userver/redis.md @@ -9,11 +9,11 @@ versa. ## Main features -* Convenient methods for Redis commands returning proper C++ types; -* Support for bulk operations (MGET, MSET, etc); driver splits data into smaller - chunks if necessary to increase server responsiveness; -* Support for different strategies of choosing the most suitable Redis instance; -* Request timeouts management with transparent retries; +* Convenient methods for Redis commands returning proper C++ types +* Support for bulk operations (MGET, MSET, etc). Driver splits data into smaller + chunks if necessary to increase server responsiveness +* Support for different strategies of choosing the most suitable Redis instance +* Request timeouts management with transparent retries * @ref scripts/docs/en/userver/deadline_propagation.md * Cluster autotopology diff --git a/scripts/docs/en/userver/roadmap_and_changelog.md b/scripts/docs/en/userver/roadmap_and_changelog.md index eb806b6e502f..dc0d984f43b4 100644 --- a/scripts/docs/en/userver/roadmap_and_changelog.md +++ b/scripts/docs/en/userver/roadmap_and_changelog.md @@ -16,41 +16,6 @@ Changelog news also go to the ## Roadmap - -### Plans for the first release (in a two months!) - -* ✓ Add component to serve static pages -* ✓ Migrate userver-only related CI checks to the GithubCI -* ✓ Improve documentation - * ✓ Improve @ref scripts/docs/en/userver/framework_comparison.md - * ✓ 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 - * ✓ HTTP Server - * ✓ Mongo - * ✓ PostgreSQL - * ✓ Redis - * ✓ gRPC -* ✓ Implement streaming API for the HTTP - ### Plans for the next release * Add web interface to the [uservice-dynconf](https://github.com/userver-framework/uservice-dynconf) @@ -61,6 +26,84 @@ Changelog news also go to the ## Changelog +### Release v1.0.0 + +Big new features since the Beta announcement: + +* Implemented WebSockets server +* Added MySQL driver +* RabbitMQ drived was added +* Implemented TLS server +* Enabled PostgreSQL pipelining +* Implemented and enabled Deadline Propagation +* Improved experience with metrics. Added Prometheus and Graphite metric + formats. Provided a modern simple interface to write and test metrics. +* Added chaos tests for drivers +* Implemented streaming API for the HTTP +* Improved documentation, added more samples and descriptions, improved search. +* Numerous optimizations. +* Numerous build improvements, including Conan and Docker support. + +Optimized and improved features that were available at the Beta announcement: + +* gRPC client and server +* Mongo driver +* Redis driver +* PostgreSQL +* HTTP server and client +* Logging and Tracing +* ... and many other features. + +Detailed descriptions could be found below. + + +### Beta (September 2023) + +* WebSockets server and TLS server are now implemented as part of the + @ref scripts/docs/en/userver/http_server.md "HTTP server" + +* PostgreSQL pipelining is now implemented and turned on by default, leading to + improved response times. + +* @ref scripts/docs/en/userver/mongodb.md "Mongo Congestion Control" + is implemented and turned on by default, leading to better stability of the + service in case of high load on database. + +* Initial logger is now initialized from the component config, leading to + a more simple code and setup. The `--initial-logger` option now does nothing + and will be removed soon. + +* Added a @ref scripts/docs/en/userver/functional_testing.md "`userver_testsuite_add_simple()`" + CMake function to simplify testsuite CMake configuration. + +* Expanded list of HTTP codes, thanks to [Vladimir Popov](https://github.com/Liteskarr) + for the PR! + +* Projects from [Yandex Schools](https://academy.yandex.ru/schools) were updated + by the original authors. Thanks to + [bshirokov](https://github.com/bshirokov), + [Almaz Shagiev](https://github.com/bashkirian), + [Konstantin Antoniadi](https://github.com/KonstantinAntoniadi), + [Mingaripov Niyaz](https://github.com/mnink275), + [Ilya Golosov](https://github.com/bookWorm21) and all the participants + for the the great work and PRs! + +* Build: + * New versions of `yaml-cpp` library are now supported. Thanks to + [Nikita](https://github.com/rtkid-nik) for the bug report! + * Supported compilation with fmt 10.1.0. Thanks to + [Vladislav Nepogodin](https://github.com/vnepogodin) for the PRs! + * Fixed unused result warning. Thanks to + [Vladislav Nepogodin](https://github.com/vnepogodin) for the PR! + * Fixed use of deprecated API. Thanks to + [Vladislav Nepogodin](https://github.com/vnepogodin) for the PR! + * Fixed build with GCC-13 libstdc++. Thanks to + [Vladislav Nepogodin](https://github.com/vnepogodin) for the PR! + * Fixed MacOS Protobuf discovery. Thanks to + [Pavel Talashchenko](https://github.com/pavelbezpravel) for the PR! + * Fixed multiple other build warnings and issues. + + ### Beta (August 2023) * Deadline Propagation is now implemented and @@ -70,7 +113,8 @@ Changelog news also go to the * Documentation was redesigned by [hellenisaeva](https://github.com/hellenisaeva) and [MariaGrinchenko](https://github.com/MariaGrinchenko); new design was made up by [Fedor Alekseev](https://github.com/atlz253), - [fleshr](https://github.com/fleshr), [ZenkoWu](https://github.com/ZenkoWu), + [fleshr](https://github.com/fleshr), + [Anna Zagrebaylo](https://github.com/ZenkoWu), [Michael Talalaev](https://github.com/InfinityScripter); the whole process was managed by [Oleg Komarov](https://github.com/0GE1) with feedback from marketing specialist [makachusha](https://github.com/makachusha).