v0.0.2
Upstream moved to PackingSolver 3f4faae1
This release only moves the vendored PackingSolver from a7e53303 to 3f4faae1; the Python API is unchanged.
boxstacksno longer returns an empty solution under a time limit. Upstream fontanf/packingsolver#571 (fixes #570) replaced theboxtree search that computed the bound before the primal algorithms with closed-form volume bounds, a one-dimensional relaxation and dual feasible functions. Before, on knapsack, bin packing and variable-sized bin packing instances with several item types and more items than fit, that search consumed the wholetime_limitandboxstacks.solvecame back with no placements.- Instance reduction in
boxandboxstacks(upstream24decc4c): negative-profit item types are trimmed under knapsack and identical item types are merged; both happen insideoptimize()and results are mapped back to the original item types. - Multi-bin solutions no longer read past unsized weight vectors. Upstream fontanf/packingsolver#576 (fixes #575): with instance reduction on, every bin packing / variable-sized bin packing solve using two or more bins rebuilt its solution through a path that indexed the still-empty per-group weight vectors of later bins, an access violation with MSVC. This is why 0.0.2 was not published from
24decc4c: its Windows test suite crashed on exactly that case. test/test_upstream_cases.pyreplays the three upstream reproducer instances of #570 with the same 3 s limit, and the postal-carton instance of #575 without one.
Wheels: CPython 3.7 to 3.14 on Linux x86_64 / aarch64, Windows AMD64 / ARM64, macOS arm64 / x86_64, built with PACKINGSOLVER_USE_HIGHS=ON, as before.