Skip to content

Releases: QuTech-Delft/qx-simulator

Release 0.7.4

29 Jan 14:49
50c6090
Compare
Choose a tag to compare

Added

  • Integrate with libqasm 0.6.9 release:
    • Add SWAP gate instruction.
    • Add barrier, wait, and ìnit non-gate instructions.
  • The register manager now holds a 'dirty bitset' for virtual qubit and bit indices.

Release 0.7.3

27 Jan 12:30
3b1843c
Compare
Choose a tag to compare

Added

  • Documentation: GitHub pages.
  • Linters: .clang-format and .clang-tidy.
  • Integrate with libqasm 0.6.8 release:
    • Add gate modifiers. Notice though that pow only works with integer exponents.

Changed

  • Implement instructions as a hierarchy.
  • Implement GateConvertor as a CircuitBuilder.
  • Implement BasisVector as a boost::dynamic_bitset<uint32_t>.
  • Implement RegisterManager as a singleton.
  • Change QuantumState by taking the measurement register out of it.
  • Change Circuit::execute to return a SimulationIterationContext.
  • Change Matrix and DenseUnitaryMatrix to use std::vector instead of std::array.
  • Change file, functions, and variable names.

Removed

  • abseil library dependency.

Release 0.7.2

22 Nov 17:09
ca10380
Compare
Choose a tag to compare

Added

  • Integrate with libqasm 0.6.7 release.
  • Add reset instruction.
  • Make QX simulator aware of bit (register) variables.
  • Update test and assets workflows.

Changed

Removed

Release 0.7.1

27 May 14:24
a3c7613
Compare
Choose a tag to compare

Added

  • Integrate with libqasm 0.6.6 release.
  • Allow multiple qubit/bit (register) definitions and mid-circuit measurements.

Changed

  • Update conanfile.py to request libqasm/0.6.6 and use tools.build.skip_test.
  • Update GitHub workflows with some improvements taken from libqasm.

Removed

Release 0.7.0

17 Apr 11:34
Compare
Choose a tag to compare

Added

  • Integrate with libqasm 0.6.3 release.

Changed

  • Rename tests folder to test.
  • Update GitHub workflows.

Removed

  • cQasm 1.x support.
  • circuits folder.

Release 0.6.5: Conan, ARM on Linux

04 Dec 12:36
Compare
Choose a tag to compare

Added

  • Python 3.12 support

Changed

  • Uses Conan
  • New Github workflows
  • Working ARM runners in the CI

Release 0.6.4: error messages

21 Sep 10:57
Compare
Choose a tag to compare

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

21 Sep 02:06
Compare
Choose a tag to compare

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

27 Feb 12:31
Compare
Choose a tag to compare

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

10 Feb 10:34
Compare
Choose a tag to compare

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