@@ -5,6 +5,44 @@ All notable changes to this project will be documented in this file.
55The format is based on [ Keep a Changelog] ( https://keepachangelog.com/en/1.0.0/ ) ,
66and this project adheres to [ Semantic Versioning] ( https://semver.org/spec/v2.0.0.html ) .
77
8+ ## [ v2.0.0] - 2026-10-15
9+
10+ CLDK 2.0 gives Python, Java and TypeScript one agent-facing query surface — addressing, per-callable
11+ control and data flow, slices, call-graph and value-flow predicates, entrypoints and the
12+ repository-artifact layer — answered identically from an ` analysis.json ` or an attached Neo4j graph.
13+ No code changes since ` v2.0.0-rc.8 ` except the README split into a user page, ` docs/architecture.md `
14+ and ` docs/citations.md ` (#416 ). The rc sections below are the full record; this section lists what
15+ breaks for code written against ** 1.5.0** , each with its migration step.
16+
17+ ### Breaking (since 1.5.0)
18+
19+ - ** C support is removed** (` CLDK.c() ` , ` cldk.analysis.c ` , ` cldk.models.c ` ; rc.2). There is no
20+ replacement; pin ` cldk<2 ` if you need it.
21+ - ** Java needs the ` java ` extra.** The analyzer ships as the ` codeanalyzer-java ` wheel with its own
22+ JVM, not a jar in this repo (rc.3). Install with ` pip install "cldk[java]" ` .
23+ - ** Every Neo4j graph must be re-emitted, into a wiped database.** The ` can:// ` id grammar now puts the
24+ application outermost (` can://<app>/<lang>/... ` , rc.4), and each backend refuses a graph below its
25+ floor at attach with ` GraphSchemaMismatch ` , rather than answering with zero rows. The floors are
26+ ` codeanalyzer-python ` 1.5.0, ` codeanalyzer-typescript ` 1.5.2 and ` codeanalyzer-java ` 3.2.0 (rc.6).
27+ Re-emit with the pinned analyzer (` --emit neo4j ` ); there is no in-place upgrade.
28+ - ** Java and TypeScript models mirror schema v2** (rc.3). A 1.x ` analysis.json ` is refused rather than
29+ parsed: re-run the analysis with the pinned analyzer. For Java, ` get_call_graph() ` nodes are
30+ ` "<type fqn>.<signature>" ` strings rather than ` (signature, klass) ` tuples — read the class from
31+ ` cg.nodes[key]["method_detail"].klass ` . Local and anonymous class names carry their declaring callable
32+ — take class keys from ` get_all_classes() ` rather than composing them. ` JGraphEdges ` is
33+ ` {src, dst, prov, weight} ` . For TypeScript, ` TSCallable ` and ` TSModule ` lost their per-file fields (v2
34+ keys modules by path).
35+ - ** Java's single-file ` source_code ` mode is gone** (rc.3). Analyze the project directory.
36+ - ** ` PyCallableOverview.path ` is repo-relative** , not an absolute path (rc.2). Stop stripping a
37+ project-root prefix off it.
38+ - ** Accessors that only ever raised ` NotImplementedError ` are removed** : fifteen on ` PythonAnalysis `
39+ (rc.2) and ` get_entry_point_methods ` / ` get_service_entry_point_methods ` on ` TypeScriptAnalysis `
40+ (rc.3). Use ` get_entrypoints() ` / ` get_entrypoint_classes() ` .
41+
42+ ### Analyzer pins
43+
44+ ` codeanalyzer-python==1.5.3 ` , ` codeanalyzer-typescript==1.6.0 ` , ` codeanalyzer-java==3.3.3 ` (extra).
45+
846## [ v2.0.0-rc.8] - 2026-09-16
947
1048### Fixed
0 commit comments