Create a JSON-RPC for KeY
A remote KeY api as promised in KeY++
Design Descisions
-
We use handles to refer to large entities like,
KeYEnvironment,Proof, orNode. These handles are called*Idand are aligned hierarchical:EnvironemntId < ProofId < NodeIdIf you have a
NodeId, you can get aProofIdby callingnodeId.proofId(). -
We do not use expose any
key.coreclasses. For example, Key'sExamples are converted intoExampleDescfor the serialization. Every information holding class ends withDesc. -
Given complex arguments (especially optional/nullable parameters) are packed into a class which ends with
Params.
TODO
- [x] Implement a client in non-java, non-jvm (Python)
For what languages do you want to write a client? What's on your TODO list?
I make a simple one in Python. The Python stubs are mostly generated by using Java Reflection. I am creating a JSON with meta information, markdown and Python classes.
I don't know whether you want a rust client. In general, you need a background thread for reading messages, and a shared map from request ids to wait conditions/locks for block synchronous requests until return value is received.
The Python API is more for testing, I am not planning a production-worthy state.
Do we have a use case? For JVM programs I would still recommend to use KeY directly.
Quality Gate failed
Failed conditions
4 Security Hotspots
0.0% Coverage on New Code (required ≥ 80%)
E Reliability Rating on New Code (required ≥ A)
See analysis details on SonarCloud
Catch issues before they fail your Quality Gate with our IDE extension
SonarLint
Quality Gate passed
Issues
171 New issues
0 Accepted issues
Measures
0 Security Hotspots
0.0% Coverage on New Code
0.0% Duplication on New Code
Quality Gate failed
Failed conditions
184 New Major Issues (required ≤ 0)
See analysis details on SonarQube Cloud
Catch issues before they fail your Quality Gate with our IDE extension
SonarQube for IDE