Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Migration readiness checklist

This checklist turns the vague question “should I leave matten?” into a set of concrete pressure signals. Work through it for the part of your workflow under question, mark each signal, and follow the mapping to a playbook. It is an advisory self-assessment — there is no tool that scans your code, and a high score does not by itself mean you must migrate.

How to read it: each signal is a yes/no probe. The more signals you mark “yes” — especially the first six — the stronger the case to move that hot part of the workflow. If almost everything is “no”, staying with matten is the right answer.

Pressure signals → target

#SignalYou feel it when…If yes, consider
1Data-size pressurearrays are large enough that matten’s copy-on-reshape/slice shows up, or memory is tightndarray
2Runtime pressurea dense kernel (matmul, matrix–vector, operator application) is a measured hot pathndarray / nalgebra
3Axis-reduction pressuresums/means over axes at scale are a bottleneckndarray
4Linear-algebra pressureyou need LU/QR/SVD, solvers, or eigenvalues (matten has none)nalgebra
5Dataframe pressureyou need group-by, joins, pivots, or query expressionsPolars / Pandas
6ML / device pressureyou need autodiff, training loops, or GPU/device executionCandle
7Dynamic-ingestion pressureyou lean heavily on the dynamic feature beyond a one-time messy-data on-rampresolve to numeric, then 1–4 as they apply
8Dependency policyyou cannot add heavy dependencies (binary size, audit, embedded)stay with matten
9Target ecosystem preferencethe surrounding system is Rust, or specifically PythonRust → 1–4; Python → NumPy
10Team language preferencethe team works in Python and wants the numeric code thereNumPy / Pandas

Reading the result

  • Signals 1–3 dominate → a dense-array hot path: ndarray.
  • Signal 4 is present → you need capability matten lacks: nalgebra.
  • Signal 5 dominates → the work is tabular, not array math: Polars/Pandas. Remember matten-data will not grow these.
  • Signal 6 is present → you have crossed into ML: Candle or another framework.
  • Signals 9–10 point to Python → NumPy/Pandas, with matten as an upstream producer.
  • Signal 8 is “yes”, or almost everything is “no”stay with matten. Adding a dependency would cost simplicity for no measured gain.

Migration is usually partial: move the signalled hot kernel, keep matten for construction, ingestion, and glue. When you are ready to write the result down, use the readiness report template; a filled-in example is in examples/.