[don't merge] implement shared as references/pointers #47
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.
The concurrency work requires
shared
objects to be passed by pointer/reference because of “interior mutability.” This PR adds support for it to the C++ backend.This is not in a state for merging. It certainly requires more tests and probably could stand to have a ground-up rewrite. Also, I don't intend to spend any time cleaning this up before the upcoming deadlines, as it currently seems sufficient for the concurrency project. Still, I'm putting this up in case people are curious.
Part of the issue is that shared variables (which can be re-assigned to) must be compiled to pointer types. However, it seemed to me (originally anyway) that references would be easier to manage within expressions, seeing as they would behave the same way as non-reference types ... the result is that we have to switch to and from pointers and references in a bunch of places ... it's a mess.
The main test file is
Test/c++/shared.dfy
. Here's a sample: