Skip to content

Releases: Guardsquare/proguard-core

9.3.1

18 Feb 15:58
43523cb

Choose a tag to compare

Kotlin support

  • Add support for processing Kotlin 2.3 metadata.

9.3.0

03 Feb 08:35

Choose a tag to compare

API changes

  • Deprecate DominatorCalculator.dominates method, introduce DominatorCalculator.maybeDominates returning an Optional<Boolean> instead of boolean.
  • Support Kotlin experimental annotation metadata v2.

The following changes will require code updates:

  • KotlinPropertyAccessorFlags is removed and inlined into KotlinProperyAccessorMetadata. Please use KotlinPropertyAccessorMetadata instead.
  • KotlinPropertyMetadata.getterFlags,KotlinPropertyMetadata.referencedGetterMethod,KotlinPropertyMetadata.getterSignature have been removed.
    Please use KotlinPropertyMetadata.getterMetadata instead.
  • KotlinPropertyMetadata.setterFlags,KotlinPropertyMetadata.referencedSetterMethod,KotlinPropertyMetadata.setterSignature have been removed.
    Please use KotlinPropertyMetadata.setterMetadata instead.
  • KotlinClassKindMetadata.enumEntryNames, KotlinClassKindMetadata.referencedEnumEntries have been removed and moved to EnumEntryMetadata.
    Please use KotlinClassKindMetadata.enumEntries instead.

Bugfixes

  • Fix ClassUtil.externalClassVersion returning null for preview versions.

9.2.0

07 Oct 09:22

Choose a tag to compare

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

21 Aug 12:04

Choose a tag to compare

Kotlin support

  • Add support for processing Kotlin 2.2 metadata.

9.1.10

24 Mar 11:06

Choose a tag to compare

Java support

  • Update maximum supported Java class version to 68.65535 (Java 24).

Bugfixes

  • Prevent StackOverflowError in ConstantPoolShrinker when visiting a pattern matching switch in java >= 21.

9.1.9

07 Mar 15:29

Choose a tag to compare

Improved

  • Improve performance of MethodLinker in situations with large number of linked methods in a chain.

9.1.8

17 Feb 08:39

Choose a tag to compare

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 JvmValueBamCpaRun in order to simplify the utility code to run the analysis. ValueAnalyzer is the direct replacement, this class has the same behavior as JvmValueBamCpaRun, as long as analyze is called only once.
  • Remove JvmTaintMemoryLocationBamCpaRun in order to simplify the utility code to run the analysis. TaintAnalyzer is the direct replacement, this class has the same behavior as JvmTaintMemoryLocationBamCpaRun, as long as analyze is called only once.
  • Remove the CpaRun infrastructure.
  • Remove MapAbstractStateFactory, WrapperTransferRelation, and other classes that were only used with the tree heap model.
  • Remove StateNames and getStateByName.
  • Refactor several classes taking generic parameters for CfaEdge, CfaNode, and Signature, to not use the generic parameters anymore. They now default to JvmCfaEdge, JvmCfaNode, and MethodSignature.
  • 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 AbortOperator from being a parameter of CpaAlgorithm#run to the ConfigurableProgramAnalysis interface.
  • Move functionalities of LatticeAbstractState to AbstractState. Remove AbstractDomain since the abstract states can now perform directly the isLessOrEqual and join operations without the need of delegation.

Bugfixes

  • Fix semi-lattice properties of MultiTypedReferenceValue's generalize() 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#propagateExtraTaints propagating taint incorrectly if the stack contains more than one element.

9.1.7

12 Dec 10:20

Choose a tag to compare

Bugfixes

  • Make sure injected initialization methods in interfaces have the correct access flags.

Improved

  • InstructionSequenceMatcher now supports matching of primitive array constants.
  • Support propagation of extra specified taints in JvmTaintTransferRelation.
  • Introduce ReflectiveModel and ReflectiveModelExecutor to simplify the creation and analysis of Models.

API improvements

  • Rename CallVisitor to CallHandler and add extra parameters to handle calls accounting for more data.
  • Add ClassUtil.isClassInitializer(String) and ClassUtil.isInstanceInitializer(String).
  • Extend MemberCollectionFilter to accept a Set of any subtype of Member.

API changes

  • Move classes related to Model to the proguard.evaluation.value.object.model package.
  • StringSharer now 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, use JvmMemoryLocation instead.
  • Make JvmMemoryLocation independent of the type of value contained in the analysis' state. The type of the value now needs only to be provided when calling extractValueOrDefault.
  • Remove all code related to the tree heap model for taint analysis.

9.1.6

22 Aug 15:23

Choose a tag to compare

Java support

  • Update maximum supported Java class version to 67.65535 (Java 23).

API changes

  • Make CallGraph reconstruction/traversal methods generic in that they now take a Set<MethodSignature> to determine when to stop exploration
  • Delete EntryPoint class

Bugfixes

  • Fix incorrect traversal direction in predecessorsContain.

9.1.5

17 Jul 14:34

Choose a tag to compare

Bugfixes

  • Prevent unknown enum value for KmVersionRequirementVersionKind exception when processing code compiled with an outdated Kotlin version.
  • Fix UnknownReferenceValue return wrong string format in getType.
  • Fix ReflectionExecutor not updating instance of StringBuilders in fallback result.

API changes

  • Executors do not support MethodSignature wildcards anymore. The assumption from ExecutorLookup is now that all the signatures supported by the executor are declared explicitly in getSupportedMethodSignatures.
  • StringExecutor, ExecutingInvocationUnit, and JvmValueBamCpaRun now need the library class pool as parameter.
  • Calls to InstructionSequenceBuilder.ldc now optionally accept a ConstantVisitor. The visitor will visit the constant that is referenced by the added instruction.