<div dir="ltr"><div>Ugh, apparently I answered to Lars directly instead of the whole ML >_< See below</div><div><br></div>I do not see how this addresses the issue. You are pushing the decision to use the compile switch or not on the same userbase who couldn't be bothered to port away from qlist in the first place.<div>You are essenitally asking: "Are you sure you aren't using qlist in specific ways?"</div><div>And the likely answer in the end will be "Eh, oooops ... hehehe"</div><div><br></div><div>People will use the "faster" non compatible compilation switch and *will* break their code. It won't be Qt's fault but it *will* be perceived as such.</div><br><div class="gmail_quote"><br class="gmail-Apple-interchange-newline"></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, May 22, 2019 at 4:50 PM Lars Knoll <<a href="mailto:lars.knoll@qt.io">lars.knoll@qt.io</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Let’s conclude the topic of QList. I do see the concern about silent source breakages. Here’s what we’ll (I’ll) do then for Qt 6:<br>
<br>
1. Rename QList to QArrayList and make QList an alias to QArrayList<br>
2. Move QStringList and QByteArrayList over to inherit from QVector (that should be source compatible)<br>
3. Rename QStringList to QStringVector (keep QStringList as a compatibility name), same for QBAList<br>
4. Use QVector to implement QList<Foo>, if sizeof(Foo) <= sizeof(quint64) and Foo is movable. I’m intentionally not using sizeof(void *) here, as types with sizes between 4 and 8 bytes would not have stable references in cross platform code, so I do not believe lots of code would assume that (or it would have broken on 64 bit).<br>
5. Add a compile time switch that allows mapping QList completely to QVector or to a compatibility mode where QLists of large/non movable types are mapped to QArrayList<br>
6. For now we don’t yet want to explicitly change all our API that uses QList to use QVector (as that would make merging from dev a pain, let’s do that later this year). But to test that everything we have works with QVector, we’ll set the compile switch to default to mapping to QVector.<br>
7. Make the implementation of QArrayList fully inline and deprecate the class.<br>
<br>
Let me know if there are any major concerns with this plan. It should give us a good compromise, where we can move all of Qt over to QVector and test things early, as well as providing a compatibility mode for our users (slower but won’t silently break).<br>
<br>
Cheers,<br>
Lars<br>
<br>
> On 21 May 2019, at 10:38, Giuseppe D'Angelo via Development <<a href="mailto:development@qt-project.org" target="_blank">development@qt-project.org</a>> wrote:<br>
> <br>
> Il 21/05/19 10:30, Konstantin Shegunov ha scritto:<br>
>> That's a hard one. Especially since very few could keep in their brain a list of the sizes of each and every one class from Qt. It also differs depending on architecture.<br>
> <br>
> I know. That's my point: we can't just break this level of source compatibility.<br>
> <br>
> Thanks,<br>
> <br>
> -- <br>
> Giuseppe D'Angelo | <a href="mailto:giuseppe.dangelo@kdab.com" target="_blank">giuseppe.dangelo@kdab.com</a> | Senior Software Engineer<br>
> KDAB (France) S.A.S., a KDAB Group company<br>
> Tel. France +33 (0)4 90 84 08 53, <a href="http://www.kdab.com" rel="noreferrer" target="_blank">http://www.kdab.com</a><br>
> KDAB - The Qt, C++ and OpenGL Experts<br>
> <br>
> _______________________________________________<br>
> Development mailing list<br>
> <a href="mailto:Development@qt-project.org" target="_blank">Development@qt-project.org</a><br>
> <a href="https://lists.qt-project.org/listinfo/development" rel="noreferrer" target="_blank">https://lists.qt-project.org/listinfo/development</a><br>
<br>
_______________________________________________<br>
Development mailing list<br>
<a href="mailto:Development@qt-project.org" target="_blank">Development@qt-project.org</a><br>
<a href="https://lists.qt-project.org/listinfo/development" rel="noreferrer" target="_blank">https://lists.qt-project.org/listinfo/development</a><br>
</blockquote></div>