Skip to content

Releases: opalj/opal

OPAL Release 5.0.0

23 Jan 14:28
Compare
Choose a tag to compare
  • 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
  • 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
  • added EntrypointsFinder for Android apps
  • allow flushing caches for ObjectTypes/ArrayTypes to free memory when creating many projects in a row

4.0.0

07 Jul 09:09
Compare
Choose a tag to compare
  • 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 and LongTrieSetWithList 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