Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Has the minimum CPU requirement for Qt 6.10 Linux x86_64 binaries changed to x86-64-v2?
Qt 6.11 is out! See what's new in the release blog

Has the minimum CPU requirement for Qt 6.10 Linux x86_64 binaries changed to x86-64-v2?

Scheduled Pinned Locked Moved Unsolved General and Desktop
12 Posts 5 Posters 287 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Offline
    R Offline
    Rocus
    wrote last edited by
    #1

    Qt 6.10 and the loss of compatibility with older x86-64 CPUs

    I would like to raise a compatibility and documentation concern regarding the CPU requirements of the prebuilt Qt binaries.

    I recently encountered this when running a Python application using PySide6 on an older x86-64 system. The CPU supports SSE4.1, but not SSE4.2 or POPCNT.

    With PySide6 6.9.3 (Qt 6.9.3), the application runs normally. With PySide6 6.10.0 (Qt 6.10.0), importing QtCore immediately terminates with:

    Incompatible processor. This Qt build requires the following features:
        sse4.2 popcnt
    Aborted
    

    I compared the actual Qt libraries from the two PySide6 distributions. The Qt 6.9.3 libQt6Core.so.6 contains no POPCNT instructions, whereas the Qt 6.10.0 library contains actual POPCNT instructions.

    This therefore appears to be an intentional change in the CPU baseline of the Qt 6.10 binaries rather than an application or Python problem.

    I understand the motivation for this change. The Qt development discussion from 2022 proposed raising the default x86-64 target to x86-64-v2 in order to enable additional optimizations in QtCore and QtGui. x86-64-v2 includes SSE4.2 and POPCNT. This is a reasonable engineering decision if the performance benefits justify it.

    However, there is an important compatibility consequence.

    An application which updates from Qt 6.9 to Qt 6.10 can become completely unusable on an otherwise functional x86-64 system. This is particularly relevant for long-lived Linux installations and older computers, where x86-64 itself is still supported by the operating system.

    This is not merely a case of an optional optimization being unavailable. The application does not start at all.

    I have also encountered reports of the same problem in other Qt applications, including Linphone. This suggests that the impact is not limited to PySide6 applications.

    My main concern is therefore not that Qt has chosen to raise the CPU baseline. Rather, it is that this change does not appear to be clearly communicated in the supported-platform documentation.

    The Qt documentation continues to describe Linux x86-64 as a supported architecture, but does not prominently state that the prebuilt Qt binaries require an x86-64-v2-capable processor. For users maintaining older hardware, this distinction is significant.

    I would therefore suggest:

    1. Clearly documenting the minimum CPU instruction set required by the prebuilt Qt binaries for each Qt release.
    2. Clearly identifying the Qt release in which the x86-64 CPU baseline was raised.
    3. Considering whether an x86-64-v1 build could remain available for users who need compatibility with older processors.

    I am not arguing that Qt should never raise its CPU requirements. I am asking that the compatibility impact of such a change be made explicit, because otherwise users may reasonably interpret "x86_64" as meaning the traditional x86-64 baseline.

    For reference, the practical boundary I observed is:

    Qt 6.9.3   — works on an SSE4.1 / non-POPCNT CPU
    Qt 6.10.0  — requires SSE4.2 + POPCNT
    

    This makes the change particularly easy to reproduce and verify.

    JonBJ JKSHJ 2 Replies Last reply
    0
    • R Rocus

      Qt 6.10 and the loss of compatibility with older x86-64 CPUs

      I would like to raise a compatibility and documentation concern regarding the CPU requirements of the prebuilt Qt binaries.

      I recently encountered this when running a Python application using PySide6 on an older x86-64 system. The CPU supports SSE4.1, but not SSE4.2 or POPCNT.

      With PySide6 6.9.3 (Qt 6.9.3), the application runs normally. With PySide6 6.10.0 (Qt 6.10.0), importing QtCore immediately terminates with:

      Incompatible processor. This Qt build requires the following features:
          sse4.2 popcnt
      Aborted
      

      I compared the actual Qt libraries from the two PySide6 distributions. The Qt 6.9.3 libQt6Core.so.6 contains no POPCNT instructions, whereas the Qt 6.10.0 library contains actual POPCNT instructions.

      This therefore appears to be an intentional change in the CPU baseline of the Qt 6.10 binaries rather than an application or Python problem.

      I understand the motivation for this change. The Qt development discussion from 2022 proposed raising the default x86-64 target to x86-64-v2 in order to enable additional optimizations in QtCore and QtGui. x86-64-v2 includes SSE4.2 and POPCNT. This is a reasonable engineering decision if the performance benefits justify it.

      However, there is an important compatibility consequence.

      An application which updates from Qt 6.9 to Qt 6.10 can become completely unusable on an otherwise functional x86-64 system. This is particularly relevant for long-lived Linux installations and older computers, where x86-64 itself is still supported by the operating system.

      This is not merely a case of an optional optimization being unavailable. The application does not start at all.

      I have also encountered reports of the same problem in other Qt applications, including Linphone. This suggests that the impact is not limited to PySide6 applications.

      My main concern is therefore not that Qt has chosen to raise the CPU baseline. Rather, it is that this change does not appear to be clearly communicated in the supported-platform documentation.

      The Qt documentation continues to describe Linux x86-64 as a supported architecture, but does not prominently state that the prebuilt Qt binaries require an x86-64-v2-capable processor. For users maintaining older hardware, this distinction is significant.

      I would therefore suggest:

      1. Clearly documenting the minimum CPU instruction set required by the prebuilt Qt binaries for each Qt release.
      2. Clearly identifying the Qt release in which the x86-64 CPU baseline was raised.
      3. Considering whether an x86-64-v1 build could remain available for users who need compatibility with older processors.

      I am not arguing that Qt should never raise its CPU requirements. I am asking that the compatibility impact of such a change be made explicit, because otherwise users may reasonably interpret "x86_64" as meaning the traditional x86-64 baseline.

      For reference, the practical boundary I observed is:

      Qt 6.9.3   — works on an SSE4.1 / non-POPCNT CPU
      Qt 6.10.0  — requires SSE4.2 + POPCNT
      

      This makes the change particularly easy to reproduce and verify.

      JonBJ Offline
      JonBJ Offline
      JonB
      wrote last edited by JonB
      #2

      @Rocus
      Hi and welcome. This information may be useful here, but be aware we are just a forum of users. Nobody here will act on your suggestions. You may want to address it to The Qt Company who write and generate the code.

      1 Reply Last reply
      0
      • R Offline
        R Offline
        Rocus
        wrote last edited by
        #3

        Do you have a link for that?

        JonBJ 1 Reply Last reply
        0
        • Christian EhrlicherC Offline
          Christian EhrlicherC Offline
          Christian Ehrlicher
          Lifetime Qt Champion
          wrote last edited by
          #4

          From where did you install PyQt and the corresponding Qt libraries?

          Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
          Visit the Qt Academy at https://academy.qt.io/catalog

          R 1 Reply Last reply
          0
          • R Rocus

            Do you have a link for that?

            JonBJ Offline
            JonBJ Offline
            JonB
            wrote last edited by
            #5

            @Rocus
            It's https://qt-project.atlassian.net/jira/projects nowadays. That is for bugs etc. I don't know whether your suggestions belong there. They may be more appropriate in https://lists.qt-project.org/listinfo/development.

            For your current issue please answer @Christian-Ehrlicher above, he may be able to help.

            @Christian-Ehrlicher said in Has the minimum CPU requirement for Qt 6.10 Linux x86_64 binaries changed to x86-64-v2?:

            From where did you install PyQt and the corresponding Qt libraries?

            To avoid confusion, I think he meant PySide rather than PyQt.

            1 Reply Last reply
            0
            • Christian EhrlicherC Christian Ehrlicher

              From where did you install PyQt and the corresponding Qt libraries?

              R Offline
              R Offline
              Rocus
              wrote last edited by
              #6

              @Christian-Ehrlicher

              I tried to install a program Streamtuner-ng (can be found on github.com/IronWolve). I installed it according his instructions and requirements. It crashed on an illegal instruction. This program is written in python and uses PySide6. He required that PYSide6>=6.6. It installed 6.11 (I think) and apparently also installed qt libraries in a venv. In the end the program worked with PySide 6.9.3 (and thus Qt 6.9.3). Debian 13 uses apparently Qt 6.8.2.

              This all worries me because a next version of Debian (or an update) may not work at all on my old PC's. I completely accept that certain things go slow or do not run well on my PC's but I would like to be able to run a normal OS (like Debian).

              1 Reply Last reply
              0
              • A Offline
                A Offline
                Allan Jensen
                wrote last edited by
                #7

                If you mean in the Redhat binaries. RedHat removed support for x86_64v1, and has even deprecated x86_64v2, and will from RHEL10 only support x86_64v3. Qt merely detects the minimum requirements set when it was compiled and checks them at runtime instead of risking a later crash.

                1 Reply Last reply
                0
                • A Offline
                  A Offline
                  Allan Jensen
                  wrote last edited by
                  #8

                  But Debian should still work with v1, they have not raised the minimum like RedHat did.

                  1 Reply Last reply
                  0
                  • R Rocus

                    Qt 6.10 and the loss of compatibility with older x86-64 CPUs

                    I would like to raise a compatibility and documentation concern regarding the CPU requirements of the prebuilt Qt binaries.

                    I recently encountered this when running a Python application using PySide6 on an older x86-64 system. The CPU supports SSE4.1, but not SSE4.2 or POPCNT.

                    With PySide6 6.9.3 (Qt 6.9.3), the application runs normally. With PySide6 6.10.0 (Qt 6.10.0), importing QtCore immediately terminates with:

                    Incompatible processor. This Qt build requires the following features:
                        sse4.2 popcnt
                    Aborted
                    

                    I compared the actual Qt libraries from the two PySide6 distributions. The Qt 6.9.3 libQt6Core.so.6 contains no POPCNT instructions, whereas the Qt 6.10.0 library contains actual POPCNT instructions.

                    This therefore appears to be an intentional change in the CPU baseline of the Qt 6.10 binaries rather than an application or Python problem.

                    I understand the motivation for this change. The Qt development discussion from 2022 proposed raising the default x86-64 target to x86-64-v2 in order to enable additional optimizations in QtCore and QtGui. x86-64-v2 includes SSE4.2 and POPCNT. This is a reasonable engineering decision if the performance benefits justify it.

                    However, there is an important compatibility consequence.

                    An application which updates from Qt 6.9 to Qt 6.10 can become completely unusable on an otherwise functional x86-64 system. This is particularly relevant for long-lived Linux installations and older computers, where x86-64 itself is still supported by the operating system.

                    This is not merely a case of an optional optimization being unavailable. The application does not start at all.

                    I have also encountered reports of the same problem in other Qt applications, including Linphone. This suggests that the impact is not limited to PySide6 applications.

                    My main concern is therefore not that Qt has chosen to raise the CPU baseline. Rather, it is that this change does not appear to be clearly communicated in the supported-platform documentation.

                    The Qt documentation continues to describe Linux x86-64 as a supported architecture, but does not prominently state that the prebuilt Qt binaries require an x86-64-v2-capable processor. For users maintaining older hardware, this distinction is significant.

                    I would therefore suggest:

                    1. Clearly documenting the minimum CPU instruction set required by the prebuilt Qt binaries for each Qt release.
                    2. Clearly identifying the Qt release in which the x86-64 CPU baseline was raised.
                    3. Considering whether an x86-64-v1 build could remain available for users who need compatibility with older processors.

                    I am not arguing that Qt should never raise its CPU requirements. I am asking that the compatibility impact of such a change be made explicit, because otherwise users may reasonably interpret "x86_64" as meaning the traditional x86-64 baseline.

                    For reference, the practical boundary I observed is:

                    Qt 6.9.3   — works on an SSE4.1 / non-POPCNT CPU
                    Qt 6.10.0  — requires SSE4.2 + POPCNT
                    

                    This makes the change particularly easy to reproduce and verify.

                    JKSHJ Offline
                    JKSHJ Offline
                    JKSH
                    Moderators
                    wrote last edited by
                    #9

                    @Rocus said in Has the minimum CPU requirement for Qt 6.10 Linux x86_64 binaries changed to x86-64-v2?:

                    This therefore appears to be an intentional change in the CPU baseline of the Qt 6.10 binaries

                    As @Allan-Jensen mentionded, Qt itself doesn't have a hard requirement for x86-64-v2. Rather, the build environment (and build-time config options) determine the minimum requirements of the binaries.

                    So, as a "first line" workaround, building Qt from source in a x86-64-v1 environment should allow you to support older machines.

                    So why did the more recent pre-built Qt binaries gain a hard dependency on x86-64-v2? The summary is:

                    • The release infrastructure used RHEL 8.10 to build Qt 6.9 binaries: https://wiki.qt.io/Qt_6.9_Tools_and_Versions#Software_configurations_for_Qt_6.9.3
                    • The release infrastructure used RHEL 9.6 to build Qt 6.11 binaries: https://wiki.qt.io/Qt_6.11_Tools_and_Versions#Software_configurations_for_Qt_6.11.2
                    • RHEL 9 raised the CPU baseline to x86-64-v2: https://www.phoronix.com/news/RHEL-9-x86-64-v2-Plans

                    (Notes: In the Wiki links above, the keyword Packaging tells us which distro is used to build the binaries)

                    So that explains why the recent binaries provided by the Qt Online Installer (and PyPI) no longer work on older machines.

                    Perhaps the Qt release infrastructure can be configured to explicitly support x86-64-v1? I suggest starting a discussion at the Development mailing list (you must subscribe first to post there): https://lists.qt-project.org/listinfo/development

                    Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

                    A 1 Reply Last reply
                    0
                    • JKSHJ JKSH

                      @Rocus said in Has the minimum CPU requirement for Qt 6.10 Linux x86_64 binaries changed to x86-64-v2?:

                      This therefore appears to be an intentional change in the CPU baseline of the Qt 6.10 binaries

                      As @Allan-Jensen mentionded, Qt itself doesn't have a hard requirement for x86-64-v2. Rather, the build environment (and build-time config options) determine the minimum requirements of the binaries.

                      So, as a "first line" workaround, building Qt from source in a x86-64-v1 environment should allow you to support older machines.

                      So why did the more recent pre-built Qt binaries gain a hard dependency on x86-64-v2? The summary is:

                      • The release infrastructure used RHEL 8.10 to build Qt 6.9 binaries: https://wiki.qt.io/Qt_6.9_Tools_and_Versions#Software_configurations_for_Qt_6.9.3
                      • The release infrastructure used RHEL 9.6 to build Qt 6.11 binaries: https://wiki.qt.io/Qt_6.11_Tools_and_Versions#Software_configurations_for_Qt_6.11.2
                      • RHEL 9 raised the CPU baseline to x86-64-v2: https://www.phoronix.com/news/RHEL-9-x86-64-v2-Plans

                      (Notes: In the Wiki links above, the keyword Packaging tells us which distro is used to build the binaries)

                      So that explains why the recent binaries provided by the Qt Online Installer (and PyPI) no longer work on older machines.

                      Perhaps the Qt release infrastructure can be configured to explicitly support x86-64-v1? I suggest starting a discussion at the Development mailing list (you must subscribe first to post there): https://lists.qt-project.org/listinfo/development

                      A Offline
                      A Offline
                      Allan Jensen
                      wrote last edited by
                      #10

                      @JKSH Note. RedHat sets the march flags automatically to include x86_64v2, and the standard library and everything else is build with it too. So if anything works at all on an older machine without full x86_64v2, it is completely be accident and could break at any time. Qt can not support architectures the OS itself no longer supports.

                      JKSHJ 1 Reply Last reply
                      0
                      • A Allan Jensen

                        @JKSH Note. RedHat sets the march flags automatically to include x86_64v2, and the standard library and everything else is build with it too. So if anything works at all on an older machine without full x86_64v2, it is completely be accident and could break at any time. Qt can not support architectures the OS itself no longer supports.

                        JKSHJ Offline
                        JKSHJ Offline
                        JKSH
                        Moderators
                        wrote last edited by
                        #11

                        @Allan-Jensen said in Has the minimum CPU requirement for Qt 6.10 Linux x86_64 binaries changed to x86-64-v2?:

                        Qt can not support architectures the OS itself no longer supports.

                        But RHEL 8.10 is still supported in the upcoming Qt 6.12 LTS? https://doc-snapshots.qt.io/qt6-6.12/supported-platforms.html#linux

                        Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

                        A 1 Reply Last reply
                        0
                        • JKSHJ JKSH

                          @Allan-Jensen said in Has the minimum CPU requirement for Qt 6.10 Linux x86_64 binaries changed to x86-64-v2?:

                          Qt can not support architectures the OS itself no longer supports.

                          But RHEL 8.10 is still supported in the upcoming Qt 6.12 LTS? https://doc-snapshots.qt.io/qt6-6.12/supported-platforms.html#linux

                          A Offline
                          A Offline
                          Allan Jensen
                          wrote last edited by
                          #12

                          @JKSH Not sure, but I do not think we provide prebuilt binaries for that, so there you can work around it by building yourself.

                          1 Reply Last reply
                          0

                          • Login

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • Users
                          • Groups
                          • Search
                          • Get Qt Extensions
                          • Unsolved