-
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. |
8e62a0f to
d2dcd70
Compare
6887838 to
ae5f215
Compare
* main: Update nightlydeploy.yml added missing dependency Bump the gradle-deps group across 1 directory with 2 updates Enable SMT focus goals (unsat cores) for CVC5 fixed parameters such that CVC4 does not crash
|
KaKeY: Make this state fit for merging. |
# Conflicts: # key.core/src/test/java/de/uka/ilkd/key/proof/io/TestZipProofSaving.java
* main: (29 commits) disable relative path on Windows test Remove unnecessary (and harmful) license plugin Bump the gradle-deps group with 8 updates fix TestProofScriptCommand.java fix errors from automerge Spotless Single files instead of one large files fixing URIs for the execution engine use YAML for test fixture instead of ScriptLineParser Update pmd Update javacc gradle plugin to fix implicit dependency on commons-io to fix security problem Update checkstyle version to update implicit dependency 'guava' to fix security problem remove antlr3 added note for adding new Gradle modules to the test matrix remove key.symbolic_execution from test rag Test if matrix over modules are a good thing fixes of UI color colors for dark mode, small fixes color settings supports now light and dark colors fix background update sequent view ...
|
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 |
* main: (40 commits) :key.ui:run w/ -ea Improve error message in headless mode Bump actions/upload-artifact in the github-actions-deps group Bump the gradle-deps group with 9 updates Fix build.gradle in key.ui for merging service files correctly (since September they require ...INCLUDe to be set) Add all PO loaders to services of symex extension Fix NPE in dependency contract feature (caused by pulled out expression) Bump the gradle-deps group with 8 updates Bump gradle/actions from 4 to 5 in the github-actions-deps group Introduction of picocli for command line parsing enabling multi-threading in TGMain restoring the KeY book example Testgen runs for BinarySearch Renovation of the TestCase generation fixes #3660 spotlessing Adding comment to clarify an if-condition adding a test case for datatypes with nonrecursive constructors. fixed test cases in RunAllFunProofs repaired test case ...
* main: Bump the gradle-deps group across 1 directory with 6 updates Fix deadlock when showing JML warnings dialog Bump actions/checkout from 5 to 6 in the github-actions-deps group try to fix the changelog generation Set version to 2.13.0-dev
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