Highlights
- #1925 engines: every platform ships parallel engines (OpenMP, fixed
-j 8). Linux, macOS (Apple Silicon and Intel), and Windows; output is identical to a serial solve, validated on clean installs. Large solves 2–2.5x faster (a 200 MB Python graph: 31 s → 15 s on Windows) engines
- #1886
--library auto: stages the project's dependencies in all five languages (Python venv, node_modules, Java sources jars or a decompiled jar, NuGet decompiled), compiled once into a cache; a dependency change rebuilds the graph library
- #1895
axiomcode link: an answer lists the calls it could not resolve, with candidates; an agent links them, and impact, path and tests walk them as [asserted], kept across rebuilds until the line is edited links
- #1858 parser: HTML and CSS front end on tree-sitter, with specification and torture suites (parser 0.2.0) parser
- #1819 #1852 a smaller surface:
impact, path, tests, context (plus link, index) answer as numbered places, each with the code of the function it sits in; the MCP server exposes impact, path, tests, context and link CLI
- Test-selection recall up in every language
Performance
- #1925 parallel solve on every platform at
-j 8 (above) engines
- #1853 python: the parse stage walks the syntax tree once and links with map lookups — 2.6–3.2x faster on large projects (212 s → 67 s on 526k LOC) parser
- #1860 #1863 rules: the profiled hot shapes rewritten in TypeScript, JavaScript, Python and C# — a 1.1M-LOC TypeScript solve 192 s → 99 s serial, 66 s in parallel engine
- #1851 #1850 #1847 impact/path: the facts export stops paying per-row SQL (171 s → 55 s on 8.6k files), runs once per graph however many queries arrive, and three missing lookup indexes no longer make large-repo queries take minutes impact
- #1926 impact: the first query after
index no longer waits on the background facts export, and warm queries stop repeating per-site work — back to 0.1.8 speeds (a JavaScript first query 1.69 s → 0.50 s) impact
- #1831 engines are compiled at build time, not at the first index engines
- #1862 #1864 #1879 refresh: edits are batched where a rebuild is slow; a query mid-edit answers at once refresh
- Real-project index on clean machines, 0.1.8 → 0.1.9: Linux 2–8x faster (Python 37.7 s → 4.6 s), Windows 2–3x (Python 81.6 s → 26.9 s) engines
Improvements
- #1882 #1883 #1884 #1885 #1891 python: library callbacks followed from summaries of the installed library; pytest fixture and parametrize typing; operators and dunders;
getattr f-string dispatch; python -m spawns; src-layout packages and conftest imports; tighter transitive reach python
- #1876 #1888 #1893 #1874 typescript: JSX hand-offs, imported holders, list element types, multi-line test registrars, vitest/jest set-up files,
Object.assign function objects, overload implementations; tests that never load the change are left out typescript
- #1877 #1894 #1780 #1781 #1789 #1791 javascript: imports past a hand-written .d.ts, through vite/webpack aliases and directory imports; Vue
defineComponent and .vue template tags; React context and redux connect handlers; tests that never load the change are left out javascript
- #1880 #1898 java: type initializers reached only from what initializes the type; library-run members through constructors; platform receivers are library boundaries; operator arguments prune overloads java
- #1881 #1896 csharp: namespace-relative names,
using resources, implicit base(); properties and indexers dispatch through interfaces; using/foreach/collection-initializer calls; a function handed to a parameter is followed; overloads pruned by argument shape — callers F1 0.71 → 0.83 against the compiler csharp
- #1817 #1822 #1828 impact, path: handler tables keyed by an event type, message keys and in-process registries join publishers to handlers impact
- #1808 #1810 #1841 #1844 impact: evidence for rows an answer is not sure of; call sites of a name declared nowhere; interface dispatch worded as certain; direct callers and links grep cannot make kept impact
- #1857 index: constants carry numbers and booleans, and a constant answers with its value index
- #1821 #1806 context: follows middleware
next(), names a dispatch point's handlers, starts type entry points at their methods context
- #1921 #1912
--json answers with a JSON document from every verb and form, refusals included cli
Bugs
- #1913 engines: the prebuilt engines needed
libgomp.so.1 on Linux and vcomp140.dll on Windows, so indexing failed on a clean machine; Linux links libgomp statically and Windows ships the OpenMP runtime beside each engine engines
- #1916 windows: the export lock's liveness probe sent Ctrl-C to the exporter, stalling impact/path for minutes; it now asks Windows whether the process runs Windows
- #1918 windows:
--library auto staged nothing (the dependency compile ran a bash script directly) windows
- #1911 path, context: an unknown endpoint answered nothing at all through the front door; the refusal is printed to CLI again
- #1920 impact:
--json with no name printed the usage text; it answers for the edits CLI
- #1878 python: an import of a module with a
.pyi beside it resolved to the stub, so tests reached nothing in the package python
Build and release
- #1805 engines: Linux binaries are built in manylinux_2_28, so they run on glibc 2.28+ (Ubuntu 22.04, Debian 12, RHEL 9, Amazon Linux 2023) CI
- #1914 #1925 ci: the engine build fails if any engine loads a library a stock machine lacks (
readelf/otool/dumpbin guards), and checks every parallel engine carries its OpenMP runtime
- #1927 ci: the engine smoke step ran the
.parallel marker with the binary on Linux and Windows; it names the binary ci
- #1930 ci: the release gate ("e2e on every platform": installed from the tarballs, no Soufflé, every language, every verb) checks 0.1.9's answers and verbs; the nightly runs the same gate
- #1819 #1820 ci: CI runs the query-layer cases for all five languages, four at a time
- #1866 #1867 cli: the Node floor is stated (
engines ≥ 22.5), and a Node older than 22.13 is refused up front with a message instead of failing later CLI
Contributors
@swapnilpaliwal-sd @JaredHLZhang @suyashpaliwal26 @Whua689