Releases: opalj/opal
Releases · opalj/opal
OPAL Release 5.0.0
- we are now using sbt 1.6.2
- we are now using Scala 2.13
- Scala 2.13 changes:
- replace Unicode arrows (⇒,→,←) by ASCII arrows (=>,->,<-)
- replace Traversable by scala.collection.Iterable
- replace TraversableOnce by scala.collection.IterableOnce
- changes to OPAL's custom data structures:
- replace RefIterator by scala.collection.iterator
- replace Chain by scala.collection.immutable.List
- replace RefArray and IntArray by scala.collection.immutable.ArraySeq
- replace RefArrayStack by scala.collection.immutable.Stack
- replace RefAppendChain by scala.collection.mutable.ArrayDeque
- replace RefArrayBuffer by scala.collection.mutable.ArrayBuffer
- Scala 2.13 changes:
- full support for Java 17 up to 19
- support for Java 17 Sealed Classes
- added isStrict attribute to classes
- ignore isStrict attribute on classes and methods for Java >= 17
- completed framework for call graph analyses
- introduced TypeIterator to uniformly access type information
- using contexts instead of methods to enable context-sensitive analysis (0-1-CFA, 1-1-CFA)
- support library analysis with CFA
- introduced new immutability analyses
- replaced FieldMutabilityAnalysis with FieldAssignabilityAnalysis
- support for thread-safe and unsafe lazy initialization
- support for clone pattern
- introduced new FieldImmutabilityAnalysis to integrate field assignability with mutability of values
- support for transitive and non-transitive immutability
- support for immutability dependent on generic type parameters
- updated ClassImmutabilityAnalysis and TypeImmutabilityAnalysis to use new FieldImmutability properties
- replaced FieldMutabilityAnalysis with FieldAssignabilityAnalysis
- added EntrypointsFinder for Android apps
- allow flushing caches for ObjectTypes/ArrayTypes to free memory when creating many projects in a row
4.0.0
- we are now using Scala 2.12.13
cleanBuild
now requires at least Java 14 to compile all test fixtures- full support for Java 11 up to 16
- class files for newer Java versions can be read if they do not use features beyond Java 16
- opportunistic rewriting of dynamic constants
- parallel implementation for the PropertyStore
- FPCF analyses now use sets for their dependencies
- added preliminary framework for FPCF call graphs
- includes CHA, RTA, XTA/MTA/FTA/CTA and points-to based call graphs
- also includes modules for reflection, static initializers, finalizers, serialization, threads, selected native methods and to load dynamic data on reflective calls recorded by TamiFlex
- allows resolution of calls by method signature for library analyses
- added an analysis to collect information about the usage of a class within a project
- added
LongTrieSet
,LongLinkedTrieSet
andLongTrieSetWithList
to optimize storage of Long values - removed
PrecomputedPartialResult
- fixed the semantics of virtual and interface calls w.r.t. private methods
- fixed TAC text representation where a regular return would be marked with a warning that it always throws an exception even if it doesn't
- fixed a wrong mapping of TAC indices on some dead bytecode instructions
- fixed escape analysis which could produce non-deterministic results
- fixed issues with the purity analyses
- fixed parsing of -projectConfig parameter for
AnalysisApplication
- fixed equals implementation for
EOptionP