summaryrefslogtreecommitdiffstats
path: root/dist/changes-5.12.4
blob: e415addc1c335cb40dd44fc72316e1f23ea30451 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Qt 5.12.4 is a bug-fix release. It maintains both forward and backward
compatibility (source and binary) with Qt 5.12.0 through 5.12.3 under most
conditions.  There may be exceptions if you are using Qt Remote Objects
between proesses or devices running different versions Qt.  The different
versions of Qt must be running compatible versions of QtRO's protocol.

Changes to the Qt Remote Objects protocol are documented online:

https://doc.qt.io/qt-5/qtremoteobjects-compatibility.html

The QtRO protocol has been updated in Qt 5.12.4 and Qt 5.13.0 to 1.3.

Background:  Qt's QueuedConnections work by copying signal parameters so
the copy can be held and then later processed in another threads
eventloop, allowing the original data to be changed in the originating
thread.

Qt Remote Objects leverages this capability and sends that data from a
QObject in one process to a QObject in another.  There is a specific
protocol for this, as both sides need to interpret what is sent the
same way.  For example, there are Invoke and PropertyChanged packets
exchanged.  In addition to this, both sides need to know how to encode and
decode all types shared.  This type awareness is easy to ensure if the
repc compiler is used to generate the headers for all sides.

However, there are use cases where this isn't possible.  In these cases
QtRO will send the type (metaobject) information as well, allowing the
receiving side to generate the required type information at runtime for
certain types (PODs and enumerations).

There were issues found in this type serialization code that required a
change to the protocol.  There are a number of commits going into both
Qt 5.13.0 and Qt 5.12.4 with fixes.  This means that you will not be able
to use Qt Remote Objects on a device using Qt 5.12.3 or earlier and
communicate to another device using Qt 5.12.4/5.13.0.

For more details, refer to the online documentation included in this
distribution. The documentation is also available online:

https://doc.qt.io/qt-5/index.html

The Qt version 5.12 series is binary compatible with the 5.11.x series.
Applications compiled for 5.11 will continue to run with 5.12 as long as
the protocol change noted above is taken into account.

****************************************************************************
*                        Important Behavior Changes                        *
****************************************************************************

 - Qt Remote Objects uses an internal protocol to pass data between
   processes and/or devices. The same protocol version needs to be used on
   all sides. The version was bumped from 1.2 to 1.3 in this release,
   fixing potential crashes (see QTBUG-75017). If there is a mismatch, the
   connecting node will output a warning and the host node will not send
   any data.

Some of the changes listed in this file include issue tracking numbers
corresponding to tasks in the Qt Bug Tracker:

https://bugreports.qt.io/

The following fixes were part of the above protocol change and are in
5.12.4 and 5.13.0.

Each of these identifiers can be entered in the bug tracker to obtain more
information about a particular change.

 - QTBUG-75017: QtRO processes can crash if type registration is incorrect
 - QTBUG-75056: Correctly handle QVariant properties on the replica side
 - QTBUG-74084: QT remote objects false conversion warning in case of
   QVariant property