[Development] QtCS 2018 - Serialisation session notes
Link: https://wiki.qt.io/QtCS2018_Serialisation === Binary JSON === * Was created for qtjsondb * fast reading * mmap()able * Deprecate soon (Qt 5.12?) ** Remove from QJsonDocument in Qt 6 ** Provide compat API to read *** BSJON → JSON → parse again === QJsonDocument === * Limited to 128 MB of RAM footprint (due to Binary JSON) * Needs to be fixed before Qt 6 * Can use the same backend as QCborValue * Complaint: updating in-place is not easy ** If you update an entry in a node, you have to update the chain leading to it ** QCborValue has the same problem, as it was designed to have the same API QJsonValue foo = ...; foo["s"] = "value"; // does not compile foo.toObject()["s"] = "value"; // updates the temporary! // must write instead: QJsonObject fooObject = foo.toObject(); fooObject["s"] = "value"; setFoo(fooObject); === Common DOM API? === * Should we have a common API for manipulating trees of JSON-like values? * QCborValue is a superset of QJsonValue ** But it would be confusing to users to use CBOR classes to manipulate JSON ** Generic name? * What other uses would this API have? ** Replace QJSValue (QtQml)? ** Replace QVariantMap? ** Entry point for a Protobuf API? * How to make sure people can't insert combinations not allowed in the output? ** For example, associative containers using integers as keys in JSON ** Do they do that? Maybe they won't write such code *** They know what their content is used for ** We could use templates, specialising for CBOR, JSON, etc. ** We could have a wrapper class that has inlines and provides only the possible combinations * QCborValue integrated last Friday into QtCore 5.12 ** Need to know in the next few weeks if we keep it for 5.12 ** Can yank it out and move to a new module for Tech Preview === Serialising Qt state === * Needed by Qt Remote Objects * Slightly different from CBOR and JSON purposes ** Not about a standardised representation of a data model ** More about transmitting state from two independent processes of the same application * Currently using QDataStream ** Has a lot of problems, can't really detect errors and not extensible enough * Need more exploration, no conclusion === Protobuf === * Need volunteers to write a Proof of Concept ** plugin to protoc? -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel Open Source Technology Center ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] QtCS 2018 - Serialisation session notes
On Mon, 11 Jun 2018 at 13:17, Thiago Macieira wrote: > Link: https://wiki.qt.io/QtCS2018_Serialisation > > === Protobuf === > > * Need volunteers to write a Proof of Concept > ** plugin to protoc? > > About protobuf support in Qt, I have an old WIP change at https://codereview.qt-project.org/#/c/205316/ . But not sure whether it can help here or not. Best Regards, Liang ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] QtCS 2018 - Serialisation session notes
On Monday, 11 June 2018 13:23:21 CEST Liang Qi wrote: > On Mon, 11 Jun 2018 at 13:17, Thiago Macieira > > wrote: > > Link: https://wiki.qt.io/QtCS2018_Serialisation > > > > === Protobuf === > > > > * Need volunteers to write a Proof of Concept > > ** plugin to protoc? > > > > About protobuf support in Qt, I have an old WIP change at > > https://codereview.qt-project.org/#/c/205316/ . But not sure whether it can > help here or not. The point is that I want a proof of concept of what can be done. There can be two objectives: 1) protobuf is an implementation detail We use it to transport Qt state, but it's not exposed in the API 2) protobuf is an objective Communication with another endpoint (non-Qt) that uses the same Protobuf IDL Either might be an interesting addition to Qt. I'd like to see an exploration of the possibilities and what limitations would turn up. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel Open Source Technology Center ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] QtCS 2018 - Serialisation session notes
On Mon, Jun 11, 2018 at 01:39:07PM +0200, Thiago Macieira wrote: > On Monday, 11 June 2018 13:23:21 CEST Liang Qi wrote: > > On Mon, 11 Jun 2018 at 13:17, Thiago Macieira > > > > wrote: > > > Link: https://wiki.qt.io/QtCS2018_Serialisation > > > > > > === Protobuf === > > > > > > * Need volunteers to write a Proof of Concept > > > ** plugin to protoc? > > > > > > About protobuf support in Qt, I have an old WIP change at > > > > https://codereview.qt-project.org/#/c/205316/ . But not sure whether it can > > help here or not. > > The point is that I want a proof of concept of what can be done. > > There can be two objectives: > > 1) protobuf is an implementation detail > We use it to transport Qt state, but it's not exposed in the API > > 2) protobuf is an objective > Communication with another endpoint (non-Qt) that uses the same Protobuf IDL > > Either might be an interesting addition to Qt. I'd like to see an exploration > of the possibilities and what limitations would turn up. Would it also make sense to explore msgpack? https://msgpack.org/ I haven't attended to QtCS so please disregard if this does not make sense. > > -- > Thiago Macieira - thiago.macieira (AT) intel.com > Software Architect - Intel Open Source Technology Center > > > > ___ > Development mailing list > Development@qt-project.org > http://lists.qt-project.org/mailman/listinfo/development -- Rafael Roquetto | rafael.roque...@kdab.com | Software Engineer Klarälvdalens Datakonsult AB, a KDAB Group company Tel. Sweden (HQ) +46-563-540090, USA +1-866-777-KDAB(5322) KDAB - The Qt, C++ and OpenGL Experts smime.p7s Description: S/MIME cryptographic signature ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] QtCS 2018 - Serialisation session notes
On Monday, 11 June 2018 22:50:09 CEST Rafael Roquetto wrote: > Would it also make sense to explore msgpack? https://msgpack.org/ No. Msgpack is the older version of CBOR, which we already have. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel Open Source Technology Center ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] QtCS 2018 - Serialisation session notes
On Tuesday 12 June 2018 00:41:38 Thiago Macieira wrote: > On Monday, 11 June 2018 22:50:09 CEST Rafael Roquetto wrote: > > Would it also make sense to explore msgpack? https://msgpack.org/ > > No. Msgpack is the older version of CBOR, which we already have. CBOR is IMHO better than Message Pack, but I don't see it as "the older version of CBOR". Rather, a different community (which in my experience has a larger adoption rate because it came first). I don't think we need support for it on Qt, but people who need to interoperate with it, will need one of the existing libraries. -- Viking Software, Qt and C++ developers for hire http://www.vikingsoftware.com ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] QtCS 2018 - Serialisation session notes
Hi, > > === Protobuf === > > * Need volunteers to write a Proof of Concept > ** plugin to protoc? IMHO flatbuffers (https://google.github.io/flatbuffers/) has quite a few advantages over protocol buffers (one that I really like is that the only dependency your app has is a single .h file, which makes it very portable). Here https://github.com/bog-dan-ro/flatbuffers I have an old fork that adds Qt support to flatbuffers. The only disadvantage that I found is that the maintainer was a little bit difficult to work with :). Cheers, BogDan. ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development