From d20d42e45c3246dd911e22700987b1083e2c710c Mon Sep 17 00:00:00 2001 From: Cristian Girlea Date: Wed, 21 Oct 2026 10:13:56 +0300 Subject: [PATCH] release: 0.2.0 --- CHANGELOG.md | 5 ++++- README.md | 2 +- docs/integration.md | 6 +++--- docs/testing.md | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 547a10b..7219f85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ All notable changes to this project are documented in this file. The format foll ## [Unreleased] +## [0.2.0] - 2026-10-21 + ### Added - `PhpAiBridge\Transport`, with `CurlTransport` as the client's default and `Psr18Transport` for an application's PSR-18 HTTP client (Symfony HttpClient, Guzzle and others): `Client` takes one as an optional last constructor argument. `psr/http-client` and `psr/http-factory` are suggested, not required. @@ -37,5 +39,6 @@ First release: a typed PHP client for bounded Python AI tasks (rerank, embed, re - Trusted services only: one bearer token authorizes every job, so the application must authenticate users and own the mapping from job IDs to their owners. - Private HTTP transport: deploy behind an authenticated TLS boundary; the example routes have no end-user authentication and publish no ports. -[Unreleased]: https://github.com/cristiangirlea/php-python-ai-bridge/compare/v0.1.0...HEAD +[Unreleased]: https://github.com/cristiangirlea/php-python-ai-bridge/compare/v0.2.0...HEAD +[0.2.0]: https://github.com/cristiangirlea/php-python-ai-bridge/compare/v0.1.0...v0.2.0 [0.1.0]: https://github.com/cristiangirlea/php-python-ai-bridge/releases/tag/v0.1.0 diff --git a/README.md b/README.md index 9c22481..9c14a19 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ The downloaded cache remains for reuse; it is not included in Git. See the [integration guide](docs/integration.md) for Composer setup, manual Symfony/Laravel configuration, application job ownership and failure handling. Dedicated framework adapters are not implemented yet. The client sends through `ext-curl` by default; an application with a PSR-18 client such as Symfony HttpClient or Guzzle can pass `PhpAiBridge\Psr18Transport` instead, configured as the [integration guide](docs/integration.md#through-a-psr-18-http-client) shows. -This source tree is a Composer library with PSR-4 autoloading under `PhpAiBridge\`. The first tagged release is `v0.1.0` ([changelog](CHANGELOG.md)): install it with `composer require cristiangirlea/php-python-ai-bridge:^0.1` once the package is on Packagist, or from a VCS repository pinned to the tag until then, as the integration guide shows. `examples/bootstrap.php` is a repository-only autoloader for dependency-free examples, not an application installation method. +This source tree is a Composer library with PSR-4 autoloading under `PhpAiBridge\`. The latest tagged release is `v0.2.0` ([changelog](CHANGELOG.md)): install it with `composer require cristiangirlea/php-python-ai-bridge:^0.2` once the package is on Packagist, or from a VCS repository pinned to the tag until then, as the integration guide shows. `examples/bootstrap.php` is a repository-only autoloader for dependency-free examples, not an application installation method. ```php use PhpAiBridge\Client; diff --git a/docs/integration.md b/docs/integration.md index e5de155..c00e07d 100644 --- a/docs/integration.md +++ b/docs/integration.md @@ -18,10 +18,10 @@ Three normal tasks are implemented. Reranking: given a query and up to 512 candi ## Install through Composer -The first tagged release is `v0.1.0`; see [the changelog](../CHANGELOG.md). Once the package is on Packagist, this is the normal path, run inside your application's dependency-acquisition container: +The latest tagged release is `v0.2.0`; see [the changelog](../CHANGELOG.md). Once the package is on Packagist, this is the normal path, run inside your application's dependency-acquisition container: ```sh -composer require cristiangirlea/php-python-ai-bridge:^0.1 --no-scripts --no-plugins +composer require cristiangirlea/php-python-ai-bridge:^0.2 --no-scripts --no-plugins ``` Until the Packagist listing exists, install the same tag from the repository instead. In your application's root `composer.json`, add this repository and requirement, preserving existing entries: @@ -35,7 +35,7 @@ Until the Packagist listing exists, install the same tag from the repository ins } ], "require": { - "cristiangirlea/php-python-ai-bridge": "0.1.0" + "cristiangirlea/php-python-ai-bridge": "0.2.0" } } ``` diff --git a/docs/testing.md b/docs/testing.md index 3837aa8..7a1b775 100644 --- a/docs/testing.md +++ b/docs/testing.md @@ -70,7 +70,7 @@ The original prototype was not entirely developed with TDD. Review corrections u - No measured line/branch coverage percentage, formal security audit or production certification. - No full Symfony kernel or Laravel application/Octane integration test, including configuration caching and multi-user authorization. -- No Packagist release yet, so no install from Packagist has been exercised, nor one from the `v0.1.0` tag through a VCS repository: the consumer Composer-install check installs the library's `git archive` zip from an `artifact` repository inside its container, offline (falling back to a path repository in a git worktree), and the repository's own examples use a small local autoloader. +- No Packagist release yet, so no install from Packagist has been exercised, nor one from the `v0.2.0` tag through a VCS repository: the consumer Composer-install check installs the library's `git archive` zip from an `artifact` repository inside its container, offline (falling back to a path repository in a git worktree), and the repository's own examples use a small local autoloader. - No sustained load/soak benchmark, throughput claim, p95/p99 latency, measured memory-per-job limit or CPU cost per inference; the only timing figures are the medians of sequential jobs below, warm after one cold first job. The peak of a child holding all four ONNX models during the worst-case rerank batch is measured once, on one machine, under [Measured model worker memory](#measured-model-worker-memory-informational); the model worker's 1536 MiB is a limit, which grows with `BRIDGE_CONCURRENCY` children each holding its own copies. - No representative ranking-quality evaluation (for example NDCG/MRR), multilingual accuracy evaluation, NER quality on real data or GPU benchmark; the NER figures below come from 48 invented sentences by the same author as the development set used to tune the redact task. - No repeated or semantic LLM evaluation. The one recorded run below is a single session per question per model on the demo worker, so it shows that the tools can be used, not a success rate or retrieval quality.