mirror of
https://github.com/MG1937/ASC.git
synced 2026-10-02 08:34:55 +08:00
InsnLocator built its instruction-verify pattern with an atomic group
(?>(?:...)*). Atomic groups are python 3.11+ syntax, but pyproject and
the published wheel both declare requires-python >=3.10. On 3.10
re.compile raises re.error("unknown extension ?>") while the class
attribute is being built, so every findrefs search and getclass
decompile fails before touching the DEX.
The atomic group is a real optimisation - it stops the greedy star from
backtracking over instruction ranges that fail to verify, which is the
common case on a real DEX - so it is kept where the interpreter
understands it and only the 3.10 fallback drops it. Measured on the
supplied reference DEX, replacing it unconditionally costs about 5% on
the gated field_ref_scan metric, so this is not a plain deletion.
Refs #20