Releases: opalj/opal
Releases · opalj/opal
7.0.0
6.0.0
- we are now using sbt 1.9.7
- we are now using scalafmt instead of Scalariform
- introduce auto formatting via
sbt format - add pre-commit hook to verify (
sbt checkFormat) and apply formatting
- introduce auto formatting via
- unify command line interface for all OPAL runners using Scallop
- all runners support the same syntax and shared subsets of arguments
- override custom configuration options via CLI arguments
- full support for Java 20 up to 25
- support for Java 25 main entry method definitions
- rename ObjectType to ClassType according to JVM 24 specification
- OPAL can now select default analyses for properties
- support for Android call graph generation
- introduce declared fields
- explicitly provide information about field accesses (reads and writes) via dedicated analysis
- handle reflective field accesses
- field access information is computed as a triggered analysis
- add alias properties and corresponding analysis
- made points-to analysis modules configurable
- move non-Java specific code into SI subproject (analysis manager, registry and schedulers, project and project information keys)
- introduce PDUWeb, a persistable (i.e., a bytecode program counter based) representation of def-use webs
- add framework for dataflow analysis based on structural analysis
- add solver for interprocedural distributed environment (IDE) problems
- remove
AggregateableValuePropertyandExplicitlyNamedProperty - add several scheduling strategies to group analyses into different phases
- rename
RTJartoJavaBase - DependencyExtractor now supports modules, records, nests and permitted subclasses
- add analysis to track string values
- add ConfigurationExplorer to better document configuration values
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
cleanBuildnow 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,LongLinkedTrieSetandLongTrieSetWithListto 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