Releases: Guardsquare/proguard-core
Releases · Guardsquare/proguard-core
8.0.5
Version 8.0.5
Improved
- Upgrade log4j2 dependency to v2.17.1 in response to CVE-2021-44832.
- Add support for reading and writing Kotlin 1.6 metadata (update
kotlinx.metadata
dependency to version 0.3). - Add support to
MemberDescriptorReferencedClassVisitor
for visiting referenced Kotlin inline class parameters. (T13653
)
Bug fixes
- Fix
CallResolver
erroneously creating call edges to unimplemented interface methods. - Make the
DominatorCalculator
skip methods with an emptyCodeAttribute
. - Prevent updating Kotlin function names with mangled JVM method names in
ClassReferenceFixer
. (PGD-208
) - Initialize Kotlin default implementation classes of annotation classes correctly in
ClassReferenceInitializer
. - Correctly initialize Java Record component attributes in
ClassReferenceInitializer
. (PGC-28
,PGD-194
)
API changes
KotlinInterfaceToDefaultImplsClassVisitor
replaced byKotlinClassToDefaultImplsClassVisitor
.- Deprecate Kotlin class metadata flag
IS_INLINE
and replaced withIS_VALUE
(T4771
). - Convert to/from Kotlin unsigned integers in Kotlin annotation unsigned type arguments. (
T5405
) - Initialize array dimension in Kotlin annotation
ClassValue
type arguments. (T5406
) - Add support for Kotlin inline class underlying type to Kotlin metadata model. (
T4774
)
8.0.4
Version 8.0.4
Improved
- Upgrade log4j2 dependency to v2.17 in response to CVE-2021-45105.
API Improvements
- Add
KotlinMetadataVersionFilter
to filter classes based on the version of the attached metadata. (T5017
)
8.0.3
Improved
- Upgrade log4j2 dependency in response to CVE-2021-45046.
ProGuardCORE 8.0.2
Improved
- Upgrade log4j2 dependency in response to CVE-2021-44228.
API Improvements
- Add call resolving and graph traversal features to enable interprocedural control flow analyses.
Bug fixes
- Fix potential
StringIndexOutOfBoundsException
while trimming attribute value spaces inSignedJarWriter
. (T7004
) - Fix
referencedClass
of Values generated by theExecutingInvocationUnit
. (T6031
) - Fix potential
StackOverflowError
when using anAttributeVisitor
to visit runtime invisible type annotations. (PGD-182
) - Fix potential
StringIndexOutOfBoundsException
inKotlinCallableReferenceInitializer
. (T5927
) - Fix potential
NullPointerException
inKotlinInterClassPropertyReferenceInitializer
. (T6138
) - Fix wrong offset for complementary branch instruction when widening branch instructions in
InstructionWriter
. (T5721
) - Fix potential
ClassFormatError
due to adding multiple annotation attributes when processing Kotlin code. - Fix potential
NullPointerException
due to missing classes inClassReferenceInitializer
. - Prevent making package-private final methods that are shadowed protected. (
T7056
)
8.0.1
Version 8.0.1
API Improvements
- Add
LibraryClassBuilder
andLibraryClassEditor
classes to create and edit aLibraryClass
. (T5790
) - Add additional constructors to
LibraryClass
.
Bug fixes
- Fix potential
NullPointerException
when initializing Kotlin callable references. (T5899
) - Prevent requiring
--enable-preview
on a JVM for Java 16 class files (write class file version60.0
instead of60.65535
). - Fix potential
NullPointerException
when visiting referenced methods of Kotlin functions.
8.0.0
Version 8.0.0
Java support
- Update maximum supported Java class version to 61.0 (Java 17). (
PGD-132
)
Kotlin support
- Add support for processing Kotlin 1.5 metadata. (
T5036
) - Update
kotlinx
metadata dependency to version 0.2. (T4651
)
API Improvements
- Add
WarningLogger
class to allow using a custom Log4j2 logger. (T5561
) - Add Kotlin metadata model classes and visitors for Kotlin annotations. (
T2698
) - Add Kotlin metadata model enum for
KmVariance
. (T4842
) - Add Kotlin metadata model enum for
KmVersionRequirement(Kind|Level)
. (T4843
) - Add Kotlin metadata model enum for
KmEffect(Type|InvocationKind)
. (T4844
) - Add Kotlin metadata flag
IS_FUN
for functional interfaces. (T4659
) - Add Kotlin metadata flag
HAS_NON_STABLE_PARAMETER_NAMES
for Kotlin callables. (T4658
) - Add error handler callback to
KotlinMetadataInitializer
. - Add error handler callback to
KotlinMetadataWriter
. - Add error handler callback to
KotlinModuleReader
. - Add error handler callback to
KotlinModuleWriter
. Add Kotlin metadata flagIS_SECONDARY
for constructors. (T4657
) - Implement
ClassVisitor
inKotlinMetadataInitializer
to allow easier initialization of Kotlin metadata. - Implement
ClassVisitor
inKotlinMetadataWriter
to allow easier writing of Kotlin metadata.
API changes
KotlinTypeParameterVistor#visitClassParameter(Clazz, KotlinMetadata, KotlinTypeParameterMetadata)
now has the correct signature:KotlinTypeParameterVistor#visitClassParameter(Clazz, KotlinClassKindMetadata, KotlinTypeParameterMetadata)
.- Rename
AllKotlinPropertiesVisitor
toAllPropertyVisitor
. - Rename
AllConstructorsVisitor
toAllConstructorVisitor
. - Rename
AllFunctionsVisitor
toAllFunctionVisitor
. - Remove `KotlinValueParameterVisitor.onNewFunctionStart()' method.
- Deprecate Kotlin metadata flag
IS_PRIMARY
for constructors. (T4657
)
7.1.1
Version 7.1.1
API improvements
- Add
KotlinTypeParameterFilter
to allow filtering easily when visiting type parameters. - Add
KotlinValueParameterFilter
to allow filtering easily when visiting value parameters.
Bug fixes
- Fix
AllTypeParameterVisitor
so that it visits type parameters defined in any kind of declaration container. - Fix
AllTypeParameterVisitor
so that it visits type parameters of type aliases. - Fix potential
NullPointerException
when initializing a Kotlin default implementation class that does not contain an initializedjvmSignature
. (T5442
) - Add missing
equals
method toParticularReferenceValue
. - Fix incorrect handling of
InterruptedException
inParallelAllClassVisitor
. - Fix potential
ZipOutput
alignment issue when writing large uncompressed zip entries. - Fix potential
ZipOutput
synchronization issue when writing uncompressed zip entries. - Fix potential
NullPointerException
when comparing strings withFixedStringMatcher
. - Fix potential
NullPointerException
when comparing strings withMatchedStringMatcher
. - Fix initialization of Kotlin callable references when using Kotlin >= 1.4.
7.1.0
Version 7.1 (June 2021)
Java support
ProGuardCORE 7.1 now supports Java versions 14, 15 and 16:
- Add support for reading & writing Java 14, 15 and 16 class files. (
PGC-0015
,PGD-0064
) - Add support for Java 14 sealed classes (permitted subclasses attributes). (
PGD-0064
) - Add support for record attributes (previewed in Java 15/16, targeted for Java 17). (
PGD-0064
)
Improved code analysis
- The partial evaluator can now be used to reconstruct the specific values of
String
,StringBuilder
andStringBuffer
type objects.
See analyzing code manual page for more information. - The partial evaluator will now throw an
IncompleteClassHierarchyException
instead of
IllegalArgumentException
when an incomplete hierarchy is encountered. - The partial evaluator will now throw an
ExcessiveComplexityException
if an instruction is visited more thanstopAnalysisAfterNEvaluations
times. - Potentially throwing
ldc
instructions are now taken into account during partial evaluation,
improving the accuracy of code analysis. (DGD-3036
) - Add support for multiple possible types during partial evaluation.
Performance improvements
- Improve efficiency of building classes, methods and constant pools (
PGD-5
).
API improvements
- Add
ClassRenamer
to allow renaming classes and members easily. (T5302
)
Bug fixes
- Add missing method reference in injected static initializer instructions. (
DGD-3231
) - Add missing dimensions argument to
CompactCodeAttributeComposer.multianewarray
. - Fix potential
StackOverflowException
when comparing multi-typed reference values. - Fix handling of Kotlin nested class names which contain
$
. (DGD-3317
) - Mark
Module
,ModuleMainClass
andModulePackages
attributes as required. (PDG-127
) - Fix potential
ClassCastException
inConstructorMethodFilter
. (PGC-0016
) - Fix potential
NullPointerException
for module classes in ClassPrinter. - Fix storage and alignment of uncompressed zip entries. (
DGD-2390
) - Fix processing of constant boolean arrays. (
DGD-2338
) - Fix adding branch instructions with labels in
CompactCodeAttributeComposer
. - Fix handling of array dereferencing in
MultiTypedReferenceValue
. - Fix
AllKotlinAnnotationVisitor
so that it visits type alias annotations defined in any kind of declaration container. - Move initialization of Kotlin declaration container's
ownerClassName
field fromClassReferenceInitializer
toKotlinMetadataInitializer
. (T5348
)
7.1.0-beta5
Issue | Explanation |
---|---|
Add jar to distribution archives |
7.1.0-beta4
Issue | Explanation |
---|---|
The PartialEvaluator now throws ExcessiveComplexityException if an instruction is visited more than stopAnalysisAfterNEvaluations times. |