diff options
| -rw-r--r-- | README.md | 4 | ||||
| -rw-r--r-- | docs/GRAPH_VIEW.md | 22 | ||||
| -rw-r--r-- | experiments/bench_ops.py | 6 | ||||
| -rw-r--r-- | pyproject.toml | 4 |
4 files changed, 18 insertions, 18 deletions
@@ -146,10 +146,6 @@ database. Iterate on one with `--only`: ~/ida-venv/bin/python tests/test_scenarios.py targets/echo --only hex,rename ``` -Before optimising or debugging a slow run, read -[`.fastfeedback/SPEED.md`](.fastfeedback/SPEED.md) — per-suite timings, the known -flake, and the four ways a test here wastes minutes. - — [sl0p.foo](https://sl0p.foo) diff --git a/docs/GRAPH_VIEW.md b/docs/GRAPH_VIEW.md index a3d2645..3aced1f 100644 --- a/docs/GRAPH_VIEW.md +++ b/docs/GRAPH_VIEW.md @@ -72,7 +72,7 @@ keypress, and triskel's cost knees hard just past it (174 blocks: 66 ms; | | native | triskel | |---|---|---| | algorithm | layered Sugiyama, below | SESE decomposition ([paper](https://hal.science/hal-04996939)) | -| ships with | always, pure python | needs `pytriskel` (our fork) | +| ships with | always, pure python | needs `pytriskel` (patched fork, unpublished) | | shape | wide and short | narrow and tall | | crossings | more | far fewer | | 87-block `main` | 15 ms, 1202×444 | 37 ms, 845×789 | @@ -224,6 +224,14 @@ drive raw graph action=zoom It is optional; without it everything works and `auto` means `native`. +It needs `pytriskel`, and specifically a **patched build that is not published +anywhere yet**. Upstream's wheels stop at cp313 with no sdist (so there is +nothing to install on 3.14), and on any version their `get_waypoints()` raises, +which means no edge routes at all. Until that fork is released you will get the +native engine — which is the default, ships with the repo, and is fully +supported. The rest of this section only applies if you already have a patched +build tree. + **Install it into the interpreter the launcher actually runs**, which is `$IDATUI_PYTHON` and defaults to `~/ida-venv/bin/python` — *not* the repo's `.venv`, which is only what the tests use. Getting this wrong is the one way to @@ -231,14 +239,10 @@ see `no pytriskel in ...` in the status bar while `tests/test_graph.py` happily exercises both engines; the message names the interpreter for that reason. ```bash -~/ida-venv/bin/python -m pip install ~/dev/triskel/bindings/python -.venv/bin/python -m pip install ~/dev/triskel/bindings/python # for the tests +"$IDATUI_PYTHON" -m pip install /path/to/triskel/bindings/python +.venv/bin/python -m pip install /path/to/triskel/bindings/python # for the tests ``` Needs cmake, ninja and a C++23 compiler at install time; the wheel is built from -source for whichever interpreter runs pip. - -That is **our fork**, not PyPI. Upstream's wheels stop at cp313 with no sdist -(so there is nothing to install on 3.14), and on any version their -`get_waypoints()` raises, which means no edge routes at all. `~/dev/triskel/PATCHES.md` -lists every change. `$IDATUI_TRISKEL_PATH` can point at a build tree instead. +source for whichever interpreter runs pip. `$IDATUI_TRISKEL_PATH` can point at a +build tree instead of installing. diff --git a/experiments/bench_ops.py b/experiments/bench_ops.py index 6ed64e0..178b4bc 100644 --- a/experiments/bench_ops.py +++ b/experiments/bench_ops.py @@ -18,14 +18,14 @@ replace or delete it:: PYTHONPATH=. ~/ida-venv/bin/python /tmp/bench_ops.py # A: the client as it SHIPPED on the old library, workarounds and all - git checkout d74b6f5 # the commit before the workaround removal + git checkout 8550474 # the commit before the workaround removal PYTHONPATH=. ~/ida-venv/bin/python /tmp/bench_ops.py - git checkout master && git -C ~/dev/ida-codemode checkout main # ALWAYS restore + git checkout main && git -C ~/dev/ida-codemode checkout main # ALWAYS restore ida-codemode is installed **editable** into both venvs, so checking that repo out swaps the backend under the TUI with no reinstall -- which is what makes this A/B -cheap. Results for 0.3.1 vs 0.3.2 are in `.fastfeedback/SPEED.md`. +cheap. """ from __future__ import annotations diff --git a/pyproject.toml b/pyproject.toml index f8e75e6..a46dd45 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,8 +16,8 @@ dev = ["pytest>=8"] # The graph view's SESE layout engine (`e` in graph mode) is optional: without # it, layout falls back to the pure-python engine. It is deliberately NOT listed # as a dependency -- PyPI's pytriskel has no wheel for current Pythons, no sdist, -# and a binding bug that makes edge routes unreachable. Install our fork: -# uv pip install ~/dev/triskel/bindings/python +# and a binding bug that makes edge routes unreachable. It needs a patched fork +# that is not published yet; see docs/GRAPH_VIEW.md. [project.scripts] idatui = "idatui.launch:main" |
