<feed xmlns='http://www.w3.org/2005/Atom'>
<title>qt/qtdeclarative.git/src/qml/common/qv4compileddata.cpp, branch dev</title>
<subtitle>Qt Declarative (Quick 2)
</subtitle>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/'/>
<entry>
<title>QtQml: Handle invalid application timestamp in QML cache verification</title>
<updated>2026-01-13T09:42:27+00:00</updated>
<author>
<name>Zhang Hongyuan</name>
<email>zhanghongyuan@uniontech.com</email>
</author>
<published>2025-12-26T05:17:27+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=fa37d5a29a65a8e974866761b946859609dee8f4'/>
<id>fa37d5a29a65a8e974866761b946859609dee8f4</id>
<content type='text'>
When QML source files are loaded from the resource system, we fall back to
the application executable's last modified timestamp for cache validation.
If this timestamp is invalid, we now properly report an error instead of
proceeding with invalid data.

Change-Id: I5516af312aca69c7875b2cdc43258cc1be862974
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When QML source files are loaded from the resource system, we fall back to
the application executable's last modified timestamp for cache validation.
If this timestamp is invalid, we now properly report an error instead of
proceeding with invalid data.

Change-Id: I5516af312aca69c7875b2cdc43258cc1be862974
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>QV4: Mark CompilationUnit::saveToDisk const</title>
<updated>2025-12-12T12:55:11+00:00</updated>
<author>
<name>Olivier De Cannière</name>
<email>olivier.decanniere@qt.io</email>
</author>
<published>2025-12-09T13:38:48+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=1ee91dc6047896ff83d4a621c132d37111e5b0ab'/>
<id>1ee91dc6047896ff83d4a621c132d37111e5b0ab</id>
<content type='text'>
Change-Id: I6141df5776471aea755d0b57b2015571b250088a
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: I6141df5776471aea755d0b57b2015571b250088a
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>CRA review: mark qml/common subfolder</title>
<updated>2025-11-10T13:17:24+00:00</updated>
<author>
<name>Fabian Kosmale</name>
<email>fabian.kosmale@qt.io</email>
</author>
<published>2025-11-10T10:38:29+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=fbcc2a2e20db188588e329cb69fa69ed931ba79a'/>
<id>fbcc2a2e20db188588e329cb69fa69ed931ba79a</id>
<content type='text'>
Give most things default significance, except for qjsnumbercoercion.cpp
which only contains documentation and qv4compileddata.cpp which gets
flagged as critical for being a data-parser. That's somewhat debatable,
given that we also excepect qmlc files to be as trustworthy as qml
files, but while that is not explicitly stated anywhere we might want to
err on the side of caution.

Pick-to: 6.10 6.8
Task-number: QTBUG-136194
QUIP: 23
Change-Id: I2987cea2453dcc3b828dc4ecf0ad22fdfd0d1000
Reviewed-by: Olivier De Cannière &lt;olivier.decanniere@qt.io&gt;
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Give most things default significance, except for qjsnumbercoercion.cpp
which only contains documentation and qv4compileddata.cpp which gets
flagged as critical for being a data-parser. That's somewhat debatable,
given that we also excepect qmlc files to be as trustworthy as qml
files, but while that is not explicitly stated anywhere we might want to
err on the side of caution.

Pick-to: 6.10 6.8
Task-number: QTBUG-136194
QUIP: 23
Change-Id: I2987cea2453dcc3b828dc4ecf0ad22fdfd0d1000
Reviewed-by: Olivier De Cannière &lt;olivier.decanniere@qt.io&gt;
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Be explicit about type-conversion for QString::args()</title>
<updated>2025-10-08T14:00:36+00:00</updated>
<author>
<name>Edward Welbourne</name>
<email>edward.welbourne@qt.io</email>
</author>
<published>2025-10-06T15:48:43+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=53566b589768102a33d1ccf074af1b13f7bea4b7'/>
<id>53566b589768102a33d1ccf074af1b13f7bea4b7</id>
<content type='text'>
Passing a quint32_le depended on a type conversion that might not be
obvious to the reader. That's going to stop working when
QString::arg() gets finnickier about which overloads get coerced to
integral types, to avoid problems with types that convert fo
floating-point but aren't recognised by the compiler *as*
floating-point, so were otherwise being cast via integral types and
losing precision.

Pick-to: 6.10
Task-number: QTBUG-138471
Change-Id: I9b4df08159502c9109fa8489b2290e213bcff2b8
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Passing a quint32_le depended on a type conversion that might not be
obvious to the reader. That's going to stop working when
QString::arg() gets finnickier about which overloads get coerced to
integral types, to avoid problems with types that convert fo
floating-point but aren't recognised by the compiler *as*
floating-point, so were otherwise being cast via integral types and
losing precision.

Pick-to: 6.10
Task-number: QTBUG-138471
Change-Id: I9b4df08159502c9109fa8489b2290e213bcff2b8
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>QtQml: Only hold CU in ResolvedTypeReference where needed</title>
<updated>2025-06-07T18:34:23+00:00</updated>
<author>
<name>Ulf Hermann</name>
<email>ulf.hermann@qt.io</email>
</author>
<published>2025-05-05T11:51:40+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=ded9bcb3f70a37d5f4c3539a3c859e6418cf6646'/>
<id>ded9bcb3f70a37d5f4c3539a3c859e6418cf6646</id>
<content type='text'>
The only place that actually needs the compilation unit is the object
creator. The object creator will only touch type references we need to
create objects from. For everything else, the property cache and the
QQmlType are good enough.

Therefore, always store property cache and QQmlType in a uniform way. In
turn drop the CU where we can.

Task-number: QTBUG-135286
Change-Id: I1dfac132a1580679b165c2f891a8d9439fa14d1e
Reviewed-by: Sami Shalayel &lt;sami.shalayel@qt.io&gt;
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The only place that actually needs the compilation unit is the object
creator. The object creator will only touch type references we need to
create objects from. For everything else, the property cache and the
QQmlType are good enough.

Therefore, always store property cache and QQmlType in a uniform way. In
turn drop the CU where we can.

Task-number: QTBUG-135286
Change-Id: I1dfac132a1580679b165c2f891a8d9439fa14d1e
Reviewed-by: Sami Shalayel &lt;sami.shalayel@qt.io&gt;
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>QtQml: Remove object/binding/parser status counts from CUs</title>
<updated>2025-05-20T15:04:51+00:00</updated>
<author>
<name>Ulf Hermann</name>
<email>ulf.hermann@qt.io</email>
</author>
<published>2025-05-05T09:59:18+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=c2e53598aab6a8a7c3ac8d046e1513a4192c84f5'/>
<id>c2e53598aab6a8a7c3ac8d046e1513a4192c84f5</id>
<content type='text'>
Calculating those is a rather complex affair, and unlikely to pay off.

Previously they were used to pre-allocate space in the object creator.
We use standard containers with standard allocation strategies
everywhere else. If this turns out to be an actual problem, we could
record the actual numbers when we create a component and record those in
the ExecutableCompilationUnit for next time.

Task-number: QTBUG-135286
Change-Id: Ia44bbc9c49cbfb638f5d4bbbb345c48124e4fb09
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Calculating those is a rather complex affair, and unlikely to pay off.

Previously they were used to pre-allocate space in the object creator.
We use standard containers with standard allocation strategies
everywhere else. If this turns out to be an actual problem, we could
record the actual numbers when we create a component and record those in
the ExecutableCompilationUnit for next time.

Task-number: QTBUG-135286
Change-Id: Ia44bbc9c49cbfb638f5d4bbbb345c48124e4fb09
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "QtQml: Remove dependency hashing"</title>
<updated>2025-05-15T21:34:19+00:00</updated>
<author>
<name>Ulf Hermann</name>
<email>ulf.hermann@qt.io</email>
</author>
<published>2025-05-14T14:15:09+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=b9a085b26f753d4f1317bb4caa16329ff6646f3b'/>
<id>b9a085b26f753d4f1317bb4caa16329ff6646f3b</id>
<content type='text'>
This reverts commit 18c421fe6159dc921643c72ae335cf189eb1cc3a.

Removing the dependency hashing is not safe because there are various
other bits covered by it, not only the alias target IDs.

Task-number: QTBUG-136806
Change-Id: I4a8a57d810203a47945ce67916ee5b54ee7a603d
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 18c421fe6159dc921643c72ae335cf189eb1cc3a.

Removing the dependency hashing is not safe because there are various
other bits covered by it, not only the alias target IDs.

Task-number: QTBUG-136806
Change-Id: I4a8a57d810203a47945ce67916ee5b54ee7a603d
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>QtQml: Remove dependency hashing</title>
<updated>2025-05-13T16:07:10+00:00</updated>
<author>
<name>Ulf Hermann</name>
<email>ulf.hermann@qt.io</email>
</author>
<published>2025-04-17T12:12:04+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=18c421fe6159dc921643c72ae335cf189eb1cc3a'/>
<id>18c421fe6159dc921643c72ae335cf189eb1cc3a</id>
<content type='text'>
Since we don't store any property indices in the compilation units
anymore, we don't need to hash the dependencies anymore.

Task-number: QTBUG-135286
Change-Id: I2ea05c920475749f2a2d6cf309d0956a74d6c688
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since we don't store any property indices in the compilation units
anymore, we don't need to hash the dependencies anymore.

Task-number: QTBUG-135286
Change-Id: I2ea05c920475749f2a2d6cf309d0956a74d6c688
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>QtQml: Drop checks for compile hash and Qt version from the CUs</title>
<updated>2025-03-18T09:53:07+00:00</updated>
<author>
<name>Ulf Hermann</name>
<email>ulf.hermann@qt.io</email>
</author>
<published>2025-03-10T07:34:45+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=390c78b394b30d1abdc6268b21dd2a583472bd60'/>
<id>390c78b394b30d1abdc6268b21dd2a583472bd60</id>
<content type='text'>
The data structure version is supposed to encode any incompatible
changes to our compilation unit format. Checking the compile hash and Qt
version in addition is redundant and excessively restrictive.

[ChangeLog][QtQml] You can now use QML code compiled with Qt Quick
Compiler across Qt versions as long as the compilation unit format
hasn't changed between those versions. You cannot rely on the
compilation unit format to stay unchanged under any specific
circumstances. However, we won't change it unnecessarily.

Change-Id: I8c407b505ac7fa952f53fa25bb6d4e7caf0fba0c
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The data structure version is supposed to encode any incompatible
changes to our compilation unit format. Checking the compile hash and Qt
version in addition is redundant and excessively restrictive.

[ChangeLog][QtQml] You can now use QML code compiled with Qt Quick
Compiler across Qt versions as long as the compilation unit format
hasn't changed between those versions. You cannot rely on the
compilation unit format to stay unchanged under any specific
circumstances. However, we won't change it unnecessarily.

Change-Id: I8c407b505ac7fa952f53fa25bb6d4e7caf0fba0c
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>QtQml: Always load from existing compilation units first</title>
<updated>2025-03-06T08:57:25+00:00</updated>
<author>
<name>Ulf Hermann</name>
<email>ulf.hermann@qt.io</email>
</author>
<published>2025-03-03T18:12:01+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=6468df7657f6af4de8727363c7f7d97b680b1867'/>
<id>6468df7657f6af4de8727363c7f7d97b680b1867</id>
<content type='text'>
If a compilation unit for the given URL already exists in the type
registry, we can safely use it since anything in the type registry is
shareable. An exception to this are requests with explicit inline source
code. Those cannot be cached at all.

Conversely, if we were to re-compile, that's not only wasteful but we
may end up with diverging type hierarchies and mismatched types.

Revert commit d0e16e3f614d73f6694863d2cfb1fbd661c34e3f since it has
become counter-productive now. We really want to have exactly one base
compilation unit for each type, and that should be universally
accessible. When d0e16e3f614d73f6694863d2cfb1fbd661c34e3f was written we
had separate base CUs for each engine, and we didn't want those to
accidentally find each other.

Realize that composite types have to be indexed by url(), not
finalUrl(), since url() includes any file selectors while finalUrl()
does not.

Fixes: QTBUG-134398
Pick-to: 6.9.0 6.9 6.8 6.8.3
Change-Id: I130cdc27ebd8a2814e194478a27eef5bb7f79eb7
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If a compilation unit for the given URL already exists in the type
registry, we can safely use it since anything in the type registry is
shareable. An exception to this are requests with explicit inline source
code. Those cannot be cached at all.

Conversely, if we were to re-compile, that's not only wasteful but we
may end up with diverging type hierarchies and mismatched types.

Revert commit d0e16e3f614d73f6694863d2cfb1fbd661c34e3f since it has
become counter-productive now. We really want to have exactly one base
compilation unit for each type, and that should be universally
accessible. When d0e16e3f614d73f6694863d2cfb1fbd661c34e3f was written we
had separate base CUs for each engine, and we didn't want those to
accidentally find each other.

Realize that composite types have to be indexed by url(), not
finalUrl(), since url() includes any file selectors while finalUrl()
does not.

Fixes: QTBUG-134398
Pick-to: 6.9.0 6.9 6.8 6.8.3
Change-Id: I130cdc27ebd8a2814e194478a27eef5bb7f79eb7
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
</pre>
</div>
</content>
</entry>
</feed>
