Repository navigation
ripwire 0.6.7: more complete answers, faster calls, fewer bytes. Caller rows now name their call sites, --lego
walks the whole subclass tree, and --whereis labels other branches' definitions with the parser. A warm CLI call costs
faster, and --whereis is about three times faster: --whereis=lego on this repository takes 4.7 s instead of 13.3 s and returns
18,616 bytes instead of 56,075 (0.6.5 vs 0.6.7, same checkout).
Read this first: the routing default changed (#381)
An install with no ~/.ripwire/meter.conf now splits sessions (arm=auto): about half get no routing hints and no
SessionStart primer, so the treatment-versus-control comparison has a control group. Put arm=treatment in
~/.ripwire/meter.conf to keep the old behaviour. Prompts starting with <channel or <agent-message are now treated
as harness events. Thanks @ahmedibrahim085.
Complete answers
--callers/--safe-deleterows carrysites_at=, the call sites asfile:line, so the first answer holds the lines to edit--callers=escapeXmlon this repository: the 40 caller rows of its first answer, of 142 callers, carry 79 call lines (0.6.5: none).--legolists implementors below a direct one (via=,depth=). A two-level formatter hierarchy fixture: 5 of 5 implementors (was 2).--whereislabels another ref's rows by parsing the blob.--whereis=escapeXmlon this repository: 2 rows, both the declaration (was 60 rows, 54 of them call sites).--forgives the function a question names its own call-hop row. On 32--forquestions over 8 public repos, 8 answers gain it and 23 are byte-identical (+1.4% bytes in total).- The default map lists directories and entry points it used to cut. tmux
input.c,key-bindings.candmainnow appear (+7.0% median bytes). --impactrolls its reach up per file. tmux--impact=grid_set_cellnamesinput.candwindow-client.c(was neither).
Faster
- A warm
--callerscall on a 3,100-file snapshot went from 319 to 269 ms, every answer byte-identical (about 8–10% on this repository against 0.6.5). --whereison a checkout with 139 local branches: 12.3 s → 3.7 s;--whereis=legoon this repository's 596 refs: 13.3 s → 4.7 s (vs 0.6.5).- Memory, plainly:
--whereisnow parses other branches' files to tell definitions from call sites, so its peak is about 1.0 GB, up from 0.6 GB in 0.6.5 (--whereis=lego, 596 refs). Within this release it was cut from 1.42 GB by reading back only the files it parses.
Smaller answers, same rows
--whereis=lego: 56,075 → 18,616 B against 0.6.5 (129,314 B mid-cycle), every row kept. A long line'st=is a 200-byte preview, andnext=replays it whole.--expand/--outlinedrop the ride-along map once every definition is served.--expand=subtokens: 26,791 → 5,317 B.--grep=split-windowon tmux: 16,108 → 5,453 B, with the defining line first.- A clean-tree
--quality-deltaprints its verdict, not its acks: 14,594 → 978 B on this repository.
Honest answers
- A C++ call named like a standard member (
empty,size,find, …) binds no in-tree namesake unless a rule ties its receiver to one. On this repository's map, top-20 rows carrying such a name: 14 → 0. - A call bound by name alone keeps its rows and says so (
via="name"), and typed receivers resolve. Cost: +2.04% bytes over 210 calls on eight public repositories. - The cross-branch verbs,
--whereisand the git history walk refuse or disclose when git could not be read. They no longer answerhits="0"or a silent empty churn. - A compact
--foranswer fits an explicit--token-budgetwherever the full dialect does, and says why where it cannot. --seamsno longer reports doc-to-doc links as untested seams. They are counted indoc_links=(53 on this repository).
Imports and languages
- JS/TS and Go import edges come from the shared
@import.pathcapture (#358), with output byte-identical. The C-family slice is from @lennix1337 (#368). - Ruby calls resolve by Ruby's method lookup: mixins, class objects,
self, built receivers, RSpec targets and Rails callbacks (#373, #325, #338, thanks @andriytyurnikov). - A Rails
db/schema.rbrenders its columns as definitions (#339, thanks @mpapis).
MCP and paging
--for/--pack-taskunder a budget take a resumable--limit/--offsetwindow, and MCPexploregainslimit/offset(#362, thanks @pt-act; issue #294).- A memory guard on every root gives a disclosed partial answer instead of unbounded growth (#350, thanks @KilimcininKorOglu).
Fixed before release
- C++: a call on an element of a standard container whose element type is in-tree (
m[k].empty(),.at(),.front(),.back()) keeps its by-name edge instead of being declined as a standard member (ninjaParseRule'sbindings_["rspfile"].empty()). --impactwith a name that matches more than one definition: a file row whose symbols were matched by name alone says so (via="name"/by_name=), instead of reading as a proven dependant.
Thanks
Code: @andriytyurnikov, @lennix1337, @mpapis, @pt-act, @llvm-x86 (#342/#351: the Linux sanitizer path builds again).
Reports: @ahmedibrahim085 (#381), @KilimcininKorOglu (#350), @toasterbook88 (#353, --scan-skills net-exfil grading).
Want to help? CONTRIBUTING.md now maps each feature family to its one shared handler, with slices you can claim.
Versions and caches
The parser version is now 167 and the cache version 31, so caches and quality snapshots from earlier builds are rebuilt once on first run.
Full notes: CHANGELOG.md, section 0.6.7.