|
1 | 1 | # Changes |
2 | 2 |
|
| 3 | +## 7.0.0 |
| 4 | +- *we are now using Scala 3.7.4* |
| 5 | +- *we are now using sbt 1.11.7* |
| 6 | +- various API changes due to new major Scala version |
| 7 | +- fixed typos and minor code style issues |
| 8 | +- introduced custom assertions, Scala 3 no longer supports -Xdisable-assertions |
| 9 | + |
3 | 10 | ## 6.0.0 - Released October 9th 2025 |
4 | 11 | - *we are now using sbt 1.9.7* |
5 | 12 | - *we are now using scalafmt instead of Scalariform* |
6 | | - - introduce auto formatting via `sbt format` |
7 | | - - add pre-commit hook to verify (`sbt checkFormat`) and apply formatting |
| 13 | + - introduce auto formatting via `sbt format` |
| 14 | + - add pre-commit hook to verify (`sbt checkFormat`) and apply formatting |
8 | 15 | - *unify command line interface for all OPAL runners using Scallop* |
9 | | - - all runners support the same syntax and shared subsets of arguments |
10 | | - - override custom configuration options via CLI arguments |
| 16 | + - all runners support the same syntax and shared subsets of arguments |
| 17 | + - override custom configuration options via CLI arguments |
11 | 18 | - full support for Java 20 up to 25 |
12 | | - - support for Java 25 main entry method definitions |
13 | | - - rename ObjectType to ClassType according to JVM 24 specification |
| 19 | + - support for Java 25 main entry method definitions |
| 20 | + - rename ObjectType to ClassType according to JVM 24 specification |
14 | 21 | - OPAL can now select default analyses for properties |
15 | 22 | - support for Android call graph generation |
16 | 23 | - introduce declared fields |
17 | | - - explicitly provide information about field accesses (reads and writes) via dedicated analysis |
18 | | - - handle reflective field accesses |
19 | | - - field access information is computed as a triggered analysis |
| 24 | + - explicitly provide information about field accesses (reads and writes) via dedicated analysis |
| 25 | + - handle reflective field accesses |
| 26 | + - field access information is computed as a triggered analysis |
20 | 27 | - add alias properties and corresponding analysis |
21 | 28 | - made points-to analysis modules configurable |
22 | 29 | - move non-Java specific code into SI subproject (analysis manager, registry and schedulers, project and project information keys) |
|
33 | 40 | ## 5.0.0 - Released January 23rd 2023 |
34 | 41 | - *we are now using sbt 1.6.2* |
35 | 42 | - *we are now using Scala 2.13* |
36 | | - - Scala 2.13 changes: |
37 | | - - replace Unicode arrows (⇒,→,←) by ASCII arrows (=>,->,<-) |
38 | | - - replace Traversable by scala.collection.Iterable |
39 | | - - replace TraversableOnce by scala.collection.IterableOnce |
40 | | - - changes to OPAL's custom data structures: |
41 | | - - replace RefIterator by scala.collection.iterator |
42 | | - - replace Chain by scala.collection.immutable.List |
43 | | - - replace RefArray and IntArray by scala.collection.immutable.ArraySeq |
44 | | - - replace RefArrayStack by scala.collection.immutable.Stack |
45 | | - - replace RefAppendChain by scala.collection.mutable.ArrayDeque |
46 | | - - replace RefArrayBuffer by scala.collection.mutable.ArrayBuffer |
| 43 | + - Scala 2.13 changes: |
| 44 | + - replace Unicode arrows (⇒,→,←) by ASCII arrows (=>,->,<-) |
| 45 | + - replace Traversable by scala.collection.Iterable |
| 46 | + - replace TraversableOnce by scala.collection.IterableOnce |
| 47 | + - changes to OPAL's custom data structures: |
| 48 | + - replace RefIterator by scala.collection.iterator |
| 49 | + - replace Chain by scala.collection.immutable.List |
| 50 | + - replace RefArray and IntArray by scala.collection.immutable.ArraySeq |
| 51 | + - replace RefArrayStack by scala.collection.immutable.Stack |
| 52 | + - replace RefAppendChain by scala.collection.mutable.ArrayDeque |
| 53 | + - replace RefArrayBuffer by scala.collection.mutable.ArrayBuffer |
47 | 54 | - full support for Java 17 up to 19 |
48 | | - - support for Java 17 Sealed Classes |
49 | | - - added isStrict attribute to classes |
50 | | - - ignore isStrict attribute on classes and methods for Java >= 17 |
| 55 | + - support for Java 17 Sealed Classes |
| 56 | + - added isStrict attribute to classes |
| 57 | + - ignore isStrict attribute on classes and methods for Java >= 17 |
51 | 58 | - completed framework for call graph analyses |
52 | | - - introduced TypeIterator to uniformly access type information |
53 | | - - using contexts instead of methods to enable context-sensitive analysis (0-1-CFA, 1-1-CFA) |
54 | | - - support library analysis with CFA |
| 59 | + - introduced TypeIterator to uniformly access type information |
| 60 | + - using contexts instead of methods to enable context-sensitive analysis (0-1-CFA, 1-1-CFA) |
| 61 | + - support library analysis with CFA |
55 | 62 | - introduced new immutability analyses |
56 | | - - replaced FieldMutabilityAnalysis with FieldAssignabilityAnalysis |
57 | | - - support for thread-safe and unsafe lazy initialization |
58 | | - - support for clone pattern |
59 | | - - introduced new FieldImmutabilityAnalysis to integrate field assignability with mutability of values |
60 | | - - support for transitive and non-transitive immutability |
61 | | - - support for immutability dependent on generic type parameters |
62 | | - - updated ClassImmutabilityAnalysis and TypeImmutabilityAnalysis to use new FieldImmutability properties |
| 63 | + - replaced FieldMutabilityAnalysis with FieldAssignabilityAnalysis |
| 64 | + - support for thread-safe and unsafe lazy initialization |
| 65 | + - support for clone pattern |
| 66 | + - introduced new FieldImmutabilityAnalysis to integrate field assignability with mutability of values |
| 67 | + - support for transitive and non-transitive immutability |
| 68 | + - support for immutability dependent on generic type parameters |
| 69 | + - updated ClassImmutabilityAnalysis and TypeImmutabilityAnalysis to use new FieldImmutability properties |
63 | 70 | - added EntrypointsFinder for Android apps |
64 | 71 | - allow flushing caches for ClassTypes/ArrayTypes to free memory when creating many projects in a row |
65 | 72 |
|
|
73 | 80 | - parallel implementation for the PropertyStore |
74 | 81 | - FPCF analyses now use sets for their dependencies |
75 | 82 | - added preliminary framework for FPCF call graphs |
76 | | - - includes CHA, RTA, XTA/MTA/FTA/CTA and points-to based call graphs |
77 | | - - also includes modules for reflection, static initializers, finalizers, serialization, threads, selected native methods and to load dynamic data on reflective calls recorded by TamiFlex |
78 | | - - allows resolution of calls by method signature for library analyses |
| 83 | + - includes CHA, RTA, XTA/MTA/FTA/CTA and points-to based call graphs |
| 84 | + - also includes modules for reflection, static initializers, finalizers, serialization, threads, selected native methods and to load dynamic data on reflective calls recorded by TamiFlex |
| 85 | + - allows resolution of calls by method signature for library analyses |
79 | 86 | - added an analysis to collect information about the usage of a class within a project |
80 | 87 | - added `LongTrieSet`, `LongLinkedTrieSet` and `LongTrieSetWithList` to optimize storage of Long values |
81 | 88 | - removed `PrecomputedPartialResult` |
|
136 | 143 | - fixed issues in some tests which open a huge number of files |
137 | 144 | - fixed a rare issue in the identification of closed strongly connected components |
138 | 145 | - completely reimplemented the property store |
139 | | - - added various analyses related to deriving the purity of methods, the immutability of classes, escape information etc. |
| 146 | + - added various analyses related to deriving the purity of methods, the immutability of classes, escape information etc. |
140 | 147 | - very much improved OPAL's collection library w.r.t. optimized data structures for Int values |
141 | 148 |
|
142 | 149 | ## 1.0.0 - Released Oct. 25th 2017 |
|
0 commit comments