Introduce backwards compatible infrastructure for parallelism#1708
Merged
arkocal merged 27 commits intogoblint:masterfrom May 15, 2025
Merged
Introduce backwards compatible infrastructure for parallelism#1708arkocal merged 27 commits intogoblint:masterfrom
arkocal merged 27 commits intogoblint:masterfrom
Conversation
In order to maintain backwards compatibility, we need to provide stubs for functionality needed for parallelism when no libraries provide this. Also, to keep possibly diverging parts to a minimum, the utilities for parallelism are kept in a separate module.
This works async in Ocaml4 and truly parallel in OCaml5
fix printing issue by using BatFormat in messages.ml
This is a high level abstraction AND a backward compat. wrapper
Possibly, this could be needed elsewhere, where state is involved
Make stack DLS and initialize for each domain Actually implemented by Felix Krayer
522315f to
80cac2a
Compare
80cac2a to
3f7d226
Compare
Contributor
Author
|
Turns out introducing domain_shims breaks GobView. The application than outputs on the console and hangs indefinitely. |
Member
Do you know where this call happens? Is it something we can safely stub to just return unit or somehow avoid these calls when in Gobview mode? |
Member
|
I guess we either need to turn the gobview job into an unlocked one, or provide a different lockfile for the gobview job somehow? |
sim642
reviewed
Mar 26, 2025
Contributor
There was a problem hiding this comment.
Copilot reviewed 8 out of 25 changed files in this pull request and generated 1 comment.
Files not reviewed (17)
- dune-project: Language not supported
- goblint.opam: Language not supported
- goblint.opam.locked: Language not supported
- src/cdomain/value/cdomains/mutexAttrDomain.ml: Language not supported
- src/cdomain/value/dune: Language not supported
- src/common/util/messages.ml: Language not supported
- src/config/options.schema.json: Language not supported
- src/dune: Language not supported
- src/goblint_lib.ml: Language not supported
- src/lifters/wideningTokenLifter.ml: Language not supported
- src/solver/dune: Language not supported
- src/util/parallel/domainsafeLazy.ml: Language not supported
- src/util/parallel/domainsafeLazy.mli: Language not supported
- src/util/parallel/dune: Language not supported
- src/util/parallel/gobMutex.domainslib.ml: Language not supported
- src/util/parallel/gobMutex.no-domainslib.ml: Language not supported
- src/util/parallel/threadpool.domainslib.ml: Language not supported
Comments suppressed due to low confidence (1)
.github/workflows/unlocked.yml:255
- [nitpick] Consider using consistent capitalization for 'GobView' across workflow configurations to align with the documentation.
gobview:
Member
|
Looks like the Copilot reviews won't be too useful for us right now since it doesn't want to review .ml files. |
This was referenced Apr 17, 2025
sim642
reviewed
Apr 17, 2025
sim642
reviewed
Apr 29, 2025
Since the mocked parallelism modules are named differently, they are not recognized by the script
sim642
reviewed
May 5, 2025
…l-await by Vesa Karvonen
michael-schwarz
approved these changes
May 6, 2025
sim642
reviewed
May 14, 2025
sim642
approved these changes
May 15, 2025
sim642
added a commit
that referenced
this pull request
May 16, 2025
sim642
added a commit
to sim642/opam-repository
that referenced
this pull request
Sep 5, 2025
CHANGES: * Add division by zero analysis (goblint/analyzer#1764). * Add bitfield domain (goblint/analyzer#1623). * Add weakly-relational C-2PO pointer analysis (goblint/analyzer#1485). * Add widening delay (goblint/analyzer#1358, goblint/analyzer#1442, goblint/analyzer#1483). * Add narrowing of globals to top-down solver (goblint/analyzer#1636). * Add weak dependencies to top-down solver (goblint/analyzer#1746, goblint/analyzer#1747). * Add YAML ghost witness generation (goblint/analyzer#1394). * Remove GraphML witness generation (goblint/analyzer#1732, goblint/analyzer#1733, goblint/analyzer#1738). * Use C standard option for preprocessing (goblint/analyzer#1807). * Add bash completion for array options (goblint/analyzer#1670, goblint/analyzer#1705, goblint/analyzer#1750). * Make `malloc(0)` semantics configurable (goblint/analyzer#1418, goblint/analyzer#1777). * Update path-sensitive analyses (goblint/analyzer#1785, goblint/analyzer#1791, goblint/analyzer#1792). * Fix evaluation of library function arguments (goblint/analyzer#1758, goblint/analyzer#1761). * Optimize affine equalities analysis using sparse matrices (goblint/analyzer#1459, goblint/analyzer#1625). * Prepare for parallelism (goblint/analyzer#1708, goblint/analyzer#1744, goblint/analyzer#1748, goblint/analyzer#1781, goblint/analyzer#1790).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This contains the rather harmless parts. As discussed, all variations of modules have been implemented using
domain_shimsand the select stanza in dune.ppx_optcompis not involved anymore.The PR is rather large, but can be reviewed commit-by-commit.