Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
22 changes: 22 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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).
2 changes: 1 addition & 1 deletion docs/GUARANTEES.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
9 changes: 8 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/packvium_native/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import json
from typing import Any

__version__ = "0.1.1"
__version__ = "0.1.2"


def backend() -> str:
Expand Down
Loading