⚠ This page is served via a proxy. Original site: https://github.com
This service does not collect credentials or authentication data.
Skip to content

Conversation

@wadoon
Copy link
Member

@wadoon wadoon commented Oct 17, 2023

A remote KeY api as promised in KeY++

Design Descisions

  • We use handles to refer to large entities like, KeYEnvironment, Proof, or Node.
    These handles are called *Id and are aligned hierarchical:

    EnvironemntId < ProofId < NodeId 
    

    If you have a NodeId, you can get a ProofId by calling nodeId.proofId().

  • We do not use expose any key.core classes. For example, Key's Examples are converted into ExampleDesc for the serialization. Every information holding class ends with Desc.

  • Given complex arguments (especially optional/nullable parameters) are packed into a class which ends with Params.

TODO

  • Implement a client in non-java, non-jvm (Python)

@wadoon wadoon self-assigned this Oct 17, 2023
@wadoon wadoon marked this pull request as draft October 17, 2023 14:22
@wadoon wadoon added this to the v2.14.0 milestone Oct 24, 2023
@wadoon wadoon requested a review from Drodt October 30, 2023 18:45
@KeYProject KeYProject deleted a comment from github-actions bot Oct 30, 2023
Copy link
Member

@Drodt Drodt left a 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?

@wadoon
Copy link
Member Author

wadoon commented Nov 2, 2023

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.

@wadoon wadoon force-pushed the weigl/jsonrpc branch 2 times, most recently from 6887838 to ae5f215 Compare November 19, 2023 22:33
@wadoon wadoon modified the milestones: v2.14.0, v2.16.0 Dec 29, 2023
@Drodt Drodt added the HacKeYthon Candidate Issue for HacKeYthon '25 label Jan 26, 2024
@wadoon wadoon removed the HacKeYthon Candidate Issue for HacKeYthon '25 label Apr 23, 2024
@wadoon wadoon modified the milestones: v2.16.0, v2.13.0 Feb 15, 2025
@wadoon
Copy link
Member Author

wadoon commented May 10, 2025

KaKeY: Make this state fit for merging.

@KeYProject KeYProject deleted a comment from sonarqubecloud bot May 10, 2025
@wadoon
Copy link
Member Author

wadoon commented Aug 29, 2025

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 NotationInfo and PosTableLayouter required.

@wadoon wadoon mentioned this pull request Oct 4, 2025
5 tasks
@wadoon wadoon modified the milestones: v2.14.0, v2.13.0 Nov 21, 2025
@Drodt Drodt modified the milestones: v2.13.0, v3.0.0 Jan 7, 2026
@KeYProject KeYProject deleted a comment from sonarqubecloud bot Feb 1, 2026
@KeYProject KeYProject deleted a comment from sonarqubecloud bot Feb 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants