About
Tessero is an open-source, NumPy- and SciPy-compatible numerical computing library for PHP, and a project run in the open.
Mission
Tessero's mission is to make PHP a first-class language for numerical and scientific computing. We provide numerically identical NumPy and SciPy arrays, statistics, linear algebra and optimization for PHP, with full verified parity against the reference implementations measured from recorded test runs. We build in the open, credit the work we stand on, and work with the wider PHP community so that the libraries, frameworks and applications PHP developers already use can do serious numerical work in native PHP, with no call-out to Python, running the same C kernel through either a compiler-free package or a native extension.
Tessero provides n-dimensional arrays, linear algebra, FFT, NumPy-identical random numbers, sparse
matrices, statistics and special functions, optimisation, linear and mixed-integer programming, and
Markov decision process solvers for PHP 8.2+. It runs on a single small SIMD C kernel,
libtessero, reached either through FFI or a native Zend extension, both returning identical
numbers from one C kernel,
with a first-class Laravel package. Dense matrix
multiplication is routed through OpenBLAS for BLAS-class
throughput, with a committed, reproducible benchmark so the numbers can be checked.
The project
Governance
How decisions get made and who makes them.
Code of Conduct
The standards everyone in the community is held to.
Security policy
How to report a vulnerability responsibly.
Funding transparency
Where sponsorship and donations actually go.
Citing Tessero
Cite the library in papers and software, with BibTeX.
Acknowledgments
The projects and people Tessero stands on.
Releases & changelog
Version history and what changed, release by release.
Press kit
Logos, brand marks and usage guidelines.
The story
Every PHP developer who has needed real math knows the moment. You’ve built the app, with its models, queues and dashboards, and then a requirement lands that needs a linear solve, an FFT, an optimisation, or a proper statistical distribution. PHP, the language running a huge share of the web, quietly hands you a bill: go stand up a second stack.
So you shell out to a Python script, spin up a microservice, or hand-roll a slow user-land matrix class. You serialise arrays to JSON, push them over a socket, parse them into NumPy, compute, then reverse the whole trip. Two runtimes, two dependency managers, two things to deploy and keep in sync. The math was the easy part; the plumbing was the tax. Tessero exists to remove that tax: NumPy and SciPy, brought natively into PHP, with no bridge, no second language, and no translation layer.
Where the name comes from
It started as a shape. A tesseract is the four-dimensional cube: a cube extended into one more dimension, the way a cube extends a square. That is the right mental image for an n-dimensional array library, where structure is stacked into more dimensions than you can picture at once.
“Tesseract” was too long, so the project began as Tessera. That ran into a wall: the name is everywhere in trademark filings, from mosaics to biotech. The irony was that, for years, the tool you searched those filings with at the USPTO was literally called TESS. Hence Tessero, which is easier to say and, by accident, more faithful to the origin than the shape was. “Tesseract” blends the Greek téssara (“four”) with the Latin tessera: a small cube, tile or token, the little squares that make up a mosaic. For a library built on grids of numbers, a name that quietly means “small cube” is about as fitting as it gets.
Verified against the reference implementations
Correctness is the point. Tessero covers 100.0% of NumPy core and 100.0% of SciPy, counted symbol by symbol against the reference and verified on both backends. Coverage is complete, not growing. The FFI package and the native extension are checked to produce identical numbers, down to machine precision. See the full coverage report for the per-module breakdown (generated from the library, so it never drifts); where Tessero deviates from the reference behaviour, the deviation is documented rather than hidden.
Correctness is established more than one way. An independent BCMath oracle re-derives the core scalar and combinatorial functions (exp, log, trig, sqrt, factorials, binomials, gamma) from first principles, a second check that shares no code with the C kernel. Separately, real multi-step workflows are run end to end on both backends at machine precision, so whole compositions are verified rather than only functions in isolation; these scenario checks are representative, not exhaustive. Every figure is generated from recorded test runs, not self-reported.
In detail (figures generated from the library, so they never drift): counted symbol by symbol, NumPy is 100.0% on the FFI package and 100.0% on the extension@if (! empty($cov['symbol']['scipy'])), and SciPy 100.0% / 100.0%@endif. The kernel registry holds 1,560 functions@if ($covBoth !== null), 1,554 of them verified on both backends. @endif See the full coverage report.
How we work
- In the open. Development, issues and decisions happen in public repositories; see governance.
- Credit the work we stand on. Tessero builds on the NumPy and SciPy communities and the libraries they rely on; see the Acknowledgments.
- With the PHP community. Tessero makes the libraries, frameworks and applications PHP developers already use capable of serious numerical work, a bolt-on to the wider PHP ecosystem, not a replacement for it.
Licensing
Tessero is released under the BSD-3-Clause license, © 2026 The Tessero contributors, as recorded in the library repository. See the license and third-party notices.
Independence
Tessero is an independent project and is not affiliated with or endorsed by NumPy, SciPy or NumFOCUS.