Upgrading
AI assistant
Build this with Claude Code, Cursor or Copilot
Copy a Tessero-tuned prompt for Upgrading, grounded in 16 real API signatures , into your IDE's AI. No chatbot, just exact context.
Tessero follows Semantic Versioning. Before 1.0, minor versions (0.x → 0.y) may contain breaking changes. Each one is listed here with the action it needs. Patch versions never break.
The full history is in CHANGELOG.md at the repository root.
General procedure
- Read this page and the changelog for every version you skip.
- Upgrade staging first, with the same backend (extension or FFI) as production.
- Run
tessero doctorin every SAPI. - Compare outputs of your key calculations before and after on stored inputs. See [RB-4(https://github.com/DMJ-CV-91913/tessero/blob/main/docs/operations/runbooks.md#rb-4-solver-results-changed-after-an-upgrade) for which differences are expected.
- Upgrade the extension and the Composer packages together. Their
versions must match (
Engine::version()andTessero::VERSION). - FFI under FPM: restart FPM (preloaded code is fixed at start).
0.1 → 0.2
New
ext-tessero, a full native backend (Tessero\Ext\NDArray,Engine,Operand). It replaces the 0.1 operator-only extensiontessero_ops.- Linear and mixed-integer programming (
Optimize\LinearProgramming), Markov decision processes (Mdp\MarkovDecisionProcess). tessero/laravel: provider, facade, casts, validation rule, response macro, Octane-safe settings.- OpenMP threads (
Tessero::setThreads,tessero.threads). NDArray::toJson(),serialize()support, C slice parser (sliceNative).
Breaking changes and actions
| Change | Action |
|---|---|
The tessero_ops extension is gone. Operators now come from ext-tessero. |
Remove extension=tessero_ops, install ext-tessero. Code using operators needs no change. |
NDArray constructor-promoted properties are no longer readonly (needed for __unserialize). |
None, unless you relied on the Error thrown when writing them. |
NDArray now extends Tessero\Internal\OperandBase. |
None, unless you use get_parent_class() on arrays. |
New error codes −6 (shape), −7 (not contiguous), −8 (did not converge) map to ShapeError, TesseroException, ConvergenceError. |
Catch TesseroException if you matched messages of the old generic error. |
LP/MILP reject NaN/±INF in c, A, b with InvalidArgumentException (0.2.0). |
Clean data before solving; infinite bounds remain allowed. |
| MDP constructors reject non-finite rewards and probabilities, and malformed CSR. | As above. |
| LP/MILP workspaces count against the memory budget. | Raise the budget if large LPs now throw MemoryError. |
| MILP no longer prunes nodes whose relaxation hit the iteration limit or numerical trouble; the result reports status 1 (limit) instead of a possibly wrong "optimal". | Check status/gap() as documented. |
Configuration
New keys only; nothing renamed. Laravel users can publish the config
(vendor:publish --tag=tessero-config) or rely on the defaults.