-
Notifications
You must be signed in to change notification settings - Fork 14
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
Rewrite PGo: simpler architecture, less code #140
Conversation
…dure support + some rare mapping cases
Some progress notes: this rewrite now has fuzz-tested coverage of all recognised value-level TLA+ AST types and a large majority of built-in operations. The design of the archetype resource / context / critical section system Go-side still needs work. At a high level, my idea for fixing this issue is to implement async writes using a model similar to flat-combining, with durability coming from a form of write-ahead logging + async compaction. This would likely be much more efficient than my current idea, might also work well with current ideas on PGo output validation (via the logging part). For now, though, I'm seriously considering just scrapping the durability API entirely for the MVP, as it's a lot of trouble, and it would be massive scope creep to actually work through and validate the different design ideas. Turns out it's not just a "let's pin an API on it and get it right later" problem... Note: the failing checks are because of two known-failing examples. This is more or less because the tests have not properly been written / worked through yet, which should be done before merging. |
…TLA+ function in Go lib
A significant blocker for working on PGo has been a bulky, hard to understand codebase.
This PR is the almost-conclusion to a near-complete rewrite of the compiler and most of its runtime libraries.
The codebase becomes pure Scala (and Go), loses >20k LOC, and is written in a much more agile and mostly-declarative style.
The Go codebase gains module support.
This does not come without a cost: some legacy modes have been removed.
Overall changes:
This PR is more or less ready for feedback, but lacks documentation and testing. These will come.