Releases: QuTech-Delft/OpenQL
Releases · QuTech-Delft/OpenQL
Release 0.12.2
-
Added:
- Conan as package manager.
res
folder for resources.
-
Changed:
- Different upgrades: C++23, CMake 3.12, Python 3.8 to 3.12.
- GitHub workflows and jobs.
- File reorganization:
docs
,include
,src
,test
.
-
Removed:
- Git submodules.
- CMake folder.
Release 0.11.1: fix wheel size on Linux/GCC
This release doesn't include much change, it just allows us to upload our wheels to PyPI, they were becoming too large.
Release 0.11.0
A long-waited release...
Added
- CC backend:
- support for cQASM 1.2 features through new IR
- limitations
- integer values must be non-negative
- limitations
- support for resource constrained scheduler
- creates .map file reporting measurement statements present in input, to allow retrieving measurements downstream
- support for cQASM 1.2 features through new IR
- support for Python up to 3.11
Changed
- pass dec.Instructions: duration=0 in new-style decomposition rules now disables checking whether expansion fits, allowing automatic calculation of duration (and requiring scheduling after decomposition of such rules)
- CC backend:
- now uses new IR
- no longer requires key "cc" to be present in instructions that define gate decompositions
- key "readout_mode" no longer used
- classification of gates as measurement - which is used for the resource constrained scheduler, and to output a map of measurements - now based on signal definition ("signal/type" equals "measure" and "signal/value" non-empty)
- classification of gates as real-time measurement now based on signal definition ("signal/type" equals "measure" and "signal/value" empty)
- absence of key "cc" now implies empty "signal", so
"cc": { "signal": [] }
is no longer necessary
- passes and architectures self-register statically to their respective factories
- initial placer uses new IR and new MIP solver called HiGHS
Removed
- CC backend:
- support for JSON key "pragma/break" for instruction definitions
- macro expansion for JSON key instruction/signal/value (unused anyway)
- support for sweep points in API and the WriteSweepPointsPass
- support for Python up to and including 3.6
Fixed
- pass dec.Instructions
- corrected ordering of instruction decomposition (which reversed multi-statement decompositions)
- decomposed instructions were silently made unconditional, we now copy instruction condition to decomposed instructions
0.11.0-alpha.2 Test release
Test release to see if wheels for python 3.10 and recent manylinux versions are correctly created and pushed to pypi.
0.11.0-alpha.1 Test release
Test release to see if wheels for python 3.10 and recent manylinux versions are correctly created and pushed to pypi.
Release 0.10.0: new internal representation with full cQASM 1.2 control-flow support
Added
- scalability options for coping with large multi-core systems, including a progress bar for the mapping process
- initial implementation of the Diamond architecture developed for Fujitsu (lead by Stephan Wong)
- full cQASM 1.2 read and write support, with options for different version levels and various language quirks
- new internal representation that encompasses the entire cQASM 1.2 language, and has many new generalized platform features
- lossless conversion functions between the two IR representations until all passes have been converted to the new representation
- new pass-based decomposition logic that supports arbitrary cQASM 1.2 code for the expansion and doesn't clobber scheduling information
- new pass for converting structured cQASM 1.2 control flow to basic block form
- new list scheduler based on the new IR
Changed
- all written cQASM files are now in 1.2 format by default
- the cQASM reader no longer has a JSON configuration file for mapping cQASM gates to OpenQL gates; this translation is now part of OpenQL's platform data
- the old scheduler is replaced with a new implementation for most option variations, that outputs slightly different schedules
- statistics report output is also formatted slightly different, though information content is the same
- CC backend:
- scheduling is now done using resource constraints by default
Fixed
- excessive memory usage and slow platform construction for large multi-core systems
Release 0.9.0: major internal improvements, architecture system, and pass management
Added
- architecture system: platform and compilation strategy defaults are now built into OpenQL, preventing the need for users to copypaste configuration files from the tests directory
- interface (C++ and Python) to compile cQASM 1.x
- allow 'wait' and 'barrier' in JSON section 'gate_decomposition'
- CC backend:
- improved reporting on JSON semantic errors
- added check for dimension of "instruments/qubits" against "instruments/ref_control_mode/control_bits"
- added check for dimension of "instructions//cc/[signals,ref_signal]/value" against "instruments/ref_control_mode/control_bits"
- added cross check of "instruments/ref_control_mode" against "instrument_definitions"
- added support for "pragma/break" in JSON definition to define 'gate' that breaks out of loop
- added support to distribute measurement results via DSM
- added support for conditional gates
- added compile option "--backend_cc_run_once"
- added compile option "--backend_cc_verbose"
Changed
- pass management: instead of a hardcoded compilation strategy, the strategy can be adjusted and fine-tuned manually
- pass options: instead of doing everything with global options, global options were replaced with pass options as much as possible
- most documentation is now generated from code and can be queried using API calls
- scheduler resources are completely reworked to be made more generic
- major internal refactoring and restructuring to facilitate the above two things
- CC backend:
- renamed JSON field "signal_ref" to "ref_signal"
- renamed JSON field "ref_signals_type" to "signal_type"
- changed JSON field "static_codeword_override" to be a vector with one element per qubit parameter. To edit a JSON file using Sublime, use Replace with Regular Expressions: find=
"static_codeword_override": ([0-9])+
, replace="static_codeword_override": [\1]
- adopted new module synchronization scheme ("seq_bar semantics", requires CC software >= v0.2.0, PycQED after commit 470df5b)
- JSON field "instruction/type" no longer used by backend, use "instruction/cc/readout_mode" to flag measurement instructions
- allow specification of 2 triggers in JSON field "control_modes/*/trigger_bits" to support dual-QWG
- changed label in generated code from "mainLoop" to "mainLoop". Do not start kernel names with "" (this should be specified by the API)
- removed initial 1 cycle (20 ns) delay at start of kernels (resulting from bundle start_cycle starting at 1)
- correctly handle kernel names containing "_" in conjunction with looping (formerly duplicate labels could arise)
- added "seq_out 0,1" to program start to allow tracing of actual program start
Removed
- CC-light code generation, as the CC-light is being phased out in the lab, and its many passes were obstacles for pass management and refactoring
- rotation optimization based on matrices; matrices in general were removed entirely because no one was using it
- the commute variation pass, as it has been superseded by in-place commutations within the scheduler
- the toffoli decomposition pass, as it wasn't really used; to decompose a toffoli gate, use generic platform-driven decomposition instead
- the defunct fidelity estimation logic from metrics.cc; this may be added again later, but requires lots of cleanup and isn't currently in use
- quantumsim and qsoverlay output; apparently this was no longer being used, and it was quite intertwined with the CC-light backend
Fixed
- changed register used for FOR loop, so it doesn't clash with delay setting
- fixed documentation for python setup and running tests
- various miscellaneous bugs, dangling pointers, and memory leaks
Release 0.8.1.dev4: test release for CI pipeline
Merge pull request #345 from QE-Lab/fix-release-process Fix release process
CC backend support and other fixes
Added
- support for CC backend
Changed
Removed
Fixed
- fixed issue with duplicate kernel names
- updated json library to fix osx builds
Hotfix Release
Fixed
- fixed issue with correct python library picking on tud win systems
Changed
- re-factored folders