Skip to content

Commit 3fcb562

Browse files
Merge branch 'master' into issue_1467
2 parents b7265e7 + b68df11 commit 3fcb562

File tree

600 files changed

+21283
-7947
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

600 files changed

+21283
-7947
lines changed

.github/workflows/coverage.yml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ jobs:
1616
fail-fast: false
1717
matrix:
1818
os:
19-
- ubuntu-latest
19+
- ubuntu-22.04 # https://github.com/ocaml/setup-ocaml/issues/872
2020
ocaml-compiler:
21-
- ocaml-variants.4.14.0+options,ocaml-option-flambda # matches opam lock file
21+
- ocaml-variants.4.14.2+options,ocaml-option-flambda # matches opam lock file
2222
# don't add any other because they won't be used
2323

2424
runs-on: ${{ matrix.os }}
@@ -35,13 +35,12 @@ jobs:
3535
# otherwise setup-ocaml pins non-locked dependencies
3636
# https://github.com/ocaml/setup-ocaml/issues/166
3737
OPAMLOCKED: locked
38-
uses: ocaml/setup-ocaml@v2
38+
uses: ocaml/setup-ocaml@v3
3939
with:
4040
ocaml-compiler: ${{ matrix.ocaml-compiler }}
41-
opam-depext-flags: --with-test # doesn't work (https://github.com/ocaml/opam/issues/5836)
4241

4342
- name: Install graph-easy # TODO: remove if depext --with-test works
44-
if: ${{ matrix.os == 'ubuntu-latest' }}
43+
if: ${{ matrix.os == 'ubuntu-22.04' }}
4544
run: sudo apt install -y libgraph-easy-perl
4645

4746
- name: Install dependencies

.github/workflows/docker.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ jobs:
5959
6060
- name: Build Docker image
6161
id: build
62-
uses: docker/build-push-action@v5
62+
uses: docker/build-push-action@v6
6363
with:
6464
context: .
6565
load: true # load into docker instead of immediately pushing
@@ -72,7 +72,7 @@ jobs:
7272
run: docker run --rm -v $(pwd):/data ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.meta.outputs.version }} /data/tests/regression/04-mutex/01-simple_rc.c # run image by version in case multiple tags
7373

7474
- name: Push Docker image
75-
uses: docker/build-push-action@v5
75+
uses: docker/build-push-action@v6
7676
with:
7777
context: .
7878
push: true

.github/workflows/docs.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ jobs:
1616
strategy:
1717
matrix:
1818
os:
19-
- ubuntu-latest
19+
- ubuntu-22.04 # https://github.com/ocaml/setup-ocaml/issues/872
2020
ocaml-compiler:
21-
- ocaml-variants.4.14.0+options,ocaml-option-flambda # matches opam lock file
21+
- ocaml-variants.4.14.2+options,ocaml-option-flambda # matches opam lock file
2222
# don't add any other because they won't be used
2323

2424
runs-on: ${{ matrix.os }}
@@ -35,7 +35,7 @@ jobs:
3535
# otherwise setup-ocaml pins non-locked dependencies
3636
# https://github.com/ocaml/setup-ocaml/issues/166
3737
OPAMLOCKED: locked
38-
uses: ocaml/setup-ocaml@v2
38+
uses: ocaml/setup-ocaml@v3
3939
with:
4040
ocaml-compiler: ${{ matrix.ocaml-compiler }}
4141

.github/workflows/indentation.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ jobs:
1010
strategy:
1111
matrix:
1212
os:
13-
- ubuntu-latest
13+
- ubuntu-22.04 # https://github.com/ocaml/setup-ocaml/issues/872
1414
ocaml-compiler:
1515
- 4.14.x
1616

@@ -25,7 +25,7 @@ jobs:
2525
fetch-depth: 0
2626

2727
- name: Set up OCaml ${{ matrix.ocaml-compiler }}
28-
uses: ocaml/setup-ocaml@v2
28+
uses: ocaml/setup-ocaml@v3
2929
with:
3030
ocaml-compiler: ${{ matrix.ocaml-compiler }}
3131

.github/workflows/locked.yml

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ jobs:
1717
fail-fast: false
1818
matrix:
1919
os:
20-
- ubuntu-latest
20+
- ubuntu-22.04 # https://github.com/ocaml/setup-ocaml/issues/872
2121
- macos-13
2222
ocaml-compiler:
23-
- ocaml-variants.4.14.0+options,ocaml-option-flambda # matches opam lock file
23+
- ocaml-variants.4.14.2+options,ocaml-option-flambda # matches opam lock file
2424
# don't add any other because they won't be used
2525

2626
runs-on: ${{ matrix.os }}
@@ -37,13 +37,12 @@ jobs:
3737
# otherwise setup-ocaml pins non-locked dependencies
3838
# https://github.com/ocaml/setup-ocaml/issues/166
3939
OPAMLOCKED: locked
40-
uses: ocaml/setup-ocaml@v2
40+
uses: ocaml/setup-ocaml@v3
4141
with:
4242
ocaml-compiler: ${{ matrix.ocaml-compiler }}
43-
opam-depext-flags: --with-test # doesn't work (https://github.com/ocaml/opam/issues/5836)
4443

4544
- name: Install graph-easy # TODO: remove if depext --with-test works
46-
if: ${{ matrix.os == 'ubuntu-latest' }}
45+
if: ${{ matrix.os == 'ubuntu-22.04' }}
4746
run: sudo apt install -y libgraph-easy-perl
4847

4948
- name: Install dependencies
@@ -71,9 +70,9 @@ jobs:
7170
fail-fast: false
7271
matrix:
7372
os:
74-
- ubuntu-latest
73+
- ubuntu-22.04 # https://github.com/ocaml/setup-ocaml/issues/872
7574
ocaml-compiler:
76-
- ocaml-variants.4.14.0+options,ocaml-option-flambda # matches opam lock file
75+
- ocaml-variants.4.14.2+options,ocaml-option-flambda # matches opam lock file
7776
# don't add any other because they won't be used
7877

7978
runs-on: ${{ matrix.os }}
@@ -87,13 +86,12 @@ jobs:
8786
# otherwise setup-ocaml pins non-locked dependencies
8887
# https://github.com/ocaml/setup-ocaml/issues/166
8988
OPAMLOCKED: locked
90-
uses: ocaml/setup-ocaml@v2
89+
uses: ocaml/setup-ocaml@v3
9190
with:
9291
ocaml-compiler: ${{ matrix.ocaml-compiler }}
93-
opam-depext-flags: --with-test # doesn't work (https://github.com/ocaml/opam/issues/5836)
9492

9593
- name: Install graph-easy # TODO: remove if depext --with-test works
96-
if: ${{ matrix.os == 'ubuntu-latest' }}
94+
if: ${{ matrix.os == 'ubuntu-22.04' }}
9795
run: sudo apt install -y libgraph-easy-perl
9896

9997
- name: Install spin
@@ -114,9 +112,9 @@ jobs:
114112
fail-fast: false
115113
matrix:
116114
os:
117-
- ubuntu-latest
115+
- ubuntu-22.04 # https://github.com/ocaml/setup-ocaml/issues/872
118116
ocaml-compiler:
119-
- ocaml-variants.4.14.0+options,ocaml-option-flambda # matches opam lock file
117+
- ocaml-variants.4.14.2+options,ocaml-option-flambda # matches opam lock file
120118
# don't add any other because they won't be used
121119
node-version:
122120
- 14
@@ -132,7 +130,7 @@ jobs:
132130
# otherwise setup-ocaml pins non-locked dependencies
133131
# https://github.com/ocaml/setup-ocaml/issues/166
134132
OPAMLOCKED: locked
135-
uses: ocaml/setup-ocaml@v2
133+
uses: ocaml/setup-ocaml@v3
136134
with:
137135
ocaml-compiler: ${{ matrix.ocaml-compiler }}
138136

.github/workflows/unlocked.yml

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ jobs:
1515
fail-fast: false
1616
matrix:
1717
os:
18-
- ubuntu-latest
18+
- ubuntu-22.04 # https://github.com/ocaml/setup-ocaml/issues/872
1919
- macos-13
2020
ocaml-compiler:
2121
- 5.2.x
2222
- 5.1.x
2323
- 5.0.x
24-
- ocaml-variants.4.14.0+options,ocaml-option-flambda
24+
- ocaml-variants.4.14.2+options,ocaml-option-flambda
2525
- 4.14.x
2626
apron:
2727
- false
@@ -30,9 +30,11 @@ jobs:
3030
- false
3131

3232
include:
33-
- os: ubuntu-latest
33+
- os: ubuntu-22.04 # https://github.com/ocaml/setup-ocaml/issues/872
3434
ocaml-compiler: 4.14.x
3535
z3: true
36+
- os: macos-latest
37+
ocaml-compiler: 4.14.x
3638

3739
# customize name to use readable string for apron instead of just a boolean
3840
# workaround for missing ternary operator: https://github.com/actions/runner/issues/409
@@ -45,13 +47,12 @@ jobs:
4547
uses: actions/checkout@v4
4648

4749
- name: Set up OCaml ${{ matrix.ocaml-compiler }}
48-
uses: ocaml/setup-ocaml@v2
50+
uses: ocaml/setup-ocaml@v3
4951
with:
5052
ocaml-compiler: ${{ matrix.ocaml-compiler }}
51-
opam-depext-flags: --with-test # doesn't work (https://github.com/ocaml/opam/issues/5836)
5253

5354
- name: Install graph-easy # TODO: remove if depext --with-test works
54-
if: ${{ matrix.os == 'ubuntu-latest' }}
55+
if: ${{ matrix.os == 'ubuntu-22.04' }}
5556
run: sudo apt install -y libgraph-easy-perl
5657

5758
- name: Install dependencies
@@ -89,10 +90,10 @@ jobs:
8990
fail-fast: false
9091
matrix:
9192
os:
92-
- ubuntu-latest
93+
- ubuntu-22.04 # https://github.com/ocaml/setup-ocaml/issues/872
9394
- macos-13
9495
ocaml-compiler:
95-
- ocaml-variants.4.14.0+options,ocaml-option-flambda # matches opam lock file, downgrade deps step
96+
- ocaml-variants.4.14.2+options,ocaml-option-flambda # matches opam lock file, downgrade deps step
9697

9798
name: lower-bounds (${{ matrix.os }}, ${{ matrix.ocaml-compiler }}, downgrade)
9899

@@ -109,10 +110,9 @@ jobs:
109110
uses: ocaml/setup-ocaml@v2
110111
with:
111112
ocaml-compiler: ${{ matrix.ocaml-compiler }}
112-
opam-depext-flags: --with-test # doesn't work (https://github.com/ocaml/opam/issues/5836)
113113

114114
- name: Install graph-easy # TODO: remove if depext --with-test works
115-
if: ${{ matrix.os == 'ubuntu-latest' }}
115+
if: ${{ matrix.os == 'ubuntu-22.04' }}
116116
run: sudo apt install -y libgraph-easy-perl
117117

118118
- name: Install dependencies
@@ -133,7 +133,7 @@ jobs:
133133
- name: Downgrade dependencies
134134
# must specify ocaml-base-compiler again to prevent it from being downgraded
135135
# prevent num downgrade to avoid dune/jbuilder error: https://github.com/ocaml/dune/issues/5280
136-
run: opam install $(opam exec -- opam-0install --prefer-oldest goblint ocaml-variants.4.14.0+options ocaml-option-flambda num.1.5)
136+
run: opam install $(opam exec -- opam-0install --prefer-oldest goblint ocaml-variants.4.14.2+options ocaml-option-flambda num.1.5)
137137

138138
- name: Build
139139
run: ./make.sh nat
@@ -165,7 +165,7 @@ jobs:
165165

166166
- name: Build dev Docker image
167167
id: build
168-
uses: docker/build-push-action@v5
168+
uses: docker/build-push-action@v6
169169
with:
170170
context: .
171171
target: dev
@@ -187,10 +187,10 @@ jobs:
187187
fail-fast: false
188188
matrix:
189189
os:
190-
- ubuntu-latest
190+
- ubuntu-22.04 # https://github.com/ocaml/setup-ocaml/issues/872
191191
- macos-13
192192
ocaml-compiler:
193-
- ocaml-variants.4.14.0+options,ocaml-option-flambda # matches opam lock file
193+
- ocaml-variants.4.14.2+options,ocaml-option-flambda # matches opam lock file
194194

195195
runs-on: ${{ matrix.os }}
196196

@@ -199,13 +199,12 @@ jobs:
199199
uses: actions/checkout@v4
200200

201201
- name: Set up OCaml ${{ matrix.ocaml-compiler }}
202-
uses: ocaml/setup-ocaml@v2
202+
uses: ocaml/setup-ocaml@v3
203203
with:
204204
ocaml-compiler: ${{ matrix.ocaml-compiler }}
205-
opam-depext-flags: --with-test # doesn't work (https://github.com/ocaml/opam/issues/5836)
206205

207206
- name: Install graph-easy # TODO: remove if depext --with-test works
208-
if: ${{ matrix.os == 'ubuntu-latest' }}
207+
if: ${{ matrix.os == 'ubuntu-22.04' }}
209208
run: sudo apt install -y libgraph-easy-perl
210209

211210
- name: Install Goblint with test

.semgrep/fold.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
rules:
2+
- id: fold-exists
3+
patterns:
4+
- pattern-either:
5+
- pattern: $D.fold ... false
6+
- pattern: $D.fold_left ... false
7+
- pattern: $D.fold_right ... false
8+
- pattern: fold ... false
9+
- pattern: fold_left ... false
10+
- pattern: fold_right ... false
11+
message: consider replacing fold with exists
12+
languages: [ocaml]
13+
severity: WARNING
14+
15+
- id: fold-for_all
16+
patterns:
17+
- pattern-either:
18+
- pattern: $D.fold ... true
19+
- pattern: $D.fold_left ... true
20+
- pattern: $D.fold_right ... true
21+
- pattern: fold ... true
22+
- pattern: fold_left ... true
23+
- pattern: fold_right ... true
24+
message: consider replacing fold with for_all
25+
languages: [ocaml]
26+
severity: WARNING

.semgrep/tracing.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,16 @@ rules:
88
- pattern: Messages.tracec
99
- pattern: Messages.traceu
1010
- pattern: Messages.traceli
11+
- pattern: M.trace
12+
- pattern: M.tracel
13+
- pattern: M.tracei
14+
- pattern: M.tracec
15+
- pattern: M.traceu
16+
- pattern: M.traceli
1117
- pattern-not-inside: if Messages.tracing then ...
1218
- pattern-not-inside: if Messages.tracing && ... then ...
19+
- pattern-not-inside: if M.tracing then ...
20+
- pattern-not-inside: if M.tracing && ... then ...
1321
message: trace functions should only be called if tracing is enabled at compile time
1422
languages: [ocaml]
1523
severity: WARNING

.zenodo.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@
2323
"affiliation": "Technische Universität München",
2424
"orcid": "0009-0009-9644-7475"
2525
},
26+
{
27+
"name": "Holter, Karoliine",
28+
"affiliation": "University of Tartu",
29+
"orcid": "0009-0008-3725-4131"
30+
},
2631
{
2732
"name": "Vogler, Ralf",
2833
"affiliation": "Technische Universität München"

CHANGELOG.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,33 @@
1+
## v2.5.0
2+
Functionally equivalent to Goblint in SV-COMP 2025.
3+
4+
* Add 32bit vs 64bit architecture support (#54, #1574).
5+
* Add per-function context gas analysis (#1569, #1570, #1598).
6+
* Adapt automatic static loop unrolling (#1516, #1582, #1583, #1584, #1590, #1595, #1599).
7+
* Adapt automatic configuration tuning (#1450, #1612, #1181, #1604).
8+
* Simplify non-relational integer invariants in witnesses (#1517).
9+
* Fix excessive hash collisions (#1594, #1602).
10+
* Clean up various code (#1095, #1523, #1554, #1575, #1588, #1597, #1614).
11+
12+
## v2.4.0
13+
* Remove unmaintained analyses: spec, file (#1281).
14+
* Add linear two-variable equalities analysis (#1297, #1412, #1466).
15+
* Add callstring, loopfree callstring and context gas analyses (#1038, #1340, #1379, #1427, #1439).
16+
* Add non-relational thread-modular value analyses with thread IDs (#1366, #1398, #1399).
17+
* Add NULL byte array domain (#1076).
18+
* Fix spurious overflow warnings from internal evaluations (#1406, #1411, #1511).
19+
* Refactor non-definite mutex handling to fix unsoundness (#1430, #1500, #1503, #1409).
20+
* Fix non-relational thread-modular value analysis unsoundness with ambiguous points-to sets (#1457, #1458).
21+
* Fix mutex type analysis unsoundness and enable it by default (#1414, #1416, #1510).
22+
* Add points-to set refinement on mutex path splitting (#1287, #1343, #1374, #1396, #1407).
23+
* Improve narrowing operators (#1502, #1540, #1543).
24+
* Extract automatic configuration tuning for soundness (#1469).
25+
* Fix many locations in witnesses (#1355, #1372, #1400, #1403).
26+
* Improve output readability (#1294, #1312, #1405, #1497).
27+
* Refactor logging (#1117).
28+
* Modernize all library function specifications (#1029, #688, #1174, #1289, #1447, #1487).
29+
* Remove OCaml 4.10, 4.11, 4.12 and 4.13 support (#1448).
30+
131
## v2.3.0
232
Functionally equivalent to Goblint in SV-COMP 2024.
333

0 commit comments

Comments
 (0)