-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Compiler client and server #1249
Draft
Jakobeha
wants to merge
432
commits into
master
Choose a base branch
from
serialize+compiler-server
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Conversation
This file contains 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
…ALIZE_LLVM is enabled
… with a different pc than code? Otherwise, we disable OSR in the compiler client when not in dry-run
…t looks like the pir.check assertions aren't true (don't know if this is intended...)
…he big hash (and doesn't work)
…lly sources all tests
…ove it before or did this just not throw an error before
Jakobeha
force-pushed
the
serialize+compiler-server
branch
from
October 24, 2023 03:42
0f7bdf1
to
2ccc60e
Compare
…les, so that we can correctly deserialize proxies within them
…and also garbage-collected better
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 is the current branch with the compiler server.
Typical usage is to run one instance of Ř (the server) with
PIR_SERVER_ADDR=tcp://*:$PORT
and another (the client) withPIR_CLIENT_ADDR=tcp://localhost:$PORT
. The client will have a REPL (or you can give it args like-f $FILE
), and the server will wait for requests and compile them.You can read more flags at
documentation/compiler-server.md
and there are extra flags indocumentation/debugging.md
.There are 2 new
external
dependencies,xxhash
andzeromq
. There are some small inline dependencies inutils
. Thesanitize
gitlab test now downloads and installs a new version of LLVM (16) because the old one can't linkxxhash
for some reason, which requireslibtinfo5
(via apt) andzlib
(needs to be downloaded from the site and built from source).There's also quite a lot of extra stuff. There's a new serialization API which is more flexible and uses
ByteBuffers
/unordered_map
instead of R objects. There's also the Ř object graph printer, which is controlled byPIR_PRINT_INTERNED_RIR_OBJECTS
andPIR_PRINT_INTERNED_RIR_OBJECTS_FREQUENCY
(this is where the massive code insertion count is, because it's counting the lines added by cytoscape.On the other hand, almost all of the changes should only be applied if you use one of the new flags:
PIR_SERVER_ADDR
/PIR_CLIENT_ADDR
but alsoRIR_SERIALIZE_CHAOS
,PIR_DEBUG_SERIALIZE_LLVM
, andPIR_PRINT_INTERNED_RIR_OBJECTS
. Running Ř without these flags allegedly shouldn't have any semantic changes or performance regressions.I did make a few changes like replacing some
LENGTH
/XLENGTH
withRAW_LENGTH
so that the R write barrier works, but these functions should be the same unless you compilecustom-r
with--enable-strict-barrier
(TESTING_WRITE_BARRIER
).