From c582ba62a999f8dff1f26c736e2c25ac18c84523 Mon Sep 17 00:00:00 2001 From: Anton Kara Date: Fri, 21 Aug 2026 12:43:55 -0400 Subject: [PATCH] chore(release): sync 0.1.2 from workspace --- CHANGELOG.md | 34 +++++++++++++++++++++++++++++++++ README.md | 22 +++++++++++++++++++++ docs/GUARANTEES.md | 2 +- pyproject.toml | 9 ++++++++- src/packvium_native/__init__.py | 2 +- 5 files changed, 66 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bb1897f..c04cba3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,40 @@ The format follows [Keep a Changelog](https://keepachangelog.com/1.1.0/) and thi adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html) — with the caveat that the public API is not frozen until `1.0.0`. Pin an exact version. +## [0.1.2] + +An additive documentation and integration release. No packing request/result field or +solver algorithm changed. + +### Added + +- **Runnable examples and guided capability maps.** Python, PHP and Node now ship worked + examples covering every objective and the major constraint, units, serialization, + nested-packing and commerce paths. Their printed answers are retained and checked on + every release, and each package executes its own examples in its test suite. +- **A versioned carrier-connector contract and reference implementation in the public + workspace.** Connectors prepare ordinary rate-table data before a deterministic solve; + no network call or carrier module enters a packing engine. The contract, offline replay + harness, registry and synthetic carrier are application components rather than new + packing-package API fields. + +### Changed + +- Every package README now links the whole Packvium family — Python, PHP, Rust, Node, + browser, PHP FFI bridge and Python native selector — and the PyPI, npm, Packagist and + crates.io manifests carry repository, homepage and keyword metadata. The PyPI page shows + the same README as GitHub and states the real Python floor, 3.9. + +### Fixed + +- Connector responses are revalidated at runtime and bound to the registered carrier and + requested service. Incomplete brackets, cross-currency price comparison and mutable + replay/value-object state are refused instead of silently producing a wrong price. +- Linux x86_64 and ARM64 evidence follows the declared suite version, preventing a + current gate from rewriting a previous release's receipt. +- PHP 7.4 artifact generation safely completes the locked downgrade tool's partial-write + case and still fails closed if its single retry does not finish. + ## [0.1.1] A patch over `0.1.0`. Every package is released together at the new version, including diff --git a/README.md b/README.md index 8184c18..32dd165 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,12 @@ pip install 'packvium-native[native]' packvium The `native` extra installs the platform wheel. To use only the fallback, install `packvium-native` together with `packvium`. +`packvium-native` is not on PyPI yet. Until the native wheels ship, install it from source: + +```bash +pip install git+https://github.com/toxakara/packvium-python-adapter packvium +``` + ## Quick start ```python @@ -55,6 +61,22 @@ Native wheels support Linux x86_64/aarch64, macOS Apple Silicon/Intel and Window wheel uses Python's stable ABI, so one wheel supports Python 3.9 and later on its platform. +## The Packvium family + +One request and result contract, implemented independently in four engines (Rust, +Python, PHP, JavaScript) and held to identical placements on a shared fixture set. +Pick the package for your stack; mixing them in one system is safe. + +| Package | Install | Source | +| --- | --- | --- | +| Python — [`packvium`](https://pypi.org/project/packvium/) | `pip install packvium` | [packvium-python](https://github.com/toxakara/packvium-python) | +| PHP — [`packvium/packvium`](https://packagist.org/packages/packvium/packvium) | `composer require packvium/packvium` | [packvium-php](https://github.com/toxakara/packvium-php) | +| Rust — [`packvium`](https://crates.io/crates/packvium) | `packvium = "0.1"` | [packvium-rust](https://github.com/toxakara/packvium-rust) | +| Node.js — [`@packvium/engine`](https://www.npmjs.com/package/@packvium/engine) | `npm install @packvium/engine` | [packvium-node](https://github.com/toxakara/packvium-node) | +| Browser / WebAssembly — [`@packvium/browser`](https://www.npmjs.com/package/@packvium/browser) | `npm install @packvium/browser` | [packvium-wasm](https://github.com/toxakara/packvium-wasm) | +| PHP FFI bridge — [`packvium/native-bridge`](https://packagist.org/packages/packvium/native-bridge) | `composer require packvium/native-bridge` | [packvium-php-bridge](https://github.com/toxakara/packvium-php-bridge) | +| Python native selector — `packvium-native` | from source until the native wheels ship | [packvium-python-adapter](https://github.com/toxakara/packvium-python-adapter) | + ## License MIT. See [LICENSE](LICENSE). diff --git a/docs/GUARANTEES.md b/docs/GUARANTEES.md index e0a8728..499404a 100644 --- a/docs/GUARANTEES.md +++ b/docs/GUARANTEES.md @@ -48,7 +48,7 @@ silently — if you need them, they belong in your own layer above this library. ## Status of this release -Version `0.1.1` is an early release. The public API is not yet frozen: field names, +Version `0.1.2` is an early release. The public API is not yet frozen: field names, status codes and the objective vector may change before `1.0.0`. Pin an exact version. The algorithm complexities documented in `ALGORITHMS-AND-COMPLEXITY.md` are design diff --git a/pyproject.toml b/pyproject.toml index 216236f..96d6291 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,12 +4,19 @@ build-backend = "setuptools.build_meta" [project] name = "packvium-native" -version = "0.1.1" +version = "0.1.2" requires-python = ">=3.9" description = "Backend selector for Packvium's native and pure Python engines" +readme = "README.md" license = "MIT" +keywords = ["3d-bin-packing", "cartonization", "packaging", "container-loading"] dependencies = [] +[project.urls] +Homepage = "https://github.com/toxakara/packvium-python-adapter" +Source = "https://github.com/toxakara/packvium-python-adapter" +Issues = "https://github.com/toxakara/packvium-python-adapter/issues" + [project.optional-dependencies] # `packvium` is deliberately not a hard dependency of the package itself (see # README's "does not replace or shadow" note) -- it is only needed to exercise the diff --git a/src/packvium_native/__init__.py b/src/packvium_native/__init__.py index bf5ad55..8b65761 100644 --- a/src/packvium_native/__init__.py +++ b/src/packvium_native/__init__.py @@ -3,7 +3,7 @@ import json from typing import Any -__version__ = "0.1.1" +__version__ = "0.1.2" def backend() -> str: