Releases: Synaptic-Graph/Synaptic
Release list
Synaptic 1.2.0
Synaptic 1.2.0
Added
- Build-aware C, C++ and Fortran extraction reads compilation databases, response
files, preprocessing flags and source-form settings. CMake target dependencies
constrain native call resolution, and headers are parsed in a real translation
unit's include context with source-line mapping. - Optional Groovy compiler facts add AST-transform-generated methods and exact
compiler-resolved calls. Imports validate source and classpath freshness;
unresolved dynamic calls retain explicit uncertainty. - Independent Clang, GFortran and Groovy validation scripts compare declarations
and call targets against pinned open-source repositories, including negative
controls for missing overloads and incorrect implementation files.
Changed
- Groovy uses a vendored native grammar with broader Gradle/Spock DSL support,
including command chains, quoted methods, annotations, traits, records,
closures, arrays, tuples, loops and mixed modifiers. Rust builds use checked-in
generated sources and do not require Node.js. - Fortran incremental updates follow reverse module and call dependencies.
Build-configured projects rebuild conservatively to refresh headers, flags and
compiler facts. - Quality gates use comment-aware declaration anchors, corrected Fortran Ctags
coverage and separate parser/recovery measurements. The expanded validation
corpus pins 13 repositories and includes HTTP Builder NG, WSLite and FPM.
Fixed
- Fortran fixed-form comments, continuations and numeric literals; internal
procedures; lexical andUSEassociation; accessibility and renames; generic
overload selection; type-bound dispatch; submodule implementation targets; and
intrinsic shadowing. - C/C++ macro-decorated declarations, aggregate and alias extraction, overload
ambiguity, internal linkage and C/C++ language-linkage boundaries. - Groovy overload and anonymous-body method ID collisions, escaped quoted names,
constructor anchors and calls previously mistaken for declarations. - File and symbol IDs that collided across source variants or languages, and
Kubernetes resource anchors in multi-document YAML. - The desktop command catalog now includes the existing
chartcommand.
Validation and upgrade notes
- All 13 repository gates pass over 13,000 files and 82,591 declaration anchors.
All 666 reviewed Groovy files parse without errors; 5,851 declarations accepted
by the Groovy compiler match distinct graph nodes. Configured CMINPACK and
FFTPACK match all 349 checked compiler call targets. Validation also includes
2,774 Rust tests, 523 grammar cases, 44 upstream CMINPACK tests and two compiled
and executed FFTPACK examples. - Re-extract existing projects after upgrading: corrected declaration identities
can change graph IDs. Compiler-assisted extraction requires the project's
compiler and build inputs; conflicting build configurations require selecting
one active configuration. Runtime-dynamic targets and remaining dialect gaps
are documented in the validation report.
v1.1.1
v1.1.0
v1.0.0
v0.9.16 - Graphify head-to-head benchmarks
Synaptic vs Graphify
This release adds a reproducible synaptic eval head-to-head benchmark against pinned Graphify b2cd36267456c166788c95be6e68574064a92a42, plus the extraction fixes found by running it.
Hand-labeled accuracy corpus
| Tool | Quality F1 | Accuracy | Precision | Recall | Labels resolved | Cold corpus |
|---|---|---|---|---|---|---|
| Synaptic | 98.55% | 97.14% | 100.00% | 97.14% | 100.00% | 1.13 s |
| Graphify | 87.10% | 77.14% | 100.00% | 77.14% | 100.00% | 6.37 s |
Both tools tied on the six single-language fixtures. Graphify missed the labeled cross-language couplings in the TypeScript/Rust, gRPC, queue, PyO3, and WebSocket fixtures.
Ten pinned real-world projects
Quality metrics are agreement with Universal Ctags over the same detector-selected code files and structural declaration kinds. Anchor exactness is checked directly against source. The run used one fresh cold build per project on Windows on 2026-08-20.
| Tool | Projects | Quality F1 | Accuracy | Precision | Recall | Anchor exact | Parse warnings | Cold total |
|---|---|---|---|---|---|---|---|---|
| Synaptic | 10 | 92.20% | 85.53% | 91.12% | 93.31% | 100.00% | 1.17% | 15.39 s |
| Graphify | 10 | 81.10% | 68.21% | 75.01% | 88.27% | 94.01% | 0.00% | 50.07 s |
Synaptic led by 11.10 points in F1, 17.32 in accuracy, 16.11 in precision, 5.04 in recall, and 5.99 in anchor exactness while completing the corpus 3.25x faster. It won F1, accuracy, precision, and cold speed on all ten projects. All 60,501 checked Synaptic source anchors were exact.
S/G means Synaptic / Graphify:
| Project | F1 S/G | Accuracy S/G | Precision S/G | Recall S/G | Anchor S/G | Cold seconds S/G |
|---|---|---|---|---|---|---|
| memchr | 98.68 / 40.29 | 97.39 / 25.23 | 98.19 / 25.42 | 99.17 / 97.01 | 100.00 / 98.40 | 0.37 / 5.06 |
| click | 99.93 / 86.59 | 99.86 / 76.36 | 100.00 / 93.53 | 99.86 / 80.62 | 100.00 / 96.17 | 0.98 / 3.46 |
| p-map | 84.75 / 58.46 | 73.53 / 41.30 | 75.76 / 48.72 | 96.15 / 73.08 | 100.00 / 93.94 | 0.11 / 0.70 |
| cobra | 98.52 / 96.28 | 97.09 / 92.82 | 98.69 / 93.25 | 98.36 / 99.51 | 100.00 / 100.00 | 0.32 / 1.70 |
| axum | 94.46 / 85.10 | 89.50 / 74.06 | 96.86 / 85.23 | 92.17 / 84.97 | 100.00 / 90.84 | 1.58 / 4.52 |
| gson | 97.70 / 94.82 | 95.49 / 90.16 | 96.00 / 90.38 | 99.45 / 99.72 | 100.00 / 93.41 | 2.23 / 7.22 |
| fmt | 85.19 / 72.09 | 74.21 / 56.36 | 90.43 / 78.87 | 80.53 / 66.38 | 100.00 / 98.62 | 1.60 / 5.04 |
| Humanizer | 87.24 / 81.18 | 77.37 / 68.32 | 81.34 / 70.57 | 94.07 / 95.54 | 100.00 / 89.29 | 7.07 / 18.22 |
| rack | 94.34 / 86.86 | 89.29 / 76.78 | 91.83 / 82.30 | 97.00 / 91.97 | 100.00 / 90.28 | 0.41 / 1.93 |
| Slim | 99.65 / 91.52 | 99.31 / 84.36 | 100.00 / 86.99 | 99.31 / 96.54 | 100.00 / 100.00 | 0.72 / 2.23 |
Across the corpus, Synaptic produced 74,889 nodes and 118,000 edges versus Graphify's 32,547 nodes and 77,238 edges. Against 18,787 oracle declarations, Synaptic matched 17,531 with 1,256 oracle-only and 1,709 tool-only; Graphify matched 16,584 with 2,203 oracle-only and 5,525 tool-only.
Quality fixes
- JavaScript/TypeScript named arrow functions and assigned function expressions now own their calls and correct source anchor.
- Rust type aliases/unions and Java enums, records, annotations, and compact constructors are retained.
- C/C++ calling-convention, attribute, and project macros no longer fuse declarations or move anchors.
- Oracle scope excludes imports, fields, rationale, generated/dependency noise, and unnameable anonymous declarations.
h2is updated to 0.4.16 for RUSTSEC-2026-0258; RustSec and cargo-deny pass.
See BENCHMARKS.md for methodology, reproduction commands, and report paths, or the full changelog.