Skip to content
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

Add a GOTO binary serializer to cprover_bindings #2074

Closed
remi-delmas-3000 opened this issue Jan 5, 2023 · 0 comments · Fixed by #2205
Closed

Add a GOTO binary serializer to cprover_bindings #2074

remi-delmas-3000 opened this issue Jan 5, 2023 · 0 comments · Fixed by #2205
Assignees
Labels
[C] Internal Tracks some internal work. I.e.: Users should not be affected.

Comments

@remi-delmas-3000
Copy link
Contributor

remi-delmas-3000 commented Jan 5, 2023

Proposed change:

  • Write a new serializer for IrepId, InternedString, Irep, Symbol and SymbolTable that directly targets the GOTO binary format.
  • Implement full structural hashing and sharing of irep nodes and strings during serialization
  • Update kani-driver to invoke goto-cc instead of symtab2gb to perform GOTO-conversion of the symbol table.

Motivation:
The current cprover_bindings SymbolTable serializer is based on the serde crate and serialises to JSON, which is then consumed by symtab2gb. The JSON encoding does not allow to reference strings or irep nodes hence causing a blowup in size on save, and symtab2gb is also costly (time and memory) to run.

By serializing the symbol table directly to GOTO binary we can skip the call to symtab2gb and save time and memory.

@remi-delmas-3000 remi-delmas-3000 added the [C] Internal Tracks some internal work. I.e.: Users should not be affected. label Jan 5, 2023
@remi-delmas-3000 remi-delmas-3000 self-assigned this Jan 5, 2023
@remi-delmas-3000 remi-delmas-3000 changed the title Develop GOTO binary loader and deserialiser Add a GOTO binary serializer to cprover_bindings Jan 24, 2023
@remi-delmas-3000 remi-delmas-3000 linked a pull request Feb 9, 2023 that will close this issue
4 tasks
@remi-delmas-3000 remi-delmas-3000 moved this to In Progress in Kani 2023-02-13 Feb 14, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[C] Internal Tracks some internal work. I.e.: Users should not be affected.
Projects
No open projects
Status: In Progress
Development

Successfully merging a pull request may close this issue.

1 participant