Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
why3
why3
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 120
    • Issues 120
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 17
    • Merge Requests 17
  • Operations
    • Operations
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
  • Why3
  • why3why3
  • Issues
  • #526

Closed
Open
Opened Jan 14, 2021 by Xavier Denis@xdenis🐦Developer

Private types are exposed in server communication

In Why3, IDEs are constructed using a server-client model, in which the IDE UI sends request to Why3 which then responds using notification. There is plenty of existing infrastructure that can be used to define a new IDE interface, however, if you wish to serialize these requests and notifications, you can encounter problems. In my case I am using (ppx_deriving_yojson / ocaml-rpc) but these problems are independent of the tool used.

Specifically, the notification includes the proof_attempt_status type indirectly through update_info. This type has two problems when attmepting to derive serialization structurally, one minor and one more serious:

  1. The InternalFailure constructor has an exn type field which should not / cannot be serialized.
  2. The Done constructor includes the the model type through Call_provers.prover_result, model is opaque, and it's uncledar how it should be properly serialized as a result.

Since notification is part of the IDE api boundary I feel like it should be possible to roundtrip notifications, or at least fully serialize them.

The most immediate solution that occurs to me would be to use serialization friendly representations. This seems easy for the InternalFailure case but less clear for the model case.

Edited Jan 14, 2021 by Xavier Denis
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
Reference: why3/why3#526