You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When enabled, unsupported code is encoded as `assert false`. This way error messages are reported only for unsupported code that is actually reachable.
64
+
50
65
## `ASSERT_TIMEOUT`
51
66
52
67
Maximum time (in milliseconds) for the verifier to spend on a single assertion. Set to `0` to disable timeout. Maps to the verifier command-line argument `--assertTimeout`.
@@ -59,14 +74,14 @@ When enabled, Prusti will behave like `rustc`.
59
74
60
75
Path to a cache file, where verification cache will be loaded from and saved to. The default empty string disables saving any cache to disk. A path to a file which does not yet exist will result in using an empty cache, but then creating and saving to that location on exit.
61
76
62
-
## `CHECK_OVERFLOWS`
63
-
64
-
When enabled, binary operations and numeric casts will be checked for overflows. See [integer type encoding](../encoding/types-heap.md#i-u-char).
65
-
66
77
## `CHECK_FOLDUNFOLD_STATE`
67
78
68
79
When enabled, additional, *slow*, checks for the `fold`/`unfold` algorithm will be generated.
69
80
81
+
## `CHECK_OVERFLOWS`
82
+
83
+
When enabled, binary operations and numeric casts will be checked for overflows. See [integer type encoding](../encoding/types-heap.md#i-u-char).
84
+
70
85
## `CHECK_PANICS`
71
86
72
87
When enabled, Prusti will check for an absence of `panic!`s.
@@ -113,10 +128,22 @@ When enabled, reborrowing DAGs will be output in debug files.
113
128
114
129
When enabled, the encoded Viper program will be output.
115
130
131
+
## `ENCODE_BITVECTORS`
132
+
133
+
When enabled, bitwise integer operations are encoded using bitvectors.
134
+
135
+
**Note:** This option is highly experimental.
136
+
116
137
## `ENABLE_CACHE`
117
138
118
139
When enabled, verification requests (to verify individual `fn`s) are cached to improve future verification. By default the cache is only saved in memory (of the `prusti-server` if enabled). For long-running verification projects use [`CACHE_PATH`](#cache_path) to save to disk.
119
140
141
+
## `ENABLE_PURIFICATION_OPTIMIZATION`
142
+
143
+
When enabled, impure methods are optimized using the purification optimization, which tries to convert heap operations to pure (snapshot-based) operations.
144
+
145
+
**Note:** This option is highly experimental.
146
+
120
147
## `ENABLE_GHOST_CONSTRAINTS`
121
148
122
149
Enables ghost constraints in Prusti specifications.
@@ -156,9 +183,17 @@ When enabled, compilation will continue and a binary will be generated after Pru
156
183
157
184
When enabled, UUIDs of expressions and specifications printed with [`PRINT_TYPECKD_SPECS`](#print_typeckd_specs) are hidden.
158
185
186
+
## `IGNORE_REGIONS`
187
+
188
+
When enabled, debug files dumped by `rustc` will not contain lifetime regions.
189
+
190
+
## `INTERN_NAMES`
191
+
192
+
When enabled, Viper identifiers are interned to shorten them when possible.
193
+
159
194
## `JSON_COMMUNICATION`
160
195
161
-
When enabled, communication with the server will be encoded as JSON instead of bincode.
196
+
When enabled, communication with the server will be encoded as JSON instead of the default bincode.
162
197
163
198
## `LOG`
164
199
@@ -172,29 +207,58 @@ Path to directory in which log files and dumped output will be stored.
172
207
173
208
Log style. See [`env_logger` documentation](https://docs.rs/env_logger/0.7.1/env_logger/index.html#disabling-colors).
174
209
210
+
## `MAX_LOG_FILE_NAME_LENGTH`
211
+
212
+
Maximum allowed length of a log file name. If this is exceeded, the file name is truncated.
213
+
175
214
## `NO_VERIFY`
176
215
177
216
When enabled, verification is skipped altogether.
178
217
218
+
## `NO_VERIFY_DEPS`
219
+
220
+
When enabled, verification is skipped for dependencies.
221
+
222
+
## `ONLY_MEMORY_SAFETY`
223
+
224
+
When enabled, only the core proof is verified.
225
+
226
+
**Note:** This should be used only when `UNSAFE_CORE_PROOF` is enabled.
227
+
228
+
## `OPTIMIZATIONS`
229
+
230
+
Comma-separated list of optimizations to enable, or `"all"` to enable all. Possible values in the list are:
231
+
232
+
-`"inline_constant_functions"`
233
+
-`"delete_unused_predicates"`
234
+
-`"optimize_folding"`
235
+
-`"remove_empty_if"`
236
+
-`"purify_vars"`
237
+
-`"fix_quantifiers"`
238
+
-`"fix_unfoldings"`
239
+
-`"remove_unused_vars"`
240
+
-`"remove_trivial_assertions"`
241
+
-`"clean_cfg"`
242
+
243
+
## `PRINT_COLLECTED_VERIFICATION_ITEMS`
244
+
245
+
When enabled, prints the items collected for verification.
246
+
179
247
## `PRINT_DESUGARED_SPECS`
180
248
181
249
When enabled, prints the AST with desugared specifications.
182
250
183
251
## `PRINT_HASH`
184
252
185
-
When enabled, prints the hash of a verification request (the hash is used for caching). This is a debugging option which does not perform verification — it is similar to `NO_VERIFY`, except that this flag stops the verification process at a later stage.
253
+
When enabled, prints the hash of a verification request (the hash is used for caching). This is a debugging option which does not perform verification — it is similar to [`NO_VERIFY`](#no_verify), except that this flag stops the verification process at a later stage.
186
254
187
255
## `PRINT_TYPECKD_SPECS`
188
256
189
257
When enabled, prints the type-checked specifications.
190
258
191
-
## `PRINT_COLLECTED_VERFICATION_ITEMS`
192
-
193
-
When enabled, prints the items collected for verification.
194
-
195
259
## `QUIET`
196
260
197
-
When enabled, user messages are not printed. Otherwise, `message` outputs into `stderr`.
261
+
When enabled, user messages are not printed. Otherwise, messages output into `stderr`.
198
262
199
263
## `SERVER_ADDRESS`
200
264
@@ -204,11 +268,11 @@ When set to `"MOCK"`, the server is run off-thread, effectively mocking connecti
204
268
205
269
## `SERVER_MAX_CONCURRENCY`
206
270
207
-
The maximum amount of verification requests the server will work on concurrently. If not set, defaults to the number of (logical) cores on the system.
271
+
Maximum amount of verification requests the server will work on concurrently. If not set, defaults to the number of (logical) cores on the system.
208
272
209
273
## `SERVER_MAX_STORED_VERIFIERS`
210
274
211
-
The maximum amount of instantiated Viper verifiers the server will keep around for reuse. If not set, defaults to `SERVER_MAX_CONCURRENT_VERIFICATION_OPERATIONS`. It also doesn't make much sense to set this option to less than that, since then the server will likely have to keep creating new verifiers, reducing the performance gained from reuse.
275
+
Maximum amount of instantiated Viper verifiers the server will keep around for reuse. If not set, defaults to `SERVER_MAX_CONCURRENT_VERIFICATION_OPERATIONS`. It also doesn't make much sense to set this option to less than that, since then the server will likely have to keep creating new verifiers, reducing the performance gained from reuse.
212
276
213
277
**Note:** This does _not_ limit how many verification requests the server handles concurrently, only the size of what is essentially its verifier cache.
214
278
@@ -220,10 +284,22 @@ When enabled, the encoded program is simplified before it is passed to the Viper
220
284
221
285
When enabled, features not supported by Prusti will be reported as warnings rather than errors.
222
286
287
+
## `UNSAFE_CORE_PROOF`
288
+
289
+
When enabled, the new core proof is used, suitable for unsafe code
290
+
291
+
**Note:** This option is currently very incomplete.
292
+
223
293
## `USE_MORE_COMPLETE_EXHALE`
224
294
225
295
When enabled, a more complete `exhale` version is used in the verifier. See [`consolidate`](https://github.com/viperproject/silicon/blob/f48de7f6e2d90d9020812869c713a5d3e2035995/src/main/scala/rules/StateConsolidator.scala#L29-L46). Equivalent to the verifier command-line argument `--enableMoreCompleteExhale`.
226
296
297
+
## `VERIFICATION_DEADLINE`
298
+
299
+
Deadline (in seconds) within which Prusti should encode and verify the program.
300
+
301
+
Prusti panics if it fails to meet this deadline. This flag is intended to be used for tests that aim to catch performance regressions.
302
+
227
303
## `VERIFY_ONLY_BASIC_BLOCK_PATH`
228
304
229
305
Verify only the single execution path goes through the given basic blocks. All basic blocks not on this execution path are replaced with `assume false`. Must be enabled using the [`ENABLE_VERIFY_ONLY_BASIC_BLOCK_PATH`](#enable_verify_only_basic_block_path) flag.
0 commit comments