📣 New Release: codeanalyzer-python 1.1.0 #21
rahlk
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
codeanalyzer-python (canpy) v1.1.0
TL;DR — the Scalpel-backed points-to oracle is now built into the package and is the default for L4 analysis on every supported Python (3.9–3.14). On Python 3.12+, where the old optional install could never work, L4 alias analysis gets strictly more precise. One packaging change to note: the
[scalpel]extra is gone.What changed (#113, PR #111)
L4 (
-a 4) widens the data-dependence graph with alias-derived edges (prov:["points-to"]), answered by a may-alias oracle. The strong oracle — Scalpel's solved SSA + copy/const state, closed into a union-find over access paths — previously requiredpip install "codeanalyzer-python[scalpel]". Butpython-scalpelhard-depends ontyped_ast, abandoned with no wheels for Python 3.12+, so on modern interpreters the extra could not install at all and L4 silently fell back to the coarser type-based oracle.v1.1.0 vendors the exact 9-module
SSA/cfg/coreslice ofpython-scalpel 1.0b0that the oracle uses —typed_ast-free, Apache-2.0 with license and NOTICE attribution, byte-identical to upstream except one lazy-import patch that drops thegraphvizdependency.ScalpelAliasOracleis now the shipping default everywhere; the type-based oracle remains only as a per-callable/per-query runtime safety net.Effect on output: on environments that previously lacked the extra (any 3.12+ host), L4's
prov:["points-to"]DDG edges become scalpel-precise — a tighter subset of the old over-approximation. Theprov:["ssa"]edges (the L3 subset) are unchanged, so theL3 ⊆ L4monotonicity invariant holds. No schema changes.Packaging notes
[scalpel]extra. If you installedcodeanalyzer-python[scalpel], install plaincodeanalyzer-python— you get the same oracle, now built in.astor(pure-Python, needed by the vendored SSA slice).typed_astandgraphvizare not dependencies.codeproperty fix) and 1.0.3 (parso-aware env provisioning) if you're upgrading from 1.0.1.Upgrade
Links: GitHub release · CHANGELOG
All reactions