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
The What4 expression builder datastructure was originally designed to be single threaded and have essentially whole-program lifetime. As such, not much care was given to making it possible to isolate separate concurrent or sequential uses from each other. As time has gone on, however, reuse of the expression builder (both across threads and across time) has become more common.
There are a few places where different users of the expression builder can get into trouble sharing the data structure: these mostly have to do with various kinds of configuration options, and also the troublesome get/set current program location operations.
The Config datastructure, in particular, is basically a big mutable map filled with mutable values that can have nontrivial effects when written to (including things like changing the hash-consing setting).
We should design and provide APIs for allowing users of expression builders to isolate themselves from other concurrent and/or subsequent users. This will likely involve being able to do things like "clone" the current configuration state, set up local hash-consing contexts, and provide a different way for terms to be annotated with some notion of the current program location.
The text was updated successfully, but these errors were encountered:
The What4 expression builder datastructure was originally designed to be single threaded and have essentially whole-program lifetime. As such, not much care was given to making it possible to isolate separate concurrent or sequential uses from each other. As time has gone on, however, reuse of the expression builder (both across threads and across time) has become more common.
There are a few places where different users of the expression builder can get into trouble sharing the data structure: these mostly have to do with various kinds of configuration options, and also the troublesome get/set current program location operations.
The
Config
datastructure, in particular, is basically a big mutable map filled with mutable values that can have nontrivial effects when written to (including things like changing the hash-consing setting).We should design and provide APIs for allowing users of expression builders to isolate themselves from other concurrent and/or subsequent users. This will likely involve being able to do things like "clone" the current configuration state, set up local hash-consing contexts, and provide a different way for terms to be annotated with some notion of the current program location.
The text was updated successfully, but these errors were encountered: