Releases: Classiq/classiq-library
Classiq 0.61.0
Released on 2024-12-10.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Bug Fixes
- Operands' list elements can be used as operands (in expressions such as,
e.g.,[op_list[0]]
).
Library Additions
- Add a demonstration of the Decoded Quantum Interferometry (DQI) algorithm. See notebook.
- Add the function
qsvt_lcu
for efficiently encoding QSVT polynomials with indefinite parity. - Subsequent invocations to execution primitives inside
ExecutionSession
now use different random seeds (depending on the initial seed) to avoid
getting the exact same simulation results inside a session.
IDE Improvements
New Visualization:
- Clean up variable names in engine blocks.
What's Changed
- Add caching by @classiqdor in #611
- remove old action by @classiqdor in #625
- rename workflows by @classiqdor in #631
- push quantum challange deleted by @NadavClassiq in #641
- add classiq paper codes by @TomerGoldfriend in #642
- Release 0.61.0 by @nivclassiq in #644
Full Changelog: 0.60.0...0.61.0
Classiq 0.60.0
Released on 2024-11-28.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Interface Changes
ExecutionSession
needs now to be explicitly closed, and it is recommended
to use it as a context manager. See here for more information.
IDE Changes
- Credentials for Alice & Bob hardware are now optional. Quantum programs run on Alice & Bob backends will use Classiq's credentials by default.
Classiq 0.58.0
Released on 2024-11-18.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- This release introduces a new version to the Quantum Program (QP) visualization tool in parallel to the legacy visualization.
- The new visualization version offers advanced visualization capabilities that bridge high-level algorithmic descriptions (Qmod) with gate-level implementations, incorporating interactive hierarchical views and data flow analysis.
Feature Details
Visualization Versions:
Both the new version and the legacy version are available on the Quantum Program page.
Users can toggle between two visualization versions:
- 'New' version: Advanced visualization that includes quantum data flow views and new hierarchical block structures.
- 'Basic' version: Legacy visualization.
Documentation & Support:
Initial documentation : A basic guide is available to help users navigate and utilize the visualization tool’s key features.
Tooltip: Integrated to the QP page to provide in-line initial guidance on key functions and elements.
Known Issues and Limitations:
Supported models: The 'New' visualization doesn't yet support all models. Unsupported models may not render - in these cases it is suggested to switch back to the 'Basic' visualization.
In-Progress development: This is part of an initial release milestone, with major issues being actively addressed.
Usage Recommendations
Switching between versions: It’s recommended to switch between the 'New' and 'Basic' versions to evaluate visualization consistency and effectiveness for specific quantum programs.
Feedback and bug reporting: Any issues, inconsistencies, or suggested improvements should be reported through the designated Slack channel for prompt review.
Next Steps
User feedback will inform ongoing improvements and prepare the tool for broader production release. Further enhancements and bug fixes are planned in alignment with Classiq’s high-level quantum design roadmap.
Classiq 0.57.0
Released on 2024-11-11.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Bug Fixes
- Fix walkthrough bug in the IDE.
- Change the default value of display_url in show(circuit, display_url) to True.
Classiq 0.56.0
Released on 2024-10-31.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
New Features
- Add an optional
else
block to thecontrol
statement.
Bug Fixes
- Fix Pauli feature map circuit visualization.
- Add missing
len
property toQConstant
s of typeCArray
(Qmod/Python).
Classiq 0.55.0
Released on 2024-10-28.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
-
Qmod/Python: Functions
assign
,assign_amplitude
,inplace_xor
, and
inplace_add
are equivalent to the operators|=
,*=
,^=
, and+=
respectively except that they can be used in operands (Python lambda
functions):within( lambda: assign(x, y), # y |= x lambda: inplace_xor(y, z), # z ^= y )
-
Support non-equation Boolean expressions as control conditions:
=== "SDK"
[comment]: DO_NOT_TEST
``` python
@qfunc
def main(a: Output[QBit], b: Output[QBit], res: Output[QBit]) -> None:
allocate(1, a)
allocate(1, b)
allocate(1, res)
control(a & b, lambda: X(res))
```
=== "Native"
```
qfunc main(output a: qbit, output b: qbit, output res: qbit) {
allocate(1, a);
allocate(1, b);
allocate(1, res);
control (a & b) {
X(res);
}
}
```
Interface Changes
- Parameters
value
andtarget
of functionsinplace_add
andinplace_xor
have been renamed toexpression
andtarget_var
respectively.
Parametersvalue
andtarget
will no longer be supported starting on
02/12/24 at the earliest.
Bug Fixes
- Solve a within-apply bug.
Classiq 0.54.0
Released on 2024-10-21.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Deprecations
- Python 3.8 is no longer supported in the Python SDK. The minimum supported
version is now Python 3.9.
Enhancements
- Optimize in-place XOR variable assignments (
x ^= y
).
(The implementation no longer uses auxiliary qubits.) - Improve error messages in
CArray
(array) parameter declaration. - Support array subscripts and struct field access on the left-hand side of
in-place arithmetic assignments (qbv[0] ^= 1
andmy_Struct.field += 2.5
). - Optimize the controlled version of QFT arithmetic implementations by skipping
controlling the QFT and QFT dagger.
Classiq 0.53.0
Released on 2024-10-14.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
-
Introducing generative functions
to the Python SDK. Generative functions are@qfunc
s that support Python
control flow, integration with third-party libraries, and debugging. -
Execution using IBM devices is available again.
-
New method
estimation_cost
inExecutionSession
evaluates a quantum
circuit given a classical cost function. -
A new
+=
operator performs
in-place addition
of quantum numerics.
Example:z += x ** 2 - 0.5 * y
-
The state of
SampledState
supports dot-notation for field access when
representing a quantum struct:struct_sample = sample.state["my_qstruct"] field_sample = struct_sample.my_field
Library Additions
-
Add two new functions for encoding classical data,
encode_in_angle
andencode_on_bloch
. See notebook. -
Add a new example for hybrid classical-quantum neural network. See notebook.
Interface Changes
- Parameter
control
of built-in functions such asCX
has been renamed to
ctrl
. Parametercontrol
will no longer be supported starting on 4/11/24
at the earliest.
Bug Fixes
- Fix classical array slicing in the SDK (
my_list[1:3][0]
). - Fix synthesis of arithmetic operations nested in a within-apply statement
whenmachine_precision
is set. - Fix in-place arithmetic operations (
^=
/+=
) when the value on the
right-hand side is a signed variable that is not aligned with the target
variable.
Classiq 0.52.0
Released on 2024-10-02.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- Optimize synthesis of variable and constant assignments (
x ^= y
,x += 3
). - The behavior of synthesis with
debug_mode
set toFalse
has been changed, such that synthesis process is up to 50% faster. However,
the resulting visualized quantum program may lose much of its hierarchical structure.
Note that the default value for debug_mode is stillTrue
, and this mode's behavior remains unchanged. - The maximum number of shots in a single execution on Nvidia simulators has
been increased to 1,000,000.
Bug Fixes
- Improve circuit width estimation when
machine_precision
is set. - Removing the non-gate-based devices from the available AWS Bracket devices.
- Fix
n ^= 1
assignments wheren
has a single qubit
(used to raise an exception).
Notice
-
With the release of this version (
0.52.0
),
execution with older SDK versions may result in errors or unexpected behavior.
To ensure proper execution of your quantum programs via the SDK,
please upgrade to the latest version (See instructions guide above). -
The
Pydantic
package dependency has been upgraded from version 1 to version 2.
If you are using an older version ofPydantic
in the same environment as our SDK,
this may lead to compatibility issues.
Note that installing or upgrading the SDK will also update yourPydantic
version to V2.
It is recommended to verify compatibility across your environment.
Classiq 0.51.0
Released on 2024-09-29.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Notice
- With the release of version
0.52
(scheduled for the week of 06-12.10.2024),
execution with older SDK versions might result in errors or unexpected behavior.
In order to make sure executions of your quantum programs via the SDK work properly
upgrade your SDK to the latest version (See instructions guide above).
Enhancements
- Improve qubit reuse in arithmetic operations when
machine_precision
is set. - Improve error messages when executing circuits on Amazon Braket.
- Improve error messages when executing the VQE primitive.
- Support constant assignments:
x |= 3
,x ^= 3
, andx += 3
.
Bug Fixes
- Fix in-place XOR assignments (
^=
) of 1-qubit expressions into multi-qubit
variables (used to raise an error).
SDK
- Add a new function,
quantum_program_from_qasm
, to convert a QASM string into a Quantum Program.