Історія змін

Історія змін

Версія 10.4

Ключові зміни

  • Переклади для груп API: translations/rpc/<group>.<locale>.yaml; група важливіша за мову.
  • Переклади з розширень (translations.paths), публічний сервіс RpcLocaleNegotiator.
  • 10.4.1: IApiRouteImport — маршрути адаптера можна підключити окремо для кожної групи API.
  • 10.4.2: RpcExecutor — єдина точка входу для адаптерів (REST, MCP); rpc.post_response запускається для будь-якого джерела запиту і для кожного виконаного елемента batch.

Що врахувати

  • Частковий базовий переклад: відсутній description береться з базового перекладу мовою kernel.default_locale, а не з атрибута / PHPDoc.
  • REST-виклики тепер отримують rpc.post_response: для них запрацюють зв'язки кешу й async/notification-лістенери.

Зміни оточення

  • Без змін відносно 10.3.

Версія 10.3

Ключові зміни

  • У 2,4–4,2 раза більше запитів за секунду для звичайних викликів і документації.
  • Налаштування batch: enabled, inline-режим, ліміт паралельних процесів process_count.
  • Notifications у batch за специфікацією: без відповіді, batch лише з notifications — 204.
  • Від'єднане виконання notifications (notification.process).
  • Переклад назв і описів методів за Accept-Language, кеш документації з ETag.
  • cache.pool — власний пул кешу; ключ кешу відповідей містить реалізацію методу й версію API.
  • Токен і тіло запиту більше не передаються в командному рядку дочірніх процесів.

10.3.1

  • Знову виконуються XHR-запити (X-Requested-With: XMLHttpRequest).
  • Знову працює #[Autowire] в аргументах RPC-методу.
  • Знову застосовується #[RPC\Info(concat: …)] — перевірте клієнтів, якщо задано concat.
  • Застарілі методи знову позначаються в OpenRPC.

Що врахувати

  • batch.process_count за замовчуванням 2 — великі batch у процесному режимі стали повільнішими.
  • Terminate-лістенери застосунку тепер виконуються після RPC-запитів.
  • Змінились конструктори кількох сервісів (лише при ручному створенні чи успадкуванні); DocSecurityListener видалено.

Зміни оточення

  • ufo-tech/rpc-objects: ^3.9.1.

Версія 10.2

Ключові зміни

  • Групи API: кілька точок входу (public, internal, BFF) з власними методами, версіями й документацією; атрибут #[RPC\APIGroups].
  • Перевірка токенів для кожної групи через security.providers (сервіс-валідатор або окремий список токенів).
  • Завантажувачі маршрутів ApiYamlFileLoader / RpcYamlFileLoader для адаптерів.
  • --api-group для консолі, apiGroup для Messenger.
  • Batch на версійну адресу виконує елементи в цій версії.

Що врахувати

  • Назви маршрутів отримали префікс групи (general_ufo_rpc_api_server); старі назви лишаються аліасами для general.
  • Конструктор SimpleTokenValidator: (RpcMainConfig $rpcConfig) -> (array $tokens = []).

Зміни оточення

  • PHP: >=8.4. ufo-tech/rpc-objects: ^3.9.

Версія 10.1

Ключові зміни

  • Підтримка Symfony 8 (^7.2|^8.0).
  • JSON-RPC notifications: запит без id отримує 204 і виконується після відповіді.
  • Сувора перевірка JSON-RPC 2.0: jsonrpc ≠ "2.0" і порожній batch відхиляються з -32600.
  • Єдиний формат помилок параметрів: усі проблеми по кожному параметру в error.data.

Зміни оточення

  • PHP: >=8.3 -> >=8.4.
  • Symfony: ^7.2 -> ^7.2|^8.0; symfony/messenger став явною залежністю.
  • ufo-tech/rpc-exceptions: ^1.3 -> ^2; ufo-tech/rpc-objects: ^3.8; ufo-tech/dto-transformer: ^3.1.

Версія 10.0.0

Ключові зміни

  • Додано/уніфіковано підтримку API versioning у RPC-сервісі.
  • Нормалізовано формат API-документації та проведено рефакторинг документаційного шару.
  • Проведено загальний рефакторинг сервера для стабільнішої роботи в Symfony 7.x.

ServiceMap та DI

  • Перенесено побудову ServiceMap у compiler pass.
  • Додано підтримку #[Autowire] сервісів у RPC-методах.
  • Винесено non-service класи з мапи сервісів і спрощено ServiceLocator-ланцюг.

Конвертори параметрів

  • Додано Doctrine parameter converter.
  • Покращено обробку enum-definition у параметрах і схемах.

Зміни оточення

  • PHP: без змін (>=8.3).
  • Symfony: без змін (основні компоненти залишились на ^7.2).
  • ufo-tech:
    • додано ufo-tech/packages:^1
    • ufo-tech/dto-transformer: ^2 -> ^2.1
    • ufo-tech/rpc-objects: без змін (^3.4)
    • ufo-tech/rpc-exceptions: без змін (^1.3)

Версія 9.2.1

Документація API

  • Додано GET-параметр info в doc-controller для виводу базової інформації OpenRPC без повного документа.

Async callback

  • Виправлено формування callback-відповіді в асинхронному потоці.

Зміни оточення

  • PHP: без змін (>=8.3).
  • Symfony: без змін.
  • ufo-tech: без змін.

Версія 9.1.5

Кешування

  • Додано інвалідацію/видалення relation-cache.
  • Додано підтримку ignore cache у запитах.
  • Виправлено RpcCacheService і сценарії warmup кешу.

Асинхронність та конфігурація

  • Додано підтримку кількох async-транспортів у конфігурації.
  • Оновлено залежності та службові конфігураційні частини.

Типи та DTO

  • Додано підтримку значень за замовчуванням для властивостей DTO.
  • Виправлено обробку union-type у return-типах.
  • Покращено сумісність з enum та генерацією assert-обмежень.

Зміни оточення

  • PHP: без змін (>=8.3).
  • Symfony: без змін (залишились на ^7.2 для основних компонентів).
  • ufo-tech:
    • ufo-tech/dto-transformer: ^1.1 -> ^2
    • ufo-tech/rpc-objects: ^3.1 -> ^3.4
    • ufo-tech/rpc-exceptions: без змін (^1.3)

Версія 8.1.14

Документація та схеми

  • Додано/перероблено builder для JSON Schema у документації RPC.
  • Покращено відображення звʼязків (relations) у згенерованій документації.
  • Виправлено генерацію enum-схем та позначок на кшталт x-ufo-enum.

DTO та типізація

  • Виправлено віддзеркалення DTO і обробку DTO-параметрів.
  • Покращено підтримку mixed та складних типів у генерації форматів.
  • Виправлено роботу з BackedEnum і enum helper-логікою.

Runtime та async

  • Виправлено обробник асинхронних запитів.
  • Стабілізовано поведінку RequestCarrier та спеціальних RPC-параметрів.
  • Усунуто проблеми з terminate-подіями у життєвому циклі обробки.

Зміни оточення

  • PHP: без змін (>=8.3).
  • Symfony: додано symfony/yaml:^7.2 та symfony/uid:^7.2 (інші Symfony-залежності без змін відносно 7.6.0).
  • ufo-tech:
    • ufo-tech/dto-transformer: ^1.0 -> ^1.1
    • ufo-tech/rpc-objects: ^3.0 -> ^3.1
    • ufo-tech/rpc-exceptions: >=1.0.3 -> ^1.3

Версія 7.6.0

Загальні зміни

  • Розвинено підтримку специфікації OpenRPC (включно з покращеннями генерації документації).
  • Додано генератор Postman collection для RPC API.
  • Розширено інтеграцію з DTO (підтримка ufo-tech/dto-transformer, виправлення трансформацій).
  • Підтягнуто сумісність із ufo-tech/rpc-objects 3.x.

Події та життєвий цикл

  • Додані/оновлені event listeners у пайплайні обробки RPC.
  • Покращено роботу асинхронного callback-потоку.
  • Виправлено обробку резолвера параметрів і автозвʼязування.

Конфігурація та стабільність

  • Оновлено вимоги залежностей і конфігураційні ключі.
  • Виправлено низку проблем безпеки, стабільності та deprecation-сумісності.
  • Додано логування та покращено надійність документаційного шару.

Зміни оточення

  • PHP: без змін (>=8.3).
  • Symfony: оновлено базові компоненти з ^7.0 до ^7.2 (framework-bundle, serializer, console, http-kernel, validator, security-bundle, http-client, process), додано symfony/lock:^7.2.
  • ufo-tech:
    • додано ufo-tech/dto-transformer:^1.0
    • ufo-tech/rpc-objects: >=2.3.1 -> ^3.0
    • ufo-tech/rpc-exceptions: без змін (>=1.0.3)

Версія 7.0.0

Загальні зміни

  • Оновлено формат документації API до стандарту OpenRPC.
  • Життєвий цикл RPC-сервера переведено на модель подій і підписників.
  • Проведено суттєвий рефакторинг v7-пайплайну обробки запитів.

Конфігурація

  • Конфігурація зазнала значних змін і не має повної зворотної сумісності з гілкою 6.x.
  • У блоці security захист тепер налаштований за діями (окремо API-виклики і документація), а не за HTTP-методами.
  • З блоку docs прибрано вкладений блок response, параметри винесено на рівень docs.
  • Видалено застарілі параметри (docs.response.json_schema).
  • docs.project_name
  • docs.project_description
  • docs.project_version

Зміни оточення

  • PHP: без змін відносно 6.4.0 (>=8.3).
  • Symfony: без змін відносно 6.4.0 (ключові компоненти на ^7.0).
  • ufo-tech/rpc-objects: >=2.3.1 -> >=2.4.0.
  • ufo-tech/rpc-exceptions: без змін (>=1.0.3).

Версія 6.4.0

Загальні зміни

  • Впроваджено формат документації OpenRPC і оновлено генератор документації.
  • Проведено рефакторинг обробки запитів та error-listener.
  • Додано опис return-даних у документації методів.
  • Покращено контекст обробки та стабільність validation/event-потоку.

Кеш та поведінка API

  • Додано кешування для GET-запитів до документаційного API.
  • Виправлено низку багів у валідації та автозвʼязуванні.

Зміни оточення

  • PHP: >=8.1 -> >=8.3.
  • Symfony: перехід з ^6.4 на ^7.0 для основних компонентів (framework-bundle, serializer, console, http-kernel, validator, security-bundle, http-client, process).
  • ufo-tech:
    • ufo-tech/rpc-objects: 1.* -> >=2.3.1
    • ufo-tech/rpc-exceptions: 1.* -> >=1.0.3

Версія 5.2.0

Загальні зміни

  • Підсилено шар валідації: додано JSON Schema, type-hinting і покращену перевірку параметрів.
  • Розширено описи методів і RPC-метадані в API-документації.
  • Проведено cleanup застарілих частин (включно з вилученням залежності на laminas).
  • Виправлено помилки в error-handler та конфігурації.

Документація та стабільність

  • Додано службові файли безпеки/контриб’ютингу (SECURITY, CONTRIBUTING, CODE_OF_CONDUCT).
  • Серія багфіксів для стабільнішої роботи в production-сценаріях.

Зміни оточення

  • PHP: без змін (>=8.1).
  • Symfony: уточнено вимоги з 6.* до ^6.4, додано symfony/expression-language:^6.3.
  • ufo-tech:
    • ufo-tech/rpc-objects: без змін (1.*)
    • ufo-tech/rpc-exceptions: без змін (1.*)

Версія 4.5.2

Загальні зміни

  • Глобальний рефакторинг ядра bundle та RPC-пайплайну.
  • Додано/стабілізовано підтримку batch-запитів і асинхронної обробки.
  • Додано CLI-обробку для RPC (консольний процесинг).
  • Винесено виключення в окремий пакет та знято частину жорстких внутрішніх залежностей.
  • Додано/покращено безпековий режим і валідацію токенів.

Інтеграції та інструменти

  • Додано експорт для SoapUI-інтеграції.
  • Покращено логування RPC-сервера.
  • Оновлено документацію та recipes для інтеграції у Symfony-проєкти.

Зміни оточення

  • PHP: зафіксовано мінімум >=8.1.
  • Symfony: перехід на гілку 6.* (framework-bundle, serializer, console, http-kernel, validator, http-client, process, security-bundle).
  • ufo-tech:
    • ufo-tech/rpc-objects:1.*
    • ufo-tech/rpc-exceptions:1.*

Повний опис кожного релізу з прикладами — у теці releases репозиторію бандла.