-
Notifications
You must be signed in to change notification settings - Fork 41
Create a JSON-RPC for KeY #3303
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
base: main
Are you sure you want to change the base?
Conversation
Drodt
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like the approach. It seems like a good setup.
For what languages do you want to write a client? What's on your TODO list?
...test/java/de/uka/ilkd/key/symbolic_execution/testcase/AbstractSymbolicExecutionTestCase.java
Outdated
Show resolved
Hide resolved
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. |
6887838 to
ae5f215
Compare
|
KaKeY: Make this state fit for merging. |
|
Discussed on Aug,29th. Branch won't get better. Waiting for "Softwareprojekt" at TUD in WS25/26 to push forward to substitute web ui. Generalization of |
77fcce9 to
d94ff14
Compare
- TreeNodeDesc - Some stabilization of features # Conflicts: # keyext.api/src/main/java/org/keyproject/key/api/StartServer.java
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:If 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