Skip to content

Commit 84e28b7

Browse files
author
Dominik Helm
committed
Prepare Release 7.0.0
1 parent 333a305 commit 84e28b7

File tree

13 files changed

+183
-178
lines changed

13 files changed

+183
-178
lines changed

Changes.md

Lines changed: 44 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,29 @@
11
# Changes
22

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+
310
## 6.0.0 - Released October 9th 2025
411
- *we are now using sbt 1.9.7*
512
- *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
815
- *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
1118
- 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
1421
- OPAL can now select default analyses for properties
1522
- support for Android call graph generation
1623
- 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
2027
- add alias properties and corresponding analysis
2128
- made points-to analysis modules configurable
2229
- move non-Java specific code into SI subproject (analysis manager, registry and schedulers, project and project information keys)
@@ -33,33 +40,33 @@
3340
## 5.0.0 - Released January 23rd 2023
3441
- *we are now using sbt 1.6.2*
3542
- *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
4754
- 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
5158
- 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
5562
- 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
6370
- added EntrypointsFinder for Android apps
6471
- allow flushing caches for ClassTypes/ArrayTypes to free memory when creating many projects in a row
6572

@@ -73,9 +80,9 @@
7380
- parallel implementation for the PropertyStore
7481
- FPCF analyses now use sets for their dependencies
7582
- 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
7986
- added an analysis to collect information about the usage of a class within a project
8087
- added `LongTrieSet`, `LongLinkedTrieSet` and `LongTrieSetWithList` to optimize storage of Long values
8188
- removed `PrecomputedPartialResult`
@@ -136,7 +143,7 @@
136143
- fixed issues in some tests which open a huge number of files
137144
- fixed a rare issue in the identification of closed strongly connected components
138145
- 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.
140147
- very much improved OPAL's collection library w.r.t. optimized data structures for Int values
141148

142149
## 1.0.0 - Released Oct. 25th 2017

DEVELOPING_OPAL/validate/src/it/resources/hermes-test-fixtures.json

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,130 +5,130 @@
55
"projects": [
66
{
77
"id" : "JVM Features",
8-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/jvm_features-1.8-g-parameters-genericsignature.jar",
8+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/jvm_features-1.8-g-parameters-genericsignature.jar",
99
"libcp_defaults" : "RTJar"
1010
},
1111
{
1212
"id": "ai",
13-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/ai.jar",
13+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/ai.jar",
1414
"libcp_defaults" : "JRE"
1515
},
1616
{
1717
"id": "arrays",
18-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/arrays.jar"
18+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/arrays.jar"
1919
},
2020
{
2121
"id": "bugs",
22-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/bugs.jar",
22+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/bugs.jar",
2323
"libcp_defaults" : "RTJar"
2424
},
2525
{
2626
"id": "classhierarchy",
27-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/classhierarchy.jar"
27+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/classhierarchy.jar"
2828
},
2929
{
3030
"id": "code",
31-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/code.jar"
31+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/code.jar"
3232
},
3333
{
3434
"id": "constants",
35-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/constants.jar"
35+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/constants.jar"
3636
},
3737
{
3838
"id": "controlflow",
39-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/controlflow.jar"
39+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/controlflow.jar"
4040
},
4141
{
4242
"id": "cornercases",
43-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/cornercases.jar"
43+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/cornercases.jar"
4444
},
4545
{
4646
"id": "dependencies",
47-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/dependencies-1.8-g-parameters-genericsignature-preserveAllLocals.jar"
47+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/dependencies-1.8-g-parameters-genericsignature-preserveAllLocals.jar"
4848
},
4949
{
5050
"id": "deprecated",
51-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/deprecated.jar"
51+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/deprecated.jar"
5252
},
5353
{
5454
"id": "equals_hashcode",
55-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/equals_hashcode.jar"
55+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/equals_hashcode.jar"
5656
},
5757
{
5858
"id": "fields-g-8",
59-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/fields-g-8-parameters-genericsignature.jar"
59+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/fields-g-8-parameters-genericsignature.jar"
6060
},
6161
{
6262
"id": "fields-g=none",
63-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/fields-g=none-5.jar"
63+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/fields-g=none-5.jar"
6464
},
6565
{
6666
"id": "generictypes",
67-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/generictypes.jar"
67+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/generictypes.jar"
6868
},
6969
{
7070
"id": "immutability",
71-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/immutability.jar"
71+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/immutability.jar"
7272
},
7373
{
7474
"id": "immutable",
75-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/immutable.jar"
75+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/immutable.jar"
7676
},
7777
{
7878
"id": "innerclasses",
79-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/innerclasses-1.8-g-parameters-genericsignature.jar"
79+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/innerclasses-1.8-g-parameters-genericsignature.jar"
8080
},
8181
{
8282
"id": "java8methodresolution",
83-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/java8methodresolution.jar"
83+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/java8methodresolution.jar"
8484
},
8585
{
8686
"id": "jsr_ret",
87-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/jsr_ret-1.3-g-preserveAllLocals-nowarn.jar"
87+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/jsr_ret-1.3-g-preserveAllLocals-nowarn.jar"
8888
},
8989
{
9090
"id": "lambdas",
91-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/lambdas-1.8-g-parameters-genericsignature.jar"
91+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/lambdas-1.8-g-parameters-genericsignature.jar"
9292
},
9393
{
9494
"id": "methods_types",
95-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/method_types.jar"
95+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/method_types.jar"
9696
},
9797
{
9898
"id": "methods",
99-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/methods.jar"
99+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/methods.jar"
100100
},
101101
{
102102
"id": "metrics",
103-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/metrics.jar"
103+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/metrics.jar"
104104
},
105105
{
106106
"id": "polymorphism",
107-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/polymorphism.jar"
107+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/polymorphism.jar"
108108
},
109109
{
110110
"id": "proxy",
111-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/proxy.jar"
111+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/proxy.jar"
112112
},
113113
{
114114
"id": "pureness",
115-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/pureness.jar"
115+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/pureness.jar"
116116
},
117117
{
118118
"id": "signatures",
119-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/signatures.jar"
119+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/signatures.jar"
120120
},
121121
{
122122
"id": "tactest",
123-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/tactest-8-preserveAllLocals.jar"
123+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/tactest-8-preserveAllLocals.jar"
124124
},
125125
{
126126
"id": "type_annotations",
127-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/type_annotations.jar"
127+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/type_annotations.jar"
128128
},
129129
{
130130
"id": "types",
131-
"cp": "OPAL/bi/target/scala-2.13/resource_managed/test/types.jar"
131+
"cp": "OPAL/bi/target/scala-3.7.3/resource_managed/test/types.jar"
132132
}
133133
]
134134
}

README.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ OPAL also comes with a growing number of tools that are intended to help develop
5151
The following applies to the "Master/Develop" branch.
5252

5353
OPAL uses SBT as its build tool and working with OPAL is particularly easy using the SBT console.
54-
Make sure that you have at least Java 16 (running OPAL, i.e., not compiling the test fixtures, should still work with Java 8), Scala 2.13.11, and SBT 1.6.2 installed and running and that SBT can use at least 4GB of RAM (-Xmx4G). Download a recent snapshot of OPAL or clone the repository.
54+
Make sure that you have at least Java 16 (running OPAL, i.e., not compiling the test fixtures, should still work with Java 8), Scala 3.7.3, and SBT 1.11.7 installed and running and that SBT can use at least 4GB of RAM (-Xmx4G). Download a recent snapshot of OPAL or clone the repository.
5555
Go to OPAL's root folder.
5656

5757
* Call `sbt cleanBuild`. This compiles all core projects (including tests), generates the project-wide ScalaDoc documentation and publishes the project to your local ivy directory.

0 commit comments

Comments
 (0)