diff --git a/CHANGELOG.md b/CHANGELOG.md index c04cba3..18f498e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,46 @@ 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.3] + +An additive release. No packing request/result field or solver algorithm changed. + +### Added + +- **First-party carrier connectors for UPS, FedEx, DHL Express and USPS**, and a live + rate-card contract behind them. Connectors prepare ordinary rate-table data before a + deterministic solve; no network call, clock or carrier module enters a packing engine. + A rate card records which tariff version priced a quote and when it was fetched, and a + card that has gone stale is refused rather than served. + +### Fixed + +- **`@packvium/browser` now works under Node**, not only in a browser. The WebAssembly + loader generated for the `web` target fetches its own `.wasm` from a `file:` URL, which + Node's `fetch` refuses — so server-side rendering, a Vitest node environment and + `node --test` failed at initialization on 0.1.1 and 0.1.2. The package now selects a + Node entry point that reads the module off disk. Browser behaviour is unchanged. +- **The PHP package's compatibility tree could not autoload a class on old PHP.** Its + entry point was the one shipped file the downgrade did not process, and it used a PHP 8 + function to match the namespace prefix. Three of its solver files also could not be + parsed by PHP 8.0 or 8.1, which that tree also serves. Both are fixed, and the tree is + installed and loaded on 7.3, 7.4, 8.0 and 8.1 before release. +- **The compatibility tree did not place items where the canonical engine does on PHP 7.** + Several solver comparators were partial and relied on `usort` being stable, which PHP + guarantees only from 8.0, so three shared fixtures came back with a different rotation + chosen. The tie-breaking is explicit now — identical results on every supported version — + and no released package ever carried it, because none was installable below 8.2. + +### Changed + +- **`packvium/packvium` now requires `php: >=7.3` instead of `>=8.2`.** One package + carries both the canonical PHP 8.2+ source and a generated `src-legacy/` tree, and its + `autoload.php` selects by `PHP_VERSION_ID`; PHP parses only what it loads. + `composer require packvium/packvium` is the right command on 7.3 through 8.5, and every + one of those versions is held to the same committed placement results. Nothing changes + for an 8.2+ consumer: the same files load, under the same names. +- Every package's `homepage` now points at . + ## [0.1.2] An additive documentation and integration release. No packing request/result field or diff --git a/README.md b/README.md index f590e70..d14dea0 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Deterministic 3D cartonization and rectangular bin packing. Pure Python, **no runtime dependencies**, exact integer geometry. -> **Version 0.1.2 — early release.** The public API is not frozen; pin an exact version. +> **Version 0.1.3 — early release.** The public API is not frozen; pin an exact version. > Read [docs/GUARANTEES.md](https://github.com/toxakara/packvium-python/blob/main/docs/GUARANTEES.md) before relying on a result. ```bash @@ -101,6 +101,9 @@ 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. +Documentation, the constraint reference and the benchmarks are at +[packvium.com](https://packvium.com). + | Package | Install | Source | | --- | --- | --- | | Python — [`packvium`](https://pypi.org/project/packvium/) | `pip install packvium` | [packvium-python](https://github.com/toxakara/packvium-python) | diff --git a/docs/GUARANTEES.md b/docs/GUARANTEES.md index 499404a..af5efb3 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.2` is an early release. The public API is not yet frozen: field names, +Version `0.1.3` 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 976585a..2952a89 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "packvium" -version = "0.1.2" +version = "0.1.3" description = "Deterministic, extensible 3D cartonization and rectangular bin-packing library" readme = "README.md" requires-python = ">=3.9" @@ -13,6 +13,10 @@ authors = [{name = "Packvium contributors"}] keywords = ["3d-bin-packing", "cartonization", "packaging", "container-loading"] classifiers = [ "Development Status :: 3 - Alpha", + "Intended Audience :: Developers", + "Topic :: Scientific/Engineering", + "Topic :: Software Development :: Libraries", + "Topic :: Office/Business", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.9", @@ -26,9 +30,9 @@ classifiers = [ ] [project.urls] -Homepage = "https://github.com/toxakara/packvium-python" +Homepage = "https://packvium.com" Source = "https://github.com/toxakara/packvium-python" -Documentation = "https://github.com/toxakara/packvium-python/tree/main/docs" +Documentation = "https://packvium.com/docs" Changelog = "https://github.com/toxakara/packvium-python/blob/main/CHANGELOG.md" Issues = "https://github.com/toxakara/packvium-python/issues"