Skip to content

v0.1.9

Choose a tag to compare

@axiomcode-bot axiomcode-bot released this 11 Oct 16:34
· 184 commits to dev since this release
ecc54ed

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