Releases: QuTech-Delft/qx-simulator
Release 0.7.1
Added
- Integrate with libqasm 0.6.6 release.
- Allow multiple qubit/bit (register) definitions and mid-circuit measurements.
Changed
- Update
conanfile.py
to requestlibqasm/0.6.6
and usetools.build.skip_test
. - Update GitHub workflows with some improvements taken from
libqasm
.
Removed
Release 0.7.0
Added
- Integrate with libqasm 0.6.3 release.
Changed
- Rename
tests
folder totest
. - Update GitHub workflows.
Removed
- cQasm 1.x support.
circuits
folder.
Release 0.6.5: Conan, ARM on Linux
Added
- Python 3.12 support
Changed
- Uses Conan
- New Github workflows
- Working ARM runners in the CI
Release 0.6.4: error messages
Added
Meaningful error message when parsing or simulation fails
Changed
Does not crash when too many qubits asked
Release 0.6.3: bugfix and misc
Added
- Address sanitizer CMake mode
Changed
- Removed submodules and deps/ folder, replaced with CMake FetchContent
- C++23
- gtest instead of doctest
- Various fixes to Github actions
- Fixed bug in bitset due to bool automatic casting to 32 bits
- Documentation formatting fixes
- Doc chapter about internals
Removed
0.6.2: depolarizing channel error model, constant seeds
Added
depolarizing_channel error model and docs
ability to pass constant seed for deterministic simulation
RandomTest doing Kolmogorov-Smirnov statistical test to match random numbers with their ideal probability distribution
Changed
fixed docs
source files use .hpp/.cpp extensions
random number distributions (integer min/max and real 0-1) are done in-house for portability and consistency of results
Removed
nothing
0.6.1 beta: ARM compat, classical not and more controlled gates, integers in "results" and new Python API
Added
Linux arm64 Python wheel and Linux arm64 test workflow (GCC-Release)
"classical not" gate is back
"state" section in JSON now contains a new entry "norm" which is the square of the modulus of the complex number
C++ integration test
All gates can be controlled (including prep, measure). This is not new but was accidentally removed in 0.6.0.
New Python API execute_string and execute_file without having to create qxelarator.QX() and returning user-friendly Python type
Changed
Fixed README
"results" section in JSON contains integers instead of floats (those integers being the number of occurences)
In relation to previous point, "results" only relates to measurement register averaging, and no longer to quantum state when doing a single shot. For that, use the "state" section in the JSON.
Output float precision is 8 decimals instead of 6
Removed
Most Python tests - already covered in C++ integration test, and they didn't check much anyway
Version 0.6.0: performance improvement, modern C++20 and matrices
Almost a complete rewrite. No functional change except:
- error models don't work anymore :( they will come better and stronger later on
- classical not gate doesn't work anymore :( it's just an omission, will be fixed soon
- get_measurement_outcome and get_state don't exist anymore :( they've been superseeded by json output
- it's faster and using a single core \o/ and less memory on average
Added
- Ability to easily implement any quantum gate by simply giving an arbitrary unitary matrix in Gates.h
- Performance speedup using a single thread
- Some proper linear algebra primitives using template metaprogramming
- Abseil-cpp dependency for flat_hash_map
- Ability to compile the simulator with an set maximum number of qubits - in the future this will
be using templates as well to switch data structures based on the input quantum circuit
Changed
- Quantum state is stored as a sparse array implemented using a flat_hash_map from Abseil-cpp
- C++20 in place of C++14,
- Code style: camel case
Removed
- OpenMP and multithreading.
- SSE, AVX and other intrinsics.
- get_measurement_outcome and get_state methods. Now accessible via JSON output.
Release 0.5.5: output state complex amplitudes and set_string
Added:
- set_string method to parse a cqasm string directly instead of a cqasm file
Changed:
- Fixed issue #118: quantum state is always displayed, as well as measurement register averaging
Release 0.5.4: 2 bugfixes and some cleanups
Added
- Tests for measure gate
Changed
Removed
- QFT implementation (never instantiated, so no functional change)
- qx-server no longer exists, together with the network libraries
- "Microcode" generation functions (never used either)
- Parallel gates in gate.h (they were executed sequentially)
- Some non-needed and/or obsolete code