aboutsummaryrefslogtreecommitdiffstats
path: root/docs/CODEMODE_UPSTREAM.md (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Adopt idb_events and remote module features from ida-codemodeDuncan Ogilvie8 days1-61/+78
|
* Re-check the upstream findings report against 0.6.1blasty2026-08-141-36/+79
| | | | | | | | | | | | | | | | | | | Items 4, 8 and 9 are fixed (loader switches on reopen, package exports, py.typed), so the report and the skill no longer claim 4-9 are all open. Item 7 is partial: DatabaseManager grew a DatabaseEventCallback, but there is still nothing an external caching client can observe, which was the point. 5 and 6 are untouched. The "are these files byte-identical" re-check recipe is removed: it named client.py/registry.py/resolver.py, which 0.5.x renamed, so it would have reported "unchanged" forever. The replacement is a diff of __all__ and the DatabaseOpenOptions fields, both of which the contract suite now asserts whenever the library is importable. Also records two things that cost time here: the loader-switch strip needs input_path != source, so an .i64 passed directly alongside load options still fatals; and an editable checkout does not enforce its own dependency floors, so a `git pull` to 0.6.1 leaves ida-domain/zeromcp silently too old.
* Docs: re-check ALL nine upstream findings against 0.3.2blasty2026-08-091-14/+49
| | | | | | | | | | | | | | | | | | | | | Items 1-2 were marked fixed; 3-9 were left 'not re-verified', which was a gap rather than a finding. Checked all seven. Item 3 is also FIXED, and by a lot: a same-box A/B (roll the editable checkout back to 4195f21, measure, roll forward) puts execute_python('result = 1') at 2.055ms on 0.3.1 and 0.294ms on 0.3.2 -- 7.0x, now about the cost of a bare HTTP GET. The 0.3.1 column reproduces the originally documented 2.025ms almost exactly, which is what makes the 0.3.2 column believable. So the execute_sync marshalling that was ~93% of the floor is gone, and the 'never make a call per row' rule is much weaker. Items 4-9 are open by construction: client/registry/resolver/server/ database/worker .py are byte-identical between 0.3.1 and 0.3.2, and all six items live in those files. Recorded that as the cheap re-check recipe for the next upstream pull. SPEED.md taught the obsolete 2ms floor as a design rule; corrected, with a warning not to go rewrite working batched code to be chatty.
* Docs: mark the two upstream perf findings fixed in 0.3.2blasty2026-08-091-3/+24
| | | | | | | | CODEMODE_UPSTREAM items 1 (timeout_trace) and 2 (to_jsonable) both landed upstream; note it at the top, on each item and in the priority table, and flag that items 3-9 are not re-verified against 0.3.2. SPEED.md described the settrace workaround and its IDATUI_CODEMODE_TRACE knob as current -- both are gone, and its backend table predates 0.3.2.
* docs: upstream findings for the ida-codemode maintainersblasty2026-08-071-0/+269
Nine items found while porting a latency-sensitive client, each with the measurement behind it and a suggested fix, ordered by what it cost us. The two that matter: timeout_trace returns itself, which turns on line tracing in every frame (52x on ida_bytes.get_flags, 10x on a listing page), and to_jsonable walking large results (114x what json.dumps of the same data costs). Together they were the difference between 35x slower than the worker we replaced and within 2x of it. Both live in the runtime, so every client pays them until they are fixed centrally -- we only found them because we had an in-process implementation to compare against. Also records the things we had to reach into internals for (waiting for a lease to release), the failure modes that are silent or fatal rather than typed (loader switches on an existing IDB, an IDB replaced under a live lease), and the one feature we could not port at all (discard-and-quit, since a managed worker saves when its final lease closes).