On Wed, Sep 27, 2023 at 01:25:35PM +0200, Victor Toso wrote: > Hi, long time no see! > > This patch series intent is to introduce a generator that produces a Go > module for Go applications to interact over QMP with QEMU. > > This idea was discussed before, as RFC: > (RFC v1) https://lists.gnu.org/archive/html/qemu-devel/2022-04/msg00226.html > (RFC v2) https://lists.gnu.org/archive/html/qemu-devel/2022-04/msg00226.html
Bad copy-paste, the correct one: https://lists.gnu.org/archive/html/qemu-devel/2022-06/msg03105.html > > The work got stuck due to changes needed around types that can take JSON > Null as value, but that's now fixed. > > I've pushed this series in my gitlab fork: > https://gitlab.com/victortoso/qemu/-/tree/qapi-golang-v1 > > I've also generated the qapi-go module over QEMU tags: v7.0.0, v7.1.0, > v7.2.6, v8.0.0 and v8.1.1, see the commits history here: > https://gitlab.com/victortoso/qapi-go/-/commits/qapi-golang-v1-by-tags > > I've also generated the qapi-go module over each commit of this series, > see the commits history here (using previous refered qapi-golang-v1) > https://gitlab.com/victortoso/qapi-go/-/commits/qapi-golang-v1-by-patch > > > * Why this? > > My main goal is to allow Go applications that interact with QEMU to have > a native way of doing so. > > Ideally, we can merge a new QAPI command, update qapi-go module to allow > Go applications to consume the new command in no time (e.g: if > development of said applications are using latest QEMU) > > > * Expectations > > From previous discussions, there are things that are still missing. One > simple example is Andrea's annotation suggestion to fix type names. My > proposal is to have a qapi-go module in a formal non-stable version till > some of those tasks get addressed or we declare it a non-problem. > > I've created a docs/devel/qapi-golang-code-gen.rst to add information > from the discussions we might have in this series. Suggestions always > welcome. > > P.S: Sorry about my broken python :) > > Cheers, > Victor > > Victor Toso (9): > qapi: golang: Generate qapi's enum types in Go > qapi: golang: Generate qapi's alternate types in Go > qapi: golang: Generate qapi's struct types in Go > qapi: golang: structs: Address 'null' members > qapi: golang: Generate qapi's union types in Go > qapi: golang: Generate qapi's event types in Go > qapi: golang: Generate qapi's command types in Go > qapi: golang: Add CommandResult type to Go > docs: add notes on Golang code generator > > docs/devel/qapi-golang-code-gen.rst | 341 +++++++++ > scripts/qapi/golang.py | 1047 +++++++++++++++++++++++++++ > scripts/qapi/main.py | 2 + > 3 files changed, 1390 insertions(+) > create mode 100644 docs/devel/qapi-golang-code-gen.rst > create mode 100644 scripts/qapi/golang.py > > -- > 2.41.0 > >
signature.asc
Description: PGP signature