Releases: Guardsquare/proguard-core
Releases · Guardsquare/proguard-core
9.3.1
9.3.0
API changes
- Deprecate
DominatorCalculator.dominatesmethod, introduceDominatorCalculator.maybeDominatesreturning anOptional<Boolean>instead ofboolean. - Support Kotlin experimental annotation metadata v2.
The following changes will require code updates:
KotlinPropertyAccessorFlagsis removed and inlined intoKotlinProperyAccessorMetadata. Please useKotlinPropertyAccessorMetadatainstead.KotlinPropertyMetadata.getterFlags,KotlinPropertyMetadata.referencedGetterMethod,KotlinPropertyMetadata.getterSignaturehave been removed.
Please useKotlinPropertyMetadata.getterMetadatainstead.KotlinPropertyMetadata.setterFlags,KotlinPropertyMetadata.referencedSetterMethod,KotlinPropertyMetadata.setterSignaturehave been removed.
Please useKotlinPropertyMetadata.setterMetadatainstead.KotlinClassKindMetadata.enumEntryNames,KotlinClassKindMetadata.referencedEnumEntrieshave been removed and moved toEnumEntryMetadata.
Please useKotlinClassKindMetadata.enumEntriesinstead.
Bugfixes
- Fix
ClassUtil.externalClassVersionreturning null for preview versions.
9.2.0
API changes for line number handling
- Add new StructuredLineNumberInfo class.
- Deprecate ExtendedLineNumberInfo class.
- Adapt utilities to generate StructuredLineNumberInfo instead of ExtendedLineNumberInfo.
Java support
- Update maximum supported Java class version to 69.65535 (Java 25).
Bugfixes
- Prevent error when building with maven where the dependency "kotlin-stdlib-common" could not be found.
9.1.11
Kotlin support
- Add support for processing Kotlin 2.2 metadata.
9.1.10
Java support
- Update maximum supported Java class version to 68.65535 (Java 24).
Bugfixes
- Prevent
StackOverflowErrorin ConstantPoolShrinker when visiting a pattern matching switch in java >= 21.
9.1.9
Improved
- Improve performance of
MethodLinkerin situations with large number of linked methods in a chain.
9.1.8
Improved
- Improve runtime of
BamTransferRelation. - Add a method signature and descriptor parser in the new package
proguard.classfile.attribute.signature.
Kotlin support
- Add support for processing Kotlin 2.1 metadata.
API changes for the dataflow analysis code
This is a continuation of the API changes started in release 9.1.7.
- Remove
JvmValueBamCpaRunin order to simplify the utility code to run the analysis.ValueAnalyzeris the direct replacement, this class has the same behavior asJvmValueBamCpaRun, as long asanalyzeis called only once. - Remove
JvmTaintMemoryLocationBamCpaRunin order to simplify the utility code to run the analysis.TaintAnalyzeris the direct replacement, this class has the same behavior asJvmTaintMemoryLocationBamCpaRun, as long asanalyzeis called only once. - Remove the
CpaRuninfrastructure. - Remove
MapAbstractStateFactory,WrapperTransferRelation, and other classes that were only used with the tree heap model. - Remove
StateNamesandgetStateByName. - Refactor several classes taking generic parameters for
CfaEdge,CfaNode, andSignature, to not use the generic parameters anymore. They now default toJvmCfaEdge,JvmCfaNode, andMethodSignature. - Refactor CPA reached set, waitlist, operators, and all their dependant classes to be parametrized by the type of abstract states of the dataflow analysis. This allows to make the code safe at compile time and avoid unnecessary casts.
- Move
AbortOperatorfrom being a parameter ofCpaAlgorithm#runto theConfigurableProgramAnalysisinterface. - Move functionalities of
LatticeAbstractStatetoAbstractState. RemoveAbstractDomainsince the abstract states can now perform directly theisLessOrEqualandjoinoperations without the need of delegation.
Bugfixes
- Fix semi-lattice properties of
MultiTypedReferenceValue'sgeneralize()method - Fix integers potentially being used as reference identifier during interprocedural value analysis. This could result in the analysis not reaching a fixed point.
- Fix
JvmTaintTransferRelation#propagateExtraTaintspropagating taint incorrectly if the stack contains more than one element.
9.1.7
Bugfixes
- Make sure injected initialization methods in interfaces have the correct access flags.
Improved
InstructionSequenceMatchernow supports matching of primitive array constants.- Support propagation of extra specified taints in
JvmTaintTransferRelation. - Introduce
ReflectiveModelandReflectiveModelExecutorto simplify the creation and analysis ofModels.
API improvements
- Rename
CallVisitortoCallHandlerand add extra parameters to handle calls accounting for more data. - Add
ClassUtil.isClassInitializer(String)andClassUtil.isInstanceInitializer(String). - Extend
MemberCollectionFilterto accept aSetof any subtype ofMember.
API changes
- Move classes related to
Modelto theproguard.evaluation.value.object.modelpackage. StringSharernow uses a string pool to share strings, instead of traversing references.
API changes for the dataflow analysis code
There are several changes to the dataflow analysis code with the objective of eliminating unnecessary abstraction and
make its usage easier. This includes:
- Remove
MemoryLocation, useJvmMemoryLocationinstead. - Make
JvmMemoryLocationindependent of the type of value contained in the analysis' state. The type of the value now needs only to be provided when callingextractValueOrDefault. - Remove all code related to the tree heap model for taint analysis.
9.1.6
Java support
- Update maximum supported Java class version to 67.65535 (Java 23).
API changes
- Make
CallGraphreconstruction/traversal methods generic in that they now take aSet<MethodSignature>to determine when to stop exploration - Delete
EntryPointclass
Bugfixes
- Fix incorrect traversal direction in
predecessorsContain.
9.1.5
Bugfixes
- Prevent
unknown enum value for KmVersionRequirementVersionKindexception when processing code compiled with an outdated Kotlin version. - Fix
UnknownReferenceValuereturn wrong string format ingetType. - Fix
ReflectionExecutornot updating instance ofStringBuilders in fallback result.
API changes
Executors do not supportMethodSignaturewildcards anymore. The assumption fromExecutorLookupis now that all the signatures supported by the executor are declared explicitly ingetSupportedMethodSignatures.StringExecutor,ExecutingInvocationUnit, andJvmValueBamCpaRunnow need the library class pool as parameter.- Calls to
InstructionSequenceBuilder.ldcnow optionally accept aConstantVisitor. The visitor will visit the constant that is referenced by the added instruction.