You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit fd5b241
Browse filesBrowse the repository at this point in the historyBrowse files
perf(csharp): cut the member-access pass's overhead; drop the stale changelog hunk (#3528)
Measured on jellyfin/jellyfin (2,208 .cs files, +26.6k access entries on top
of 85.6k member calls, +6,347 `uses` edges), graph output byte-identical
before and after:
- engine.py: the member-access branch asked tree-sitter for `node.parent`
twice per member_access_expression to tell a callee (`db.Users.Where`)
from a property read (`db.Users`); `Node.parent` re-descends from the
root on every call (~700ms over the corpus's 137k such nodes vs ~13ms
for a set lookup). The walk is pre-order, so the invocation branch now
records the callee node's id in a per-file `csharp_callee_ids` set and
the access branch tests membership instead. Per-file extraction goes
from +1.2-1.6s over base to +0.7-0.8s.
- extract.py: `_resolve_type_name_nid` memoizes per (type_name, caller,
file) — a method reads and calls the same receiver many times over, and
every access is one more entry that types it (80k -> 40k scope-chain
walks on the corpus). The `defines` scan that builds property_index is
folded into the existing `method` scan: one pass over all_edges fills
both twin indexes. `_resolve_csharp_member_calls` goes from 430ms to
288ms (base: 250ms).
- CHANGELOG.md: the entry was written under `## 0.9.61 (unreleased)`; after
rebasing onto v8 it lands inside the released 0.9.61 section. Release
notes here are written at the version bump (see 9335cee), so the hunk is
dropped rather than moved.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
(cherry picked from commit 0f8d29d7326acb10c89bbd87cc1cdcb842c32f5a)
Copy file name to clipboardExpand all lines: CHANGELOG.md
-1Lines changed: 0 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,6 @@ Full release notes with details on each version: [GitHub Releases](https://githu
4
4
5
5
## 0.9.61 (unreleased)
6
6
7
-
- Fix: a C# member access on a typed receiver (`db.Users` in `db.Users.Where(...)`, `this.Count`, `Config.Instance`) now resolves to the receiver type's property node as a `uses` edge, the way `recv.Method()` resolves to its method — so the ORM query sites behind a `DbSet<T>` property, whose table name never appears in source, are reachable from the property (#3528).
8
7
- Fix: `graphify.serve` now imports cleanly on Python 3.12 and 3.13. The `chinese` extra pins `jieba-py` from 3.12 onward (0.9.60 mistakenly kept the old `jieba` until 3.14, and its invalid regex escapes are a hard error on 3.12+), and the jieba import now suppresses the tokenizer's `SyntaxWarning` regardless of message or line so it never escalates under `-W error`.
9
8
- Fix: the git hook's rebuild-root guard now rejects a symlink-loop or dangling `.graphify_root` on Python 3.13, whose `Path.resolve()` no longer raises on a loop — the saved root must resolve to a real directory inside the repo before it is adopted.
0 commit comments