simdref 0.0.4__tar.gz → 0.0.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. {simdref-0.0.4/src/simdref.egg-info → simdref-0.0.6}/PKG-INFO +32 -106
  2. {simdref-0.0.4 → simdref-0.0.6}/README.md +18 -94
  3. {simdref-0.0.4 → simdref-0.0.6}/pyproject.toml +20 -17
  4. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/annotate.py +132 -37
  5. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/cli.py +507 -331
  6. simdref-0.0.4/src/simdref/web.py → simdref-0.0.6/src/simdref/export.py +140 -48
  7. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/ingest_sources.py +3 -3
  8. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/manpages.py +13 -15
  9. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/queries.py +8 -2
  10. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/storage.py +108 -26
  11. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/ui_labels.py +7 -6
  12. {simdref-0.0.4 → simdref-0.0.6/src/simdref.egg-info}/PKG-INFO +32 -106
  13. {simdref-0.0.4 → simdref-0.0.6}/src/simdref.egg-info/SOURCES.txt +6 -22
  14. simdref-0.0.6/src/simdref.egg-info/requires.txt +10 -0
  15. simdref-0.0.6/tests/test_annotate_positions.py +146 -0
  16. {simdref-0.0.4 → simdref-0.0.6}/tests/test_auto_update_on_version_change.py +6 -6
  17. {simdref-0.0.4 → simdref-0.0.6}/tests/test_coverage_live.py +6 -2
  18. {simdref-0.0.4 → simdref-0.0.6}/tests/test_coverage_parity.py +7 -3
  19. simdref-0.0.6/tests/test_export.py +214 -0
  20. {simdref-0.0.4 → simdref-0.0.6}/tests/test_issue2_fixes.py +1 -1
  21. simdref-0.0.6/tests/test_issues_23_24_25.py +384 -0
  22. {simdref-0.0.4 → simdref-0.0.6}/tests/test_lsp_web.py +17 -49
  23. {simdref-0.0.4 → simdref-0.0.6}/tests/test_presentation.py +14 -25
  24. {simdref-0.0.4 → simdref-0.0.6}/tests/test_preset_persistence.py +0 -28
  25. simdref-0.0.6/tests/test_riscv_docs_pages.py +52 -0
  26. simdref-0.0.6/tests/test_storage_payload.py +56 -0
  27. {simdref-0.0.4 → simdref-0.0.6}/tests/test_storage_schema.py +29 -3
  28. {simdref-0.0.4 → simdref-0.0.6}/tests/test_ui_labels_parity.py +4 -39
  29. {simdref-0.0.4 → simdref-0.0.6}/tests/test_version_matches_pyproject.py +5 -1
  30. simdref-0.0.4/src/simdref/profile/__init__.py +0 -25
  31. simdref-0.0.4/src/simdref/profile/adapters/__init__.py +0 -1
  32. simdref-0.0.4/src/simdref/profile/adapters/exegesis.py +0 -65
  33. simdref-0.0.4/src/simdref/profile/adapters/mca.py +0 -84
  34. simdref-0.0.4/src/simdref/profile/adapters/perf.py +0 -245
  35. simdref-0.0.4/src/simdref/profile/adapters/uprof.py +0 -89
  36. simdref-0.0.4/src/simdref/profile/adapters/vtune.py +0 -83
  37. simdref-0.0.4/src/simdref/profile/adapters/xctrace.py +0 -66
  38. simdref-0.0.4/src/simdref/profile/hotloop.py +0 -315
  39. simdref-0.0.4/src/simdref/profile/merge.py +0 -215
  40. simdref-0.0.4/src/simdref/profile/model.py +0 -129
  41. simdref-0.0.4/src/simdref/profile/orchestrate.py +0 -303
  42. simdref-0.0.4/src/simdref/profile/registry.py +0 -62
  43. simdref-0.0.4/src/simdref/templates/__init__.py +0 -0
  44. simdref-0.0.4/src/simdref/templates/app.js +0 -2358
  45. simdref-0.0.4/src/simdref/templates/favicon.svg +0 -5
  46. simdref-0.0.4/src/simdref/templates/index.html +0 -164
  47. simdref-0.0.4/src/simdref/templates/logo.svg +0 -12
  48. simdref-0.0.4/src/simdref/templates/style.css +0 -917
  49. simdref-0.0.4/src/simdref.egg-info/requires.txt +0 -10
  50. simdref-0.0.4/tests/test_search_index_js.py +0 -34
  51. simdref-0.0.4/tests/test_web_e2e.py +0 -201
  52. {simdref-0.0.4 → simdref-0.0.6}/LICENSE +0 -0
  53. {simdref-0.0.4 → simdref-0.0.6}/setup.cfg +0 -0
  54. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/__init__.py +0 -0
  55. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/__main__.py +0 -0
  56. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/arm_instructions.py +0 -0
  57. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/display.py +0 -0
  58. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/filters.py +0 -0
  59. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/ingest.py +0 -0
  60. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/ingest_catalog.py +0 -0
  61. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/ingest_pdf.py +0 -0
  62. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/lsp.py +0 -0
  63. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/models.py +0 -0
  64. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/pdfparse/__init__.py +0 -0
  65. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/pdfparse/base.py +0 -0
  66. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/pdfparse/intel.py +0 -0
  67. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/pdfparse/registry.py +0 -0
  68. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/pdfparse/types.py +0 -0
  69. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/pdfrefs.py +0 -0
  70. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/perf.py +0 -0
  71. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/perf_sources/__init__.py +0 -0
  72. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/perf_sources/cores.py +0 -0
  73. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/perf_sources/llvm_mca.py +0 -0
  74. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/perf_sources/llvm_scheduling.py +0 -0
  75. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/perf_sources/merge.py +0 -0
  76. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/riscv.py +0 -0
  77. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/search.py +0 -0
  78. {simdref-0.0.4 → simdref-0.0.6}/src/simdref/tui.py +0 -0
  79. {simdref-0.0.4 → simdref-0.0.6}/src/simdref.egg-info/dependency_links.txt +0 -0
  80. {simdref-0.0.4 → simdref-0.0.6}/src/simdref.egg-info/entry_points.txt +0 -0
  81. {simdref-0.0.4 → simdref-0.0.6}/src/simdref.egg-info/top_level.txt +0 -0
  82. {simdref-0.0.4 → simdref-0.0.6}/tests/test_annotate.py +0 -0
  83. {simdref-0.0.4 → simdref-0.0.6}/tests/test_audit_coverage.py +0 -0
  84. {simdref-0.0.4 → simdref-0.0.6}/tests/test_cli_bare_query.py +0 -0
  85. {simdref-0.0.4 → simdref-0.0.6}/tests/test_cli_bootstrap_progress.py +0 -0
  86. {simdref-0.0.4 → simdref-0.0.6}/tests/test_cli_help.py +0 -0
  87. {simdref-0.0.4 → simdref-0.0.6}/tests/test_cli_llm.py +0 -0
  88. {simdref-0.0.4 → simdref-0.0.6}/tests/test_display.py +0 -0
  89. {simdref-0.0.4 → simdref-0.0.6}/tests/test_filters.py +0 -0
  90. {simdref-0.0.4 → simdref-0.0.6}/tests/test_ingest_sources.py +0 -0
  91. {simdref-0.0.4 → simdref-0.0.6}/tests/test_intel_operation_and_url.py +0 -0
  92. {simdref-0.0.4 → simdref-0.0.6}/tests/test_models.py +0 -0
  93. {simdref-0.0.4 → simdref-0.0.6}/tests/test_pdfparse.py +0 -0
  94. {simdref-0.0.4 → simdref-0.0.6}/tests/test_perf.py +0 -0
  95. {simdref-0.0.4 → simdref-0.0.6}/tests/test_perf_sources.py +0 -0
  96. {simdref-0.0.4 → simdref-0.0.6}/tests/test_search.py +0 -0
  97. {simdref-0.0.4 → simdref-0.0.6}/tests/test_search_pushdown.py +0 -0
  98. {simdref-0.0.4 → simdref-0.0.6}/tests/test_source_kind_filter.py +0 -0
  99. {simdref-0.0.4 → simdref-0.0.6}/tests/test_source_validation.py +0 -0
  100. {simdref-0.0.4 → simdref-0.0.6}/tests/test_tui.py +0 -0
  101. {simdref-0.0.4 → simdref-0.0.6}/tests/test_x86_linking.py +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: simdref
3
- Version: 0.0.4
4
- Summary: Searchable SIMD intrinsic and instruction reference with CLI, manpages, TUI, LSP, and static web export.
3
+ Version: 0.0.6
4
+ Summary: Searchable SIMD intrinsic and instruction reference with CLI, manpages, TUI, and LSP.
5
5
  Author: Marco
6
6
  License: GPL-3.0-or-later
7
7
  Classifier: Development Status :: 3 - Alpha
@@ -10,119 +10,59 @@ Classifier: Intended Audience :: Developers
10
10
  Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
11
11
  Classifier: Operating System :: OS Independent
12
12
  Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.10
13
14
  Classifier: Programming Language :: Python :: 3.11
14
15
  Classifier: Programming Language :: Python :: 3.12
15
16
  Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Programming Language :: Python :: 3.14
16
18
  Classifier: Topic :: Software Development :: Documentation
17
19
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
18
- Requires-Python: >=3.11
20
+ Requires-Python: >=3.10
19
21
  Description-Content-Type: text/markdown
20
22
  License-File: LICENSE
21
- Requires-Dist: click<10,>=8.1
23
+ Requires-Dist: click<9,>=8.5
22
24
  Requires-Dist: httpx<1,>=0.28
23
- Requires-Dist: msgpack<2,>=1.0
24
- Requires-Dist: pdfplumber<1,>=0.11
25
- Requires-Dist: PyMuPDF<2,>=1.24
26
- Requires-Dist: PyYAML<7,>=6
27
- Requires-Dist: rapidfuzz<4,>=3.9
28
- Requires-Dist: rich<15,>=13
29
- Requires-Dist: textual<2,>=1.0
30
- Requires-Dist: typer<1,>=0.19
25
+ Requires-Dist: msgpack<2,>=1.2.1
26
+ Requires-Dist: pdfplumber<1,>=0.11.10
27
+ Requires-Dist: PyMuPDF<2,>=1.28
28
+ Requires-Dist: PyYAML<7,>=6.0.3
29
+ Requires-Dist: rapidfuzz<4,>=3.14
30
+ Requires-Dist: rich<16,>=15
31
+ Requires-Dist: textual<9,>=8.2
32
+ Requires-Dist: typer<1,>=0.27
31
33
  Dynamic: license-file
32
34
 
33
35
  # simdref
34
36
 
35
- [![CI](https://github.com/DiamonDinoia/simdref/actions/workflows/ci.yml/badge.svg)](https://github.com/DiamonDinoia/simdref/actions/workflows/ci.yml)
37
+ [![CI](https://github.com/simd-labs/simdref/actions/workflows/ci.yml/badge.svg)](https://github.com/simd-labs/simdref/actions/workflows/ci.yml)
36
38
  [![TestPyPI](https://img.shields.io/pypi/v/simdref?pypiBaseUrl=https%3A%2F%2Ftest.pypi.org&label=TestPyPI)](https://test.pypi.org/project/simdref/)
37
39
  [![Python](https://img.shields.io/pypi/pyversions/simdref?pypiBaseUrl=https%3A%2F%2Ftest.pypi.org)](https://pypi.org/project/simdref/)
38
40
 
39
41
  A single searchable reference for SIMD intrinsics and instructions across
40
42
  **x86 (Intel + uops.info)**, **Arm (ACLE / AARCHMRS)**, and **RISC-V
41
43
  (RVV + unified-db)**. Runs as a CLI, a Textual TUI, an LSP server,
42
- generated manpages, a static web app, and a structured JSON interface
43
- for LLM skills.
44
+ on-demand manpages (`simdref man` — or run `simdref install-manpages`
45
+ so plain `man vpaddd` works), a static web app, and a structured JSON
46
+ interface for LLM skills.
44
47
 
45
- [Web App](https://diamondinoia.github.io/simdref/) ·
48
+ [Web App](https://simdref.diamondinoia.com/) ·
46
49
  [TestPyPI](https://test.pypi.org/project/simdref/) ·
47
- [GitHub](https://github.com/DiamonDinoia/simdref) ·
50
+ [GitHub](https://github.com/simd-labs/simdref) ·
48
51
  [Contributing](CONTRIBUTING.md)
49
52
 
50
53
  <!-- Screenshots are hosted on the `docs-assets` branch so the main
51
54
  branch stays lightweight to clone. -->
52
55
 
53
56
  <p align="center">
54
- <img alt="simdref TUI" src="https://raw.githubusercontent.com/DiamonDinoia/simdref/docs-assets/img/tui.svg" width="720">
57
+ <img alt="simdref TUI" src="https://raw.githubusercontent.com/simd-labs/simdref/docs-assets/img/tui.svg" width="720">
55
58
  <br><em>Interactive TUI with ISA filters, ranked results, and measured/modeled performance tables.</em>
56
59
  </p>
57
60
 
58
- ## Install the Claude Code skill
61
+ ## Install the Claude Code and Codex skill
59
62
 
60
- `skills/asm-analysis/` ships a Claude Code skill that drives the
61
- compile → objdump → `simdref annotate` → `simdref profile` → LLM-batch
62
- pipeline automatically. This repo publishes it as a Claude Code plugin,
63
- so the one-liner install is:
64
-
65
- ```
66
- /plugin marketplace add DiamonDinoia/simdref
67
- /plugin install asm-analysis@simdref
68
- ```
69
-
70
- Run those at the Claude Code prompt. The marketplace add fetches this
71
- repo; the install wires up the skill so Claude picks it up automatically
72
- on performance-oriented prompts like *"why is this loop slow"*,
73
- *"vectorise this"*, *"look at the asm"*.
74
-
75
- ### Manual install (no marketplace)
76
-
77
- If you prefer a hand-managed copy:
78
-
79
- ```bash
80
- # symlink from a checkout — always current with main:
81
- git clone https://github.com/DiamonDinoia/simdref.git ~/src/simdref
82
- mkdir -p ~/.claude/skills
83
- ln -sf ~/src/simdref/skills/asm-analysis ~/.claude/skills/asm-analysis
84
-
85
- # or pull a one-off snapshot:
86
- mkdir -p ~/.claude/skills/asm-analysis && \
87
- curl -fsSL https://raw.githubusercontent.com/DiamonDinoia/simdref/main/skills/asm-analysis/SKILL.md \
88
- -o ~/.claude/skills/asm-analysis/SKILL.md
89
- ```
90
-
91
- See [`skills/asm-analysis/SKILL.md`](skills/asm-analysis/SKILL.md) for
92
- the full trigger list and pipeline stages.
93
-
94
- ## Install the Codex skill
95
-
96
- This repo also ships the same pipeline as an OpenAI Codex plugin, so
97
- the one-liner install from a Codex CLI prompt is:
98
-
99
- ```
100
- codex plugin marketplace add DiamonDinoia/simdref
101
- /plugins
102
- ```
103
-
104
- Pick `asm-analysis` in the browser and enable it. Codex picks up the
105
- skill automatically on performance-oriented prompts (*"why is this
106
- loop slow"*, *"vectorise this"*, *"look at the asm"*).
107
-
108
- ### Manual install (no marketplace)
109
-
110
- ```bash
111
- # user-scoped symlink — applies to every repo, always current with main:
112
- git clone https://github.com/DiamonDinoia/simdref.git ~/src/simdref
113
- mkdir -p ~/.agents/skills
114
- ln -sf ~/src/simdref/codex-skills/asm-analysis/skills/asm-analysis \
115
- ~/.agents/skills/asm-analysis
116
-
117
- # or scope the skill to a single repo:
118
- mkdir -p .agents/skills
119
- ln -sf ~/src/simdref/codex-skills/asm-analysis/skills/asm-analysis \
120
- .agents/skills/asm-analysis
121
- ```
122
-
123
- See
124
- [`codex-skills/asm-analysis/skills/asm-analysis/SKILL.md`](codex-skills/asm-analysis/skills/asm-analysis/SKILL.md)
125
- for the trigger list and pipeline stages.
63
+ The `asm-analysis` skill for Claude Code and OpenAI Codex lives in
64
+ [simd-labs/simdref-skill](https://github.com/simd-labs/simdref-skill).
65
+ Follow the install steps in that repo.
126
66
 
127
67
  ## Install
128
68
 
@@ -133,15 +73,6 @@ isa doctor # confirm everything is wired up
133
73
  isa # open the TUI
134
74
  ```
135
75
 
136
- For the bleeding-edge version with the `simdref profile` subcommand
137
- (runtime-profile → asm-annotation pipeline, Stage 2b of the skill),
138
- install from `main`:
139
-
140
- ```bash
141
- pipx install git+https://github.com/DiamonDinoia/simdref.git@main
142
- # or editable: pip install -e git+https://github.com/DiamonDinoia/simdref.git@main#egg=simdref
143
- ```
144
-
145
76
  The package installs two equivalent executables, **`isa`** (short) and
146
77
  **`simdref`** (explicit). The rest of this README uses `isa`.
147
78
 
@@ -173,15 +104,15 @@ isa # open the interactive TUI
173
104
 
174
105
  **Web app** — a self-contained static SPA with filters and performance
175
106
  tables, published to GitHub Pages at
176
- [diamondinoia.github.io/simdref](https://diamondinoia.github.io/simdref/).
177
- Export your own copy:
107
+ [simdref.diamondinoia.com](https://simdref.diamondinoia.com/) and
108
+ built from the `simdref-web` repo. This repo (`simdref-core`) exports the
109
+ JSON data it consumes:
178
110
 
179
111
  ```bash
180
- isa web --web-dir ./web
181
- isa serve --web-dir ./web # gzip-aware local server
112
+ isa export --out-dir ./site-data
182
113
  ```
183
114
 
184
- The [live demo](https://diamondinoia.github.io/simdref/) hosts the same
115
+ The [live demo](https://simdref.diamondinoia.com/) hosts the same
185
116
  build — search across ~122k entries with ISA filters and per-uarch perf
186
117
  tables.
187
118
 
@@ -257,10 +188,6 @@ and `ld` still consume it.
257
188
  | `isa doctor` | Check the installation — pass/fail per component, non-zero exit on failure |
258
189
  | `isa update` | Download the pre-built release catalog (no `llvm-mca` required); `--from-release` for the GitHub Release artifact |
259
190
  | `isa annotate <file.s>` | Annotate a `.s` assembly file with per-instruction summaries and latency/CPI — writes `<file>.sa` |
260
- | `isa profile run` | Compile→record→disassemble→annotate→merge in one shot (perf or llvm-mca) |
261
- | `isa profile ingest` | Convert profiler output (perf / VTune / uProf / xctrace / llvm-mca / exegesis) to normalized samples |
262
- | `isa profile hotloops` | Detect natural loops in a disassembly and rank them by sample weight |
263
- | `isa profile merge` | Attach hotness data to the annotated instruction stream |
264
191
  | `isa llm query <q>` | Strict lookup → JSON/NDJSON/Markdown (see [docs/LLM.md](docs/LLM.md)) |
265
192
  | `isa llm batch` | Resolve many queries from stdin in one invocation (NDJSON out) |
266
193
  | `isa llm list` | Dump the `FilterSpec` or stream matching catalog entries |
@@ -271,8 +198,7 @@ and `ld` still consume it.
271
198
  | Command | Description |
272
199
  | -------------------------------- | ----------------------------------------------------------------------------------------------- |
273
200
  | `isa build` | Full local rebuild from upstream sources, including Intel SDM parsing (`llvm-mca` 18+ required) |
274
- | `isa web` | Export the static web app under `web/` |
275
- | `isa serve` | Serve the exported web app locally (gzip-aware) |
201
+ | `isa export` | Export site data (JSON only) — the release contract for the `simdref-web` repo |
276
202
  | `isa completion install [SHELL]` | Install shell completion into the user's profile |
277
203
  | `isa completion show [SHELL]` | Print the completion script for a shell |
278
204
 
@@ -307,7 +233,7 @@ mixed.
307
233
  ## Development
308
234
 
309
235
  ```bash
310
- git clone https://github.com/DiamonDinoia/simdref.git
236
+ git clone https://github.com/simd-labs/simdref.git
311
237
  cd simdref
312
238
  python3 -m venv .venv
313
239
  .venv/bin/pip install -e .
@@ -1,96 +1,34 @@
1
1
  # simdref
2
2
 
3
- [![CI](https://github.com/DiamonDinoia/simdref/actions/workflows/ci.yml/badge.svg)](https://github.com/DiamonDinoia/simdref/actions/workflows/ci.yml)
3
+ [![CI](https://github.com/simd-labs/simdref/actions/workflows/ci.yml/badge.svg)](https://github.com/simd-labs/simdref/actions/workflows/ci.yml)
4
4
  [![TestPyPI](https://img.shields.io/pypi/v/simdref?pypiBaseUrl=https%3A%2F%2Ftest.pypi.org&label=TestPyPI)](https://test.pypi.org/project/simdref/)
5
5
  [![Python](https://img.shields.io/pypi/pyversions/simdref?pypiBaseUrl=https%3A%2F%2Ftest.pypi.org)](https://pypi.org/project/simdref/)
6
6
 
7
7
  A single searchable reference for SIMD intrinsics and instructions across
8
8
  **x86 (Intel + uops.info)**, **Arm (ACLE / AARCHMRS)**, and **RISC-V
9
9
  (RVV + unified-db)**. Runs as a CLI, a Textual TUI, an LSP server,
10
- generated manpages, a static web app, and a structured JSON interface
11
- for LLM skills.
10
+ on-demand manpages (`simdref man` — or run `simdref install-manpages`
11
+ so plain `man vpaddd` works), a static web app, and a structured JSON
12
+ interface for LLM skills.
12
13
 
13
- [Web App](https://diamondinoia.github.io/simdref/) ·
14
+ [Web App](https://simdref.diamondinoia.com/) ·
14
15
  [TestPyPI](https://test.pypi.org/project/simdref/) ·
15
- [GitHub](https://github.com/DiamonDinoia/simdref) ·
16
+ [GitHub](https://github.com/simd-labs/simdref) ·
16
17
  [Contributing](CONTRIBUTING.md)
17
18
 
18
19
  <!-- Screenshots are hosted on the `docs-assets` branch so the main
19
20
  branch stays lightweight to clone. -->
20
21
 
21
22
  <p align="center">
22
- <img alt="simdref TUI" src="https://raw.githubusercontent.com/DiamonDinoia/simdref/docs-assets/img/tui.svg" width="720">
23
+ <img alt="simdref TUI" src="https://raw.githubusercontent.com/simd-labs/simdref/docs-assets/img/tui.svg" width="720">
23
24
  <br><em>Interactive TUI with ISA filters, ranked results, and measured/modeled performance tables.</em>
24
25
  </p>
25
26
 
26
- ## Install the Claude Code skill
27
+ ## Install the Claude Code and Codex skill
27
28
 
28
- `skills/asm-analysis/` ships a Claude Code skill that drives the
29
- compile → objdump → `simdref annotate` → `simdref profile` → LLM-batch
30
- pipeline automatically. This repo publishes it as a Claude Code plugin,
31
- so the one-liner install is:
32
-
33
- ```
34
- /plugin marketplace add DiamonDinoia/simdref
35
- /plugin install asm-analysis@simdref
36
- ```
37
-
38
- Run those at the Claude Code prompt. The marketplace add fetches this
39
- repo; the install wires up the skill so Claude picks it up automatically
40
- on performance-oriented prompts like *"why is this loop slow"*,
41
- *"vectorise this"*, *"look at the asm"*.
42
-
43
- ### Manual install (no marketplace)
44
-
45
- If you prefer a hand-managed copy:
46
-
47
- ```bash
48
- # symlink from a checkout — always current with main:
49
- git clone https://github.com/DiamonDinoia/simdref.git ~/src/simdref
50
- mkdir -p ~/.claude/skills
51
- ln -sf ~/src/simdref/skills/asm-analysis ~/.claude/skills/asm-analysis
52
-
53
- # or pull a one-off snapshot:
54
- mkdir -p ~/.claude/skills/asm-analysis && \
55
- curl -fsSL https://raw.githubusercontent.com/DiamonDinoia/simdref/main/skills/asm-analysis/SKILL.md \
56
- -o ~/.claude/skills/asm-analysis/SKILL.md
57
- ```
58
-
59
- See [`skills/asm-analysis/SKILL.md`](skills/asm-analysis/SKILL.md) for
60
- the full trigger list and pipeline stages.
61
-
62
- ## Install the Codex skill
63
-
64
- This repo also ships the same pipeline as an OpenAI Codex plugin, so
65
- the one-liner install from a Codex CLI prompt is:
66
-
67
- ```
68
- codex plugin marketplace add DiamonDinoia/simdref
69
- /plugins
70
- ```
71
-
72
- Pick `asm-analysis` in the browser and enable it. Codex picks up the
73
- skill automatically on performance-oriented prompts (*"why is this
74
- loop slow"*, *"vectorise this"*, *"look at the asm"*).
75
-
76
- ### Manual install (no marketplace)
77
-
78
- ```bash
79
- # user-scoped symlink — applies to every repo, always current with main:
80
- git clone https://github.com/DiamonDinoia/simdref.git ~/src/simdref
81
- mkdir -p ~/.agents/skills
82
- ln -sf ~/src/simdref/codex-skills/asm-analysis/skills/asm-analysis \
83
- ~/.agents/skills/asm-analysis
84
-
85
- # or scope the skill to a single repo:
86
- mkdir -p .agents/skills
87
- ln -sf ~/src/simdref/codex-skills/asm-analysis/skills/asm-analysis \
88
- .agents/skills/asm-analysis
89
- ```
90
-
91
- See
92
- [`codex-skills/asm-analysis/skills/asm-analysis/SKILL.md`](codex-skills/asm-analysis/skills/asm-analysis/SKILL.md)
93
- for the trigger list and pipeline stages.
29
+ The `asm-analysis` skill for Claude Code and OpenAI Codex lives in
30
+ [simd-labs/simdref-skill](https://github.com/simd-labs/simdref-skill).
31
+ Follow the install steps in that repo.
94
32
 
95
33
  ## Install
96
34
 
@@ -101,15 +39,6 @@ isa doctor # confirm everything is wired up
101
39
  isa # open the TUI
102
40
  ```
103
41
 
104
- For the bleeding-edge version with the `simdref profile` subcommand
105
- (runtime-profile → asm-annotation pipeline, Stage 2b of the skill),
106
- install from `main`:
107
-
108
- ```bash
109
- pipx install git+https://github.com/DiamonDinoia/simdref.git@main
110
- # or editable: pip install -e git+https://github.com/DiamonDinoia/simdref.git@main#egg=simdref
111
- ```
112
-
113
42
  The package installs two equivalent executables, **`isa`** (short) and
114
43
  **`simdref`** (explicit). The rest of this README uses `isa`.
115
44
 
@@ -141,15 +70,15 @@ isa # open the interactive TUI
141
70
 
142
71
  **Web app** — a self-contained static SPA with filters and performance
143
72
  tables, published to GitHub Pages at
144
- [diamondinoia.github.io/simdref](https://diamondinoia.github.io/simdref/).
145
- Export your own copy:
73
+ [simdref.diamondinoia.com](https://simdref.diamondinoia.com/) and
74
+ built from the `simdref-web` repo. This repo (`simdref-core`) exports the
75
+ JSON data it consumes:
146
76
 
147
77
  ```bash
148
- isa web --web-dir ./web
149
- isa serve --web-dir ./web # gzip-aware local server
78
+ isa export --out-dir ./site-data
150
79
  ```
151
80
 
152
- The [live demo](https://diamondinoia.github.io/simdref/) hosts the same
81
+ The [live demo](https://simdref.diamondinoia.com/) hosts the same
153
82
  build — search across ~122k entries with ISA filters and per-uarch perf
154
83
  tables.
155
84
 
@@ -225,10 +154,6 @@ and `ld` still consume it.
225
154
  | `isa doctor` | Check the installation — pass/fail per component, non-zero exit on failure |
226
155
  | `isa update` | Download the pre-built release catalog (no `llvm-mca` required); `--from-release` for the GitHub Release artifact |
227
156
  | `isa annotate <file.s>` | Annotate a `.s` assembly file with per-instruction summaries and latency/CPI — writes `<file>.sa` |
228
- | `isa profile run` | Compile→record→disassemble→annotate→merge in one shot (perf or llvm-mca) |
229
- | `isa profile ingest` | Convert profiler output (perf / VTune / uProf / xctrace / llvm-mca / exegesis) to normalized samples |
230
- | `isa profile hotloops` | Detect natural loops in a disassembly and rank them by sample weight |
231
- | `isa profile merge` | Attach hotness data to the annotated instruction stream |
232
157
  | `isa llm query <q>` | Strict lookup → JSON/NDJSON/Markdown (see [docs/LLM.md](docs/LLM.md)) |
233
158
  | `isa llm batch` | Resolve many queries from stdin in one invocation (NDJSON out) |
234
159
  | `isa llm list` | Dump the `FilterSpec` or stream matching catalog entries |
@@ -239,8 +164,7 @@ and `ld` still consume it.
239
164
  | Command | Description |
240
165
  | -------------------------------- | ----------------------------------------------------------------------------------------------- |
241
166
  | `isa build` | Full local rebuild from upstream sources, including Intel SDM parsing (`llvm-mca` 18+ required) |
242
- | `isa web` | Export the static web app under `web/` |
243
- | `isa serve` | Serve the exported web app locally (gzip-aware) |
167
+ | `isa export` | Export site data (JSON only) — the release contract for the `simdref-web` repo |
244
168
  | `isa completion install [SHELL]` | Install shell completion into the user's profile |
245
169
  | `isa completion show [SHELL]` | Print the completion script for a shell |
246
170
 
@@ -275,7 +199,7 @@ mixed.
275
199
  ## Development
276
200
 
277
201
  ```bash
278
- git clone https://github.com/DiamonDinoia/simdref.git
202
+ git clone https://github.com/simd-labs/simdref.git
279
203
  cd simdref
280
204
  python3 -m venv .venv
281
205
  .venv/bin/pip install -e .
@@ -4,10 +4,10 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "simdref"
7
- version = "0.0.4"
8
- description = "Searchable SIMD intrinsic and instruction reference with CLI, manpages, TUI, LSP, and static web export."
7
+ version = "0.0.6"
8
+ description = "Searchable SIMD intrinsic and instruction reference with CLI, manpages, TUI, and LSP."
9
9
  readme = "README.md"
10
- requires-python = ">=3.11"
10
+ requires-python = ">=3.10"
11
11
  license = {text = "GPL-3.0-or-later"}
12
12
  authors = [
13
13
  {name = "Marco"}
@@ -19,23 +19,30 @@ classifiers = [
19
19
  "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
20
20
  "Operating System :: OS Independent",
21
21
  "Programming Language :: Python :: 3",
22
+ "Programming Language :: Python :: 3.10",
22
23
  "Programming Language :: Python :: 3.11",
23
24
  "Programming Language :: Python :: 3.12",
24
25
  "Programming Language :: Python :: 3.13",
26
+ "Programming Language :: Python :: 3.14",
25
27
  "Topic :: Software Development :: Documentation",
26
28
  "Topic :: Software Development :: Libraries :: Python Modules",
27
29
  ]
30
+ # `requires-python` tracks the non-EOL CPython range; 3.10 goes EOL 2026-10-31.
31
+ # Lower dependency bound is the version CI resolves and tests; anything older is
32
+ # an untested compatibility claim. Upper bound is the next major (next minor for
33
+ # 0.x, where that is the compatibility unit). msgpack floors above its own
34
+ # advisory: 1.2.0 and earlier carry GHSA-6v7p-g79w-8964.
28
35
  dependencies = [
29
- "click>=8.1,<10",
36
+ "click>=8.5,<9",
30
37
  "httpx>=0.28,<1",
31
- "msgpack>=1.0,<2",
32
- "pdfplumber>=0.11,<1",
33
- "PyMuPDF>=1.24,<2",
34
- "PyYAML>=6,<7",
35
- "rapidfuzz>=3.9,<4",
36
- "rich>=13,<15",
37
- "textual>=1.0,<2",
38
- "typer>=0.19,<1",
38
+ "msgpack>=1.2.1,<2",
39
+ "pdfplumber>=0.11.10,<1",
40
+ "PyMuPDF>=1.28,<2",
41
+ "PyYAML>=6.0.3,<7",
42
+ "rapidfuzz>=3.14,<4",
43
+ "rich>=15,<16",
44
+ "textual>=8.2,<9",
45
+ "typer>=0.27,<1",
39
46
  ]
40
47
 
41
48
  [project.scripts]
@@ -45,14 +52,10 @@ simdref-lsp = "simdref.lsp:main"
45
52
 
46
53
  [tool.setuptools]
47
54
  package-dir = {"" = "src"}
48
- include-package-data = true
49
55
 
50
56
  [tool.setuptools.packages.find]
51
57
  where = ["src"]
52
58
 
53
- [tool.setuptools.package-data]
54
- simdref = ["templates/*"]
55
-
56
59
  [tool.ruff]
57
60
  line-length = 100
58
- target-version = "py311"
61
+ target-version = "py310"