progress.py stores the names of implemented and pending items, can measure another source tree with --root and prints a Markdown diff of two runs with --compare. The Progress report workflow compares every pull request with its base, and Progress comment posts the result as a single comment, updated on every push and removed when progress no longer changes. Commenting runs as a separate workflow_run so pull requests from forks never run with write permissions. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| README.md | ||
| progress.py | ||
| rdna_isa.txt | ||
README.md
Tools
progress.py
Generates the progress map shown in the main README.
python3 tools/progress.py <output-dir>
Requires only Python 3.9+ with the standard library. It writes:
progress.svg: treemaps for system libraries and GPU shader instructionsbadge-libraries.svg,badge-shaders.svg: percentage badgesindex.html: the map with per-library and per-encoding tablesprogress.json: raw numbers and the names of implemented and pending items
The Progress workflow runs it on every push to main and deploys the output to GitHub Pages, so nothing generated is committed to the repository.
To compare two runs, for example main and a pull request:
python3 tools/progress.py --root <base-checkout> base
python3 tools/progress.py head
python3 tools/progress.py --compare base/progress.json head/progress.json
--root measures another source tree with the current script. --compare prints a Markdown report of implemented, newly declared, reverted and removed items, and prints nothing when progress did not change. The Progress report workflow runs it for every pull request, and Progress comment posts the report as a single comment on the pull request, updated on every push. It runs as a separate workflow_run so pull requests from forks never run with write permissions.
What is measured
- System libraries: functions defined in core/libs/prx. A function is implemented when it no longer calls
NotImplemented_nid_no_patch. The total only includes functions already declared in the project, not every function of the PS5 firmware. - GPU shader instructions: instructions from rdna_isa.txt that appear in
RdnaOpcodeof the shader recompiler. FLAT opcodes also count for their GLOBAL and SCRATCH forms, since the decoder accepts all three segments. Decoded opcodes missing from AMD's public list are not counted.
rdna_isa.txt
The AMD RDNA 1 + RDNA 2 instruction list (name and primary encoding), extracted from the AMD Machine-Readable GPU ISA Specification (MIT License).