This is a minor release that brings with it a number of updates:
- Compatibility with NumPy 2
- Compatibility with Cirq 1.5.0
- Compatibility with Python 3.12–3.13
- Compatibility with newer versions of CMake
- Improvements and simplifications to the build and installation process. For example, the CMake configuration system will detect the availability of CUDA libraries automatically and build for the detected GPU hardware by default, even if environment variables like
CUDAARCHS
are not set.
Backward compatibility notes:
- This release drops support for Python version lower than 3.10. This change is necessary to support NumPy versions 2.1 and higher.
- The handling of Bazel configuration options has changed. qsim's behavior was previously inconsistent with the documentation about whether
bazel build
would use hardware vector optimization features by default. In this qsim release, support for those instruction set features is not compiled in by default; enabling them requires adding the appropriate Bazel config options. The options are documented indocs/bazel.md
. (Note that this is specifically about Bazel and not the CMake configuration or the Makefiles.)
Apple Silicon note:
- The ARM64/AArch64 architecture does not natively support the AVX or SSE instruction sets that qsim uses for vector optimizations. Consequently, on Apple Silicon, qsim will only build in the
qsim_basic
variant; i.e., without vector instructions. Being able to use those hardware features is a major element of qsim's performance advantages on other hardware, and its lack limits qsim's performance on Apple Silicon. Rewriting qsim to take advantage of ARM-specific SIMD features would require a substantial effort, and is not planned.
Finally, we thank Joseph Weston, the original owner of https://pypi.org/project/qsim, for letting us take over the qsim
project name on PyPI and use it as an alias for qsimcirq
going forward.
What's Changed
- Fix sampling#663
- Use bazel-contrib/setup-bazel instead of manually installing a deb during CI #665
- Slightly relax tolerance in a test case of Apply1InteriorArbitrary #671
- Fix CI actions on GitHub #672
- CI - test cirq compatibility under Python 3.10 #673
- Update runner versions #689
- Fix #692: add common repo files #696
- Increment version number in master #699
- Add custom Dependabot configuration #702
- Add issue forms #704
- Tag tests with size and "avx" where appropriate #709
- Rewrite dev_tools/test_libs.sh #710
- Increase Bazel version to 6.5.0 #711
- Update versions of black and flynt #712
- Update submodule googletest to latest version #713
- Update min version specification in CMakeLists.txt #714
- Update paths to llvm on MacOS #715
- Increase pybind11 version to the latest #716
- Update versions of TensorFlow and platforms packages #717
- Rename build_tools directory to dev_tools #719
- Add options to, and slightly reorganize, .bazelrc #720
- Add common configuration files for linters and other programs #721
- Add pytest-xdist to dev-requirements #724
- Add optional verbose configuration to .bazelrc #737
- Add tags for SSE test cases #738
- Update some CMake files to add missing constructs & remove obsolete ones #739
- Fix googletest CMake build #740
- Update version of Googletest to latest #741
- Update Dockerfiles and docker-compose.yml files #742
- Overhaul GitHub Actions workflows #747
- Move most cibuildwheel options to pyproject.toml #748
- Slightly reduce tolerance on 2 expection value tests #755
- Set copt in platform-specific way & increase bazel test timeouts #756
- Add cmake to dev-requirements #757
- Check cpu features more portably in test_libs.sh #758
- Use pybind11-config to get pybind11 config info #759
- Further update CMake files #760
- Add back missing global option to pybind11 requirement #762
- Loosen NumPy version requirement to allow version 2 #763
- Update disclaimer and contact info in README file #764
- Require that version of setuptools be recent #766
- Update setup.py #767
- Slightly update README file and spiff up formatting #768
- Don't use Python 3.12 with Black (in ci_format_checks.yml) #769
- Update issue template forms #770
- Switch to Windows 2025 runners #773
- Fix #765: make CUDA builds work again #783
- Correct the default Bazel vector instructions options #782
- Replace sprintf() call with snprintf() #785
- Fix warning about SPDX license identifier #787
- Do an "apt-get update" before installations #788
- Suppress CMake version warning coming from Pybind11 #789
- Overhaul top-level Makefile #791
- Copy more subdirectories to /qsim inside Dockerfile #792
- Add support for passing in value of CUDA_PATH #793
- Add a new CMake extension to detect the CUDA architecture #794
- Make dev_tools/test_libs.sh use Bazel configs for SSE & AVX #795
- Make debug option in manual workflow execution set Bazel verbose config #799
- Install dev-requirements.txt into Python environments #806
- Add additional CMake diagnostic messages at configuration time #808
- Fix niggling Docker issues #811
- Revise CUDAARCHS handling #812
- Use setuptools>=75.2.0, matching Colab #813
- Bump version number to 0.22.0 #817
New Contributors
- @mhucka made their first contribution in #671
- @dougthor42 made their first contribution in #665
Full Changelog: v0.21.0...v0.22.0