stateright / stateright

A model checker for implementing distributed systems.

Home Page:https://docs.rs/stateright

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Go code implementation of stateright project

niuzhi opened this issue · comments

Hello author, I am very interested in the stateright project, especially its model checker, and I have also tried it. I personally think that Rust is easier to use than TLA+ in terms of writing specifications. However, most of our project teams are familiar with Go and Java code, so we would like to try to use the Go language to implement the stateright project to facilitate its promotion and use. Could you please provide the structure flow chart of the Stateright project, or other information related to Stateright, so as to facilitate our development. If you are interested, we especially welcome you to join to develop the go version of stateright to make it more valuable. thank you!

Hi @niuzhi. Thank you for sharing your interest and for this suggestion!

To maximize performance, one option would be to have a Go wrapper library that supports Go callbacks to satisfy traits like Model and/or Actor. I'm not sure about the work involved for that though. Would you be interested in prototyping something?

Alternatively there could be some kind of IPC to enable Stateright to interface with other processes without a wrapper (at the cost of serialization and deserialization). I've been hesitate to pursue that as I'm not sure how it will impact performance, and I imagine it will make iterating on the library features a bit slower due to the added "surface area" of code. That said, I do imagine there being some opportunities for IPC in the future as the library matures.