We got to the bottom of the problem with `QHybrid` performance, and, with apologies, it had nothing to do with either "driver changes" or "speculative execution": since `QHybrid` was first entered into the library, optimized methods on `QEngineOCL` and `QEngineCPU` remained without direct exposure via the `QHybrid` layer. Making sure that the full public API was exposed via `QHybrid` fixed the issue. (It blows my mind that we went this long without `MAll()` exposed from the wrapped types under `QHybrid`.) Similarly, the incorrect results from `QPager` are a known issue where the engine type doesn't work with numbers of qubits smaller than its threshold for at least two "pages" in the simulator type, which is entirely avoided by wrapping in `QHybrid`.
(I owe an apology for mouthing off. No one was going to realize this problem but me, but, when something _seems_ to work in the library for literally years, and then I notice it's sub-optimal, it's easy to reflexively blame driver and firmware changes before setting out to fix the problem of necessity, anyway.)
**UPDATE, 2024-11-20**: I have added a source installer for an update to `pyqrack-cuda`!
**Full Changelog**:
https://github.com/unitaryfund/qrack/compare/vm6502q.v9.12.33...vm6502q.v9.12.34
https://github.com/unitaryfund/pyqrack/compare/v1.32.27...v1.32.28
sha1sum results:
d54c1470faa1bf0b061c7b975b2af91879f2f292 pyqrack-1.32.28-py3-none-macosx_13_0_x86_64.whl
db76d4ca7540328fb38be96d62a3d361f5730725 pyqrack-1.32.28-py3-none-macosx_14_0_arm64.whl
23d8da1002738734dacf9aed6b81809558304f48 pyqrack-1.32.28-py3-none-macosx_15_0_arm64.whl
752a5b3d78fe8e619cdbf90923c0ec17de7623c5 pyqrack-1.32.28-py3-none-manylinux_2_31_x86_64.whl
ea05e8910a7de9f5503d92951d2ddc29e2bb3f66 pyqrack-1.32.28-py3-none-manylinux_2_35_x86_64.whl
ead9687aec62c3882a9dfe1340f107009006ba11 pyqrack-1.32.28-py3-none-manylinux_2_39_x86_64.whl
fd014c7fa8c31959ad231dfa6633feb094d5be25 pyqrack-1.32.28-py3-none-win_amd64.whl
7de02a6eddc758dee36e97e919de7b321ccb4260 pyqrack-1.32.28.tar.gz
306cb4dfcaa3bba6f86396b5e30acd32f23ec857 pyqrack_cpu-1.32.28-py3-none-macosx_13_0_x86_64.whl
a2ca24edd723ce58baeab930025396d013c16d39 pyqrack_cpu-1.32.28-py3-none-manylinux_2_31_x86_64.whl
c8aa9d96e498f98a732ac5305f0baf8586f398ee pyqrack_cpu-1.32.28-py3-none-manylinux_2_35_x86_64.whl
2bb0d94d92dfd4f4b83a5b0e50e0af55dc50999f pyqrack_cpu-1.32.28-py3-none-manylinux_2_39_x86_64.whl
01be803abd72c58b1f16155c22f610e50383be1f pyqrack_cpu-1.32.28-py3-none-win_amd64.whl
403f0a128274c9a2906037738fb63d370c782706 pyqrack_cpu-1.32.28.tar.gz
75242bed6f022732373805ad5d686b5a314c7430 pyqrack_cuda-1.32.28.tar.gz