Skip to content

OPAL Release 5.0.0

Latest
Compare
Choose a tag to compare
@roterEmil roterEmil released this 23 Jan 14:28
· 805 commits to develop since this release
  • 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