Xamt++ is the release artifact for the current cross-framework API matching and differential testing pipeline. It extends the original XAMT prototype from a small set of framework shims to an adapter-aware matcher and runner covering 10 numerical and deep-learning libraries:
chainer, jax, keras, mindspore, mxnet, numpy, paddle, scipy,
tensorflow, and torch.
The artifact contains the code used to mine APIs, form cross-library equivalence groups, validate those groups through adapters, fuzz the executable groups, and replay the current differential bug reproductions.
Xamt/
|- tools/
| |- api_match_common.py # namespaces, aliases, categories, role rules
| |- compare_api_matchers.py # API mining, grouping, confidence scoring
| |- diff_static_candidate_groups.py # adapters, execution, output normalization
| |- timed_group_fuzz.py # timed fuzzing over matched groups
| |- artifact_check.py # metadata and packaging sanity checks
| `- build_artifact.py # reproducible source-archive builder
|- bug_repros/
| |- metadata.json # 41 filtered reproduction records (>1e-3 numeric)
| |- bug_*.py # one-command live replayers (original IDs preserved)
| `- README.md # filter criteria and retained-bug audit
|- ARTIFACT.md # step-by-step reproduction guide
`- README.md
The older functions/, inputs/, run_tasks/, tests/, and utilities/
directories are retained for compatibility with the original XAMT artifact.
The current Xamt++ pipeline is driven by tools/ and bug_repros/.
Current artifact snapshot: 2026-05-25.
| Metric | Count |
|---|---|
| Libraries | 10 |
| Pairwise adapter-aware groups | 650 |
| Unique APIs in executable groups | 4372 |
| Raw mined APIs | 8782 |
| Static pairwise DIFF groups | 46 |
| Current unique DIFF candidates | 194 keys / 137 base groups |
| Raw live reproducible DIFF scripts | 177 |
| Filtered scripts (finite numeric diff > 1e-3) | 41 |
The headline reproduction set is now the 41 scripts that survive a strict
numeric filter: a live DIFF whose minority/majority disagreement contains at
least one element where both sides are finite and differ by more than 1e-3.
Disagreements caused only by NaN/Inf propagation, signed zero, sub-ULP
precision, or index/ordering tie-breaks are excluded. Passing the filter means
the divergence is a genuine finite-value difference, not that every script is a
confirmed upstream defect; subnormal flush-to-zero, branch-cut/tie-method
conventions, and ill-conditioned inputs may still explain some entries.
The filter criteria and the per-script retained-bug audit are recorded in
bug_repros/README.md; bug_repros/metadata.json holds the machine-readable
records for the 41 retained scripts.
The full 10-library run uses one main Python process plus optional external Python workers for libraries that conflict with the main environment.
Main process:
numpyscipytorchtensorflowkerasjax
External workers:
XAMT_PADDLE_PYfor PaddleXAMT_MINDSPORE_PYfor MindSporeXAMT_CHAINER_PYfor ChainerXAMT_MXNET_PYfor MXNet
If an external worker is not configured, the runner skips that library during API collection or reports it as unavailable during execution. This lets partial runs work in a single environment while keeping the full artifact reproducible on a machine with all worker environments installed.
Observed local main environment:
Python 3.13.5
numpy 2.2.6
scipy 1.16.3
torch 2.11.0+cu128
tensorflow 2.21.0
keras 3.14.0
jax 0.9.2
For a new machine, start with requirements-main.txt, then create external
worker environments for Paddle, MindSpore, Chainer, and MXNet as described in
ARTIFACT.md.
Run the artifact sanity check. This does not import heavyweight DL libraries.
cd Xamt
python -B tools/artifact_check.pyInspect matched API coverage from the snapshot table in this README.
sed -n '/## Current Coverage/,/## Environment Model/p' README.mdReplay one curated bug. The exact result depends on which libraries are installed and which external worker variables are set.
python -B bug_repros/bug_001_clip_generic_3.pyRun the deterministic adapter-aware validation over mined APIs.
python -B -m tools.diff_static_candidate_groups \
--strategy pairwise-adapter-aware \
--details 20Run a timed fuzzing pass over already matched groups.
python -B -m tools.timed_group_fuzz \
--strategy pairwise-adapter-aware \
--seconds-per-group 60 \
--include-edge-values \
--include-nonfinite \
--stop-on-diff \
--jsonl results/pairwise_edge_nonfinite.jsonlBuild a clean source artifact archive.
python -B tools/build_artifact.py --out dist/xamtplusplus-artifact.tar.gzapi_match_common.pydefines the target namespaces, alias rules, category terms, and parameter role normalization.compare_api_matchers.pymines callables, records signatures/docs, groups APIs by canonical name/category/arity/roles, and assigns confidence scores.diff_static_candidate_groups.pymaps a group to executable inputs through per-library adapters, normalizes outputs, and labels the group asPASS,DIFF,ERROR, orSKIP.- The
pairwise-adapter-awarestrategy validates executable pair matches and unions passing pairs into connected API components. timed_group_fuzz.pyrefreshes canonical inputs with random, edge-value, and nonfinite states, then repeatedly executes each group within a time budget.bug_repros/replays curated candidates against the current runner and counts only livestatus: DIFFoutputs as reproducible bugs.
Use the following default language when reporting this artifact:
Xamt++ covers 10 libraries, 650 adapter-aware API groups, and 4372 APIs in executable matched groups. The current candidate table contains 194 unique DIFF keys across 137 base API groups, of which 177 reproduce live. Applying a strict numeric filter — a live
DIFFwith at least one finite element-wise difference greater than1e-3, excludingNaN/Inf, signed-zero, sub-ULP, and index/ordering tie-break disagreements — yields the headline set of 41 filtered reproduction scripts.
@INPROCEEDINGS{Xamt,
author={Duan, Bin and Dong, Ruican and Dong, Naipeng and Kim, Dan Dongseong and Yang, Guowei},
booktitle={2025 IEEE 36th International Symposium on Software Reliability Engineering (ISSRE)},
title={XAMT: Cross-Framework API Matching for Testing Deep Learning Libraries},
year={2025},
pages={191-202},
keywords={Fuzzing;Software reliability;Testing;Deep Learning Libraries},
doi={10.1109/ISSRE66568.2025.00030}}