Recent Releases of classiq-library
classiq-library - Classiq 0.91.1
Released on 2025-08-31.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Bug Fixes
- Visualization tooltips are now supported and displayed in the Studio. This enhancement improves the user experience by providing helpful information directly within visualizations, making it easier to understand and interact with your data.
- Jupyter Notebook
Published by skis31 6 months ago
classiq-library - Classiq 0.90.0
Released on 2025-08-19.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
QP Visualization: Improved Handling of Long Function Blocks Sub-labels
Enhancements
- Loading of large Pandas Dataframes is now available in the studio, up to 200MB files.
- Use non-blocking flow for execution jobs on the Classiq Nvidia Simulator. This allows for longer-running jobs.
- The 'phase' statement has been generalized to support a fixed (classically specified) rotation angle, that is, to insert a global phase. A global phase across an entire circuit is undetectable in quantum hardware, but when applied in a controlled context, it introduces a relative phase between positive and negative condition states. This variant of the 'phase' statement is useful to directly express key idioms in quantum algorithms such as phase oracles, reflections, and relative-phase computations.
QP Visualization: Improved Handling of Long Function Blocks Sub-labels
Long sub-labels in the quantum program visualizer are now automatically truncated to prevent overflow and maintain a clean layout. When a sub-label is truncated, the full text is accessible via a tooltip on hover, ensuring that all information remains available without cluttering the interface. This enhancement improves readability and usability, especially for circuits with verbose or complex expressions.
Deprecations
- The following functions and classes have been deprecated and will no longer
be supported starting on 2025-09-18 at the earliest:
construct_chemistry_model,molecule_ucc,molecule_hva,molecule_hartree_fock,fock_hamiltonian_hva,fock_hamiltonian_hartree_fock,GroundStateProblem,MoleculeProblemandHamiltonianProblem. For more information on Classiq's chemistry application, see here.
Bug Fixes
- Fix a bug where allocating quantum variables in disallowed blocks was not always reported.
- Fix a bug where controlled free operations could cause the visualization to crash. The visualization now handles these cases correctly and no longer fails when such operations are present.
Interface Changes
- Parameter
exprof function 'phase' has been renamed tophase_expr. Parameterexprwill no longer be supported starting on 2025-09-19 at the earliest. Changephase(expr=..., theta=...)tophase(phase_expr=..., theta=...)orphase(..., ...).
- Jupyter Notebook
Published by srulre 6 months ago
classiq-library - Classiq 0.89.0
Released on 2025-08-12.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Studio Enhancements
- You can now install and import Torch, PyQSP, and CUDA-Q packages in the Classiq Studio environment. Previously, these imports failed due to environment limitations, but they are now supported for your workflows.
- PyGLPK package is installed and usable in the Classiq Studio.
- Uploading files up to 1 GB to the user persistent workspace in the Classiq Studio is now enabled.
Enhancements
- Added the functions
prepare_sparse_amplitudesandinplace_prepare_sparse_amplitudesto the function library. - Add support for numpy 2.2.6 (Python >=3.10) and numpy 2.3.2 (Python >=3.11)
- Shared QP links now come with the actual visualization image previews.
Security
- Improved web application security
- Jupyter Notebook
Published by yehuda-eterman-classiq 6 months ago
classiq-library - Classiq 0.88.0
Released on 2025-08-04.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- Added the function
prepare_linear_amplitudesfor preparing the state $|\psi\rangle = \frac{1}{Z}\sum_{x=0}^{2^n-1}{x|x\rangle}$. - Extended the visualization of controlled functions as transparent boxes displaying control lines to all Qmod statements.
- Support state vector filtering for Classiq's
simulator_statevector. - Added tolerance parameter to the minimize method of the execution session.
- Jupyter Notebook
Published by nivclassiq 7 months ago
classiq-library - Classiq 0.87.0
Released on 2025-07-28.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- Concatenations can now also be used as control expressions.
- Added the functions
lcuandlcu_paulifor creating the Linear Combination of Unitaries primitive (LCU). - IBM Cloud is now available. See Cloud Providers section in the user guide.
- The default optimization level in the synthesis preferences has been changed from
OptimizationLevel.HIGH(3) toOptimizationLevel.LIGHT(1). For more information about optimization level see the optimization level section in the user guide.
Fixes
Bug Fixes
- Fix a synthesis bug that causes, in some cases, the function under power to have a separate power for each function, instead of sharing it as a whole.
- Fix a failure in hardware-aware synthesis of parametric models for the
Azure Quantumprovider. - Fix a bug in
get_hf_statewhen using qubit tapering.
Visualization
Introducing "Variables View"
A new compact visualization mode that displays quantum variable flow at a higher level perspective. Toggle between this streamlined view and the traditional qubit grid overlay using the Variables View switch in the visualization menu bar.”
Classiq Studio
Memory monitor
A new memory monitoring feature that tracks and displays resource usage during Classiq Studio Usage, providing real-time insights into memory consumption patterns.

- Jupyter Notebook
Published by ohadClassiq 7 months ago
classiq-library - Classiq 0.86.0
Released on 2025-07-15.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- Concatenations can now also be used as control expressions.
- Lower model creation and synthesis run times for large models.
Bug Fixes
- Classical
ifstatements are now supported in QP visualization, where they previously caused a failure. - Fix synthesis bug which caused wrong results when using the bitwise invert (
~) operator. - Fix bug relating to classical struct arguments (such as Hamiltonians).
- Use the Solovay-Kitaev algorithm in more cases when transpiling. Previously, we used the algorithm when transpiling with
respect to a particular fixed set of basis gates. Now, we use this algorithm whenever the basis gate set contains the Clifford gates
X,Z,H,T, andCXbut does not contain arbitrary-angle rotation gates such asRXorCRZ.
Classiq IDE
Add mechanism to allow more models to be visualized in new visualization.
Visualization: Data Tab Removal
The Data tab has been removed from the left panel in the visualization interface. This change is removing redundant functionality.
- ### Deprecation: QP Visualization Basic View Mode
Deprecated "Basic" mode quantum program visualization in favor of the new visualization scheme with enhanced designs, views, and analysis capabilities.
- ### Visualization: Focused Search
The search panel focuses only on user written functions and QMOD statements.
- Jupyter Notebook
Published by yehuda-eterman-classiq 7 months ago
classiq-library - Classiq 0.85.0
Released on 2025-06-30.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Bug Fixes
- Fix the value range analysis of numerical variables declared with specified size.
Deprecations
- The Qmod function
allocate_numhas been removed.
Classiq IDE
New Feature: QP Visualization Enhancements
The Classiq IDE now includes an improved QP visualization feature. Controlled functions are displayed in transparent boxes blocks, where:
- The transparent section represents the control mechanism.
- The filled block highlights the controlled function.
This enhancement provides a clearer and more intuitive representation of quantum programs, making it easier to understand and debug complex circuits.
- Jupyter Notebook
Published by skis31 8 months ago
classiq-library - Classiq 0.83.0
Released on 2025-06-09.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- Added the concatenation operator to Qmod. This operator packs a sequence of
quantum variables (or their parts) into a qubit array. For example,
hadamard_transform([my_qnum, my_qarray[1:3]])passes an array of the respective qubits to the function. See more under concatenation operator.
Interface Changes
- The type
SerailizedQuantumProgramand methodQuantumProgram.get_qprogare no longer available.
- Jupyter Notebook
Published by yehuda-eterman-classiq 9 months ago
classiq-library - Classiq 0.82.0
Released on 2025-06-03.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- In Quantum Program visualization, engine-level (grey) boxes are flattened when they are single children.
- Jupyter Notebook
Published by skis31 9 months ago
classiq-library - Classiq 0.81.0
Released on 2025-05-26.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Deprecations
- The Qmod function
allocate_numis deprecated and will no longer be supported starting on 16/06/2025 at the earliest. Instead, useallocatewhich supports the same parameters.
- Jupyter Notebook
Published by nivclassiq 9 months ago
classiq-library - Classiq 0.80.0
Released on 2025-05-19.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
Value range analysis of arithmetic expressions is now generalized to apply across statements, optimizing quantum variables sizes and arithmetic expressions implementation in more cases.
Quantum functions inside a control statement get a
c-prefixAdded the functions
prepare_dicke_stateandprepare_dicke_state_unary_input.A new exponentiation function, sparsesuzukitrotter, has been added to the core library, performing Suzuki-Trotter decomposition using a sparse representation of the Hamiltonian. It is recommended to use this function instead of
suzuki_trotterwhen you handle a sparse Hamiltonian, as it is more efficient.Include
classiq.executionin the top levelclassiqpackage in the SDK.Old:
from classiq.execution import ExecutionPreferencesNew:
from classiq import ExecutionPreferencesallocatenow supports specifying numeric attributes of the allocated variable.
- Jupyter Notebook
Published by nivclassiq 9 months ago
classiq-library - Classiq 0.79.1
Released on 2025-05-15.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Bug Fixes
- Fix a system bug that caused execution jobs to fail with an "insufficient resources" message.
- Fix a bug related to execution parameters.
- Jupyter Notebook
Published by ravidalon 9 months ago
classiq-library - Classiq 0.79.0
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
- Jupyter Notebook
Published by ohadClassiq 10 months ago
classiq-library - Classiq 0.78.0
Released on 2025-05-05.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
A new
IQAEapplication has been added to the SDK. It allows you to defineiqaeproblems in terms of Qmod function, and directly estimate the amplitude of the state you prepared.It is recommended to use this application in
iqaeproblems, rather thancmainwith the primitiveiqae.
Bug Fixes
- Fixed an issue where the “Basic” view was always empty; it now correctly renders the circuit as intended.
- Fixed bugs causing several example models to not be supported in the "New" circuit visualization, including "Shor's Algorithm Modular Exponentiation".
- Jupyter Notebook
Published by yehuda-eterman-classiq 10 months ago
classiq-library - Classiq 0.77.0
Released on 2025-04-28.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
In Qmod's Python embedding, you can now declare quantum functions with classical parameters of Python builtin types such as
int,float, andlist. These variables can be used in expressions that require Python values, such as Pythonforloops and 3rd party library functions, as is shown in the example below. See more on this under the new reference page on Generative Descriptions[comment]: DONOTTEST
python @qfunc def rotate(ratio: float, qa: QArray[QBit]): for i in range(qa.len): # 'qa.len' is a Python integer PHASE(math.asin(ratio * i), qa[i]) # 'ratio*2' evaluates to a Python float
Interface Changes
- With Enhancement 1 described above, Python-type parameters supersede classical Qmod-type parameters
in generative functions. Hence, the use of the function decorator
@qfunc(generative=True)is no longer required. Qmod-type parameters are treated symbolically in Python, and their use in Python expressions is deprecated.
Classiq IDE
- Improved UX in Quantum program visualization: collapsing a Quantum operation block will scroll the viewport into the parent operation block position
- Jupyter Notebook
Published by skis31 10 months ago
classiq-library - Classiq 0.76.0
Released on 2025-04-21.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- It is now legal to out-of-place assign to a variable whose declared size is larger than the minimal size required to fit the range of possible expression values.
Interface Changes
The function
synthesizenow returns an object of typeQuantumProgram, and its fields can be accessed directly. The typeSerailizedQuantumProgramand methodQuantumProgram.get_qprogare no longer needed, they are deprecated and will be removed in a future version.Email Service Update - We've replaced the Community button with a new dropdown menu. Users can now select "Contact Us", which opens a form. Once the form is submitted with user details, an email is sent directly to Classiq.
Layout Fixes - Resolved an issue with inconsistent padding across the layout to ensure a cleaner, more polished UI.
Enhanced Sharing Options - In addition to existing platforms, users can now share content to LinkedIn and Reddit with a single click.
- Jupyter Notebook
Published by nivclassiq 10 months ago
classiq-library - Classiq 0.75.0
Released on 2025-04-08.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Classiq Studio Updates
Added a new command reset-user-env to reset the virtual environment to its default state
helping resolve dependency issues and clean up installations.
Classiq IDE
Added a "User Terms" button inside the IDE website at the bottom of the screen, and clicking on it opens a modal displaying our user terms.
Enhancements
When estimating using the ClassiqSimulatorBackendNames.SIMULATOR_STATEVECTOR backend,
whether using the ExecutionSession or classical main, compute the expectation
value directly from the state vector instead of running shots.
- Jupyter Notebook
Published by ohadClassiq 11 months ago
classiq-library - Classiq 0.74.0
Released on 2025-03-31.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Interface Changes
- The functions
construct_qsvm_model,construct_finance_model, andconstruct_grover_modelhave been removed from the SDK. Check out our Qmod implementations of the QSVM, finance, and Grover algorithms on the Classiq library.
Enhancements
-
QuantumProgramobjects have been optimized to be significantly leaner, improving performance across all actions that handle them. - Visualizing Quantum Programs is now significantly faster.
Quantum Program Visualization
- Auto-expand QMOD statements without expressions (e.g.
power). - Statements with quantum expressions now display their corresponding expression directly on the block.
- Jupyter Notebook
Published by skis31 11 months ago
classiq-library - classiq 0.73.0
Released on 2025-03-24.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Interface Changes
- The functions
construct_qsvm_model,construct_finance_model, andconstruct_grover_modelhave been removed from the SDK. Check out our Qmod implementations of the QSVM, finance, and Grover algorithms in the Classiq library.
Enhancements
- Hardware-aware synthesis is now available for Garnet target through Amazon Braket.
- Enhanced the performance of execution jobs polling mechanism.
- Added validation for max qubit count for Nvidia backend.
- Jupyter Notebook
Published by yehuda-eterman-classiq 11 months ago
classiq-library - Classiq 0.72.0
Released on 2025-03-18.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- Add new execution backends
BRAKET_NVIDIA_SIMULATORandBRAKET_NVIDIA_SIMULATOR_STATEVECTOR. These simulators run on Amazon Braket's infrastructure and provide faster execution for single circuits. See Execution on Classiq Backends for more information. - Improve
prepare_amplitudesandprepare_stateperformance forbound=0. - Add
RESET, an atomic function that resets a qubit to the|0>state. - Intel simulator is now available as a backend for execution. See Cloud Providers section in the user guide.
- Jupyter Notebook
Published by yafithaftzadi 11 months ago
classiq-library -
Released on 2025-03-10.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
IDE Updates
- Models page is now open to non-signed-up users.
Classiq Studio Updates
- Trust Classiq Library workspace by default.
- Jupyter Notebook
Published by ohadClassiq 12 months ago
classiq-library - Classiq 0.70.0
Released on 2025-02-26.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- Improve depth and gate count for transpilation options "intensive" and "custom".
- Improve the synthesis of the
suzuki_trotterfunction for small hamiltonians.
Bug Fixes
- Fixed a bug where arithmetic expressions that classically evaluate to constant boolean values could not be used.
- Fixed a bug where using the
showfunction in the Python SDK would open the IDE with a "Not Authorized" error. - Fixed a bug where certain operations in the Quantum Program visualization are displayed with very long name that describes the operation's hierarchy.
- Jupyter Notebook
Published by yehuda-eterman-classiq 12 months ago
classiq-library - Classiq 0.69.0
Released on 2025-02-17.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- Improve the synthesis of the
molecule_uccfunction for small molecules. - Introduce a new QMOD core-library function
commuting_paulis_exponent.
Support
- Error messages now include a link to our support system for reporting bugs or opening support tickets. You can also reach us on our Slack community channel.
- Jupyter Notebook
Published by yafithaftzadi about 1 year ago
classiq-library - Classiq 0.68.0
Released on 2025-02-11.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- Arithmetic assignments and control conditions now support quantum subscript
expressions.
A quantum subscript expression comprises a classical list accessed by a quantum
subscript, e.g.,
x |= subscript([1, 2, 3, 4], y)(in Native Qmod:x = [1, 2, 3, 4][y];). - Report an indicative error when not releasing local variables inside control, invert and power statements.
- When estimating using the
ClassiqSimulatorBackendNames.SIMULATOR_STATEVECTORbackend, compute the expectation value directly from the state vector instead of running shots. This is especially helpful when running VQE. - In the Python SDK, arguments of type
CArraycan now be NumPy arrays, tuples, and similar sequential objects. For example, the following statements are equivalent:prepare_state([0.25, 0.25, 0.25, 0.25], 0, q)andprepare_state(np.ones(4) / 4, 0, q).
Interface Changes
- The
synthesizeandwrite_qmodfunctions now accept a quantum entry point. Instead ofsynthesize(create_model(main)), writesynthesize(main).
- Jupyter Notebook
Published by yafithaftzadi about 1 year ago
classiq-library - Classiq 0.67.0
Released on 2025-02-02.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- Unreleased local variables of a function are now un-computed and released when calling the function under a compute block of a Within-apply statement.
Bug Fixes
- Fix control optimization for constant equality conditions
(e.g.,
control(x == 1, ...)) producing wrong circuits under certain conditions. - Fix in-place XOR optimization for classical values (e.g.,
x ^= -0.5) producing wrong circuits under certain conditions. - Fix in-place XOR optimization for Boolean expressions
(e.g.,
x ^= (y > 0) & (z > 0)) producing wrong circuits under certain conditions. - Fix a bug causing an internal error in arithmetic expression that use comparison,
subtraction, or negation (e.g.
x > 0.3,0.2 - x,-x) when synthesizing models with the machine precision set to higher than 8.
- Jupyter Notebook
Published by classiqRoi about 1 year ago
classiq-library - Classiq 0.66.1
Released on 2025-01-27.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Library Additions
- Add the functions
amplitude_amplificationandexact_amplitude_amplificationto the function library.
- Jupyter Notebook
Published by ohadClassiq about 1 year ago
classiq-library - Classiq 0.66.0
Released on 2025-01-20.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- The
num_qubitsargument of functionallocateis now optional. If it is not specified, it is inferred automatically according to the quantum type of the allocated variable. Example:
python
q = QBit()
allocate(q) # allocates one qubit for variable 'q'
- The
executeparameter of theQLayerobject is now optional. Example:
python
QLayer(quantum_program, post_process)
Deprecations
The simulator name "nvidiastatevectorsimulator" has been removed. Please use ClassiqNvidiaBackendNames.SIMULATOR or "nvidiasimulator" instead.
IDE Changes
- The Application Configuration Panel used for editing examples in the Built-in Apps folder has been removed.
- Patched dependencies: Katex.
- Jupyter Notebook
Published by yafithaftzadi about 1 year ago
classiq-library - Classiq 0.65.1
Released on 2025-01-06.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- The name argument of local quantum variables
is now optional. If a name is not specified, it is inferred automatically from
the Python code. For example, it is now possible to write
q = QBit()instead ofq = QBit("q"). - Improve the performance of executing multiple primitives inside one
ExecutionSession, such as inexecute_qaoa.
Deprecations
Function prepare_int and inplace_prepare_int are now deprecated. Use Qmod out-of-place
and in-place numeric assignment statements instead. For example, instead of prepare_int(5, my_qnum),
write my_qnum |= 5.
See more under numeric assignments.
- Jupyter Notebook
Published by ravidalon about 1 year ago
classiq-library - Classiq 0.64.0
Released on 2024-12-29.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- Improve error messages.
Bug Fixes
- Fix quantum bits raising an error when used in in-place assignments
(
^=and+=). - Fix quantum struct field access raising an error in lambdas.
IDE Improvements
- Classiq Thumbnail: Updated the Classiq thumbnail image!
- Links on the IDE model page now directing to Classiq Library.
- Modify the Quantum Programs URL so that the circuit ID is embedded in its path
New Visualization:
Compact View:
- Clean up variable names in engine blocks.
- Corrected the spacing miscalculation for junction dots.
- Refined padding before allocation
- Hide labels in open functional blocks to create a more space-efficient display.
- Removed unnecessary dots and labels for low-level QC elements.
- Jupyter Notebook
Published by ravidalon about 1 year ago
classiq-library - Classiq 0.63.1
Released on 2024-12-26.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
- Jupyter Notebook
Published by ravidalon about 1 year ago
classiq-library - Classiq 0.63.0
Released on 2024-12-23.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- Generative functions have undergone a round of significant improvements. Check out our DQI notebook to see how generative functions are used to implement advanced quantum algorithms.
- A new filed
optimization_levelhas been added thePreferencesof the synthesis. This field determines the trade-off between synthesis speed and the quality of the results, In terms of the optimization parameter and the constraints. For more information, see here. - State vector filtering is available. This is an important step for simulating large circuits with a state vector simulator. For more information, see this page
Bug Fixes
- Fix usage of overlapping quantum array slices (e.g.,
qbv[1:3]andqbv[2]) in bodies of lambda expressions and control statements.
- Jupyter Notebook
Published by ravidalon about 1 year ago
classiq-library - Classiq 0.62.0
Released on 2024-12-16.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- Added a new simulator under the Classiq provider, under the name
ClassiqNvidiaBackendNames.SIMULATOR_STATEVECTOR. This simulator runs on a GPU and returns a state vector, similar toClassiqSimulatorBackendNames.SIMULATOR_STATEVECTOR(which runs on a CPU). Thus, it can handle larger circuits. The name"nvidia_state_vector_simulator"is deprecated in favor ofClassiqNvidiaBackendNames.SIMULATOR. See here for more information.
Bug Fixes
- Fix the connectivity map of the
rigetti.qpu.ankaa-9q-3backend in Azure Quantum. - Fix the connectivity map of Amazon Braket devices.
- Fix a bug in the method
from_idofExecutionJob.
Deprecations
- Parameters
valueandtargetof functionsinplace_addandinplace_xorhave been renamed toexpressionandtarget_varrespectively.- In Native Qmod, use
+=and^=instead ofinplace_addandinplace_xorrespectively.
- In Native Qmod, use
IDE
- QMOD examples on the Model page now contain direct links to their respective tutorials in the Classiq documentation. Simply hover over an algorithm list item from the QMODs list in the left panel and a tooltip will appear with link to the relevant tutorial.
New Visualization:
- Captured variables are now shown as uninitialized.
- Jupyter Notebook
Published by ravidalon about 1 year ago
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_lcufor efficiently encoding QSVT polynomials with indefinite parity. - Subsequent invocations to execution primitives inside
ExecutionSessionnow 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 https://github.com/Classiq/classiq-library/pull/611
- remove old action by @classiqdor in https://github.com/Classiq/classiq-library/pull/625
- rename workflows by @classiqdor in https://github.com/Classiq/classiq-library/pull/631
- push quantum challange deleted by @NadavClassiq in https://github.com/Classiq/classiq-library/pull/641
- add classiq paper codes by @TomerGoldfriend in https://github.com/Classiq/classiq-library/pull/642
- Release 0.61.0 by @nivclassiq in https://github.com/Classiq/classiq-library/pull/644
Full Changelog: https://github.com/Classiq/classiq-library/compare/0.60.0...0.61.0
- Jupyter Notebook
Published by yafithaftzadi about 1 year ago
classiq-library - Classiq 0.60.0
Released on 2024-11-28.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Interface Changes
ExecutionSessionneeds 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.
- Jupyter Notebook
Published by nivclassiq about 1 year ago
classiq-library - 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.
- Jupyter Notebook
Published by ravidalon about 1 year ago
classiq-library - 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 displayurl in show(circuit, displayurl) to True.
- Jupyter Notebook
Published by classiqRoi over 1 year ago
classiq-library - Classiq 0.56.0
Released on 2024-10-31.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
New Features
- Add an optional
elseblock to thecontrolstatement.
Bug Fixes
- Fix Pauli feature map circuit visualization.
- Add missing
lenproperty toQConstants of typeCArray(Qmod/Python).
- Jupyter Notebook
Published by classiqRoi over 1 year ago
classiq-library - 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, andinplace_addare equivalent to the operators|=,*=,^=, and+=respectively except that they can be used in operands (Python lambda functions):
python
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
valueandtargetof functionsinplace_addandinplace_xorhave been renamed toexpressionandtarget_varrespectively. Parametersvalueandtargetwill no longer be supported starting on 02/12/24 at the earliest.
Bug Fixes
- Solve a within-apply bug.
- Jupyter Notebook
Published by classiqdor over 1 year ago
classiq-library - 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] ^= 1andmy_Struct.field += 2.5). - Optimize the controlled version of QFT arithmetic implementations by skipping controlling the QFT and QFT dagger.
- Jupyter Notebook
Published by classiqdor over 1 year ago
classiq-library - 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
@qfuncs that support Python control flow, integration with third-party libraries, and debugging. - Execution using IBM devices is available again.
- New method
estimation_costinExecutionSessionevaluates 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
SampledStatesupports dot-notation for field access when representing a quantum struct:
python
struct_sample = sample.state["my_qstruct"]
field_sample = struct_sample.my_field
Library Additions
Add two new functions for encoding classical data,
encode_in_angleandencode_on_bloch. See notebook.Add a new example for hybrid classical-quantum neural network. See notebook.
Interface Changes
- Parameter
controlof built-in functions such asCXhas been renamed toctrl. Parametercontrolwill 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
when
machine_precisionis 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.
- Jupyter Notebook
Published by classiqdor over 1 year ago
classiq-library - 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_modeset toFalsehas 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_precisionis set. - Removing the non-gate-based devices from the available AWS Bracket devices.
- Fix
n ^= 1assignments wherenhas 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
Pydanticpackage dependency has been upgraded from version 1 to version 2. If you are using an older version ofPydanticin the same environment as our SDK, this may lead to compatibility issues. Note that installing or upgrading the SDK will also update yourPydanticversion to V2. It is recommended to verify compatibility across your environment.
- Jupyter Notebook
Published by classiqdor over 1 year ago
classiq-library - 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_precisionis 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.
- Jupyter Notebook
Published by ravidalon over 1 year ago
classiq-library - Classiq 0.50.0
Released on 2024-09-23.
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).
- Jupyter Notebook
Published by ravidalon over 1 year ago
classiq-library - Classiq 0.49.0
Released on 2024-09-16.
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).
Bug Fixes
- Raise indicative error when circuit cannot be visualized.
- Fixed synthesis of arithmetic operations nested in a within-apply statement
when
machine_precisionis set.
- Jupyter Notebook
Published by amir-naveh over 1 year ago
classiq-library - Classiq 0.48.0
Released on 2024-09-10.
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- Improved error messages.
- Added
SIGNEDandUNSIGNEDbuilt-in constants to improve readability of QNum types. SDK:QNum[4, SIGNED, 1]. Native:qnum<4, SIGNED, 1>. QNumtypes can specify just the size property. SDK:QNum[4]andQNum("n", 4). Native:qnum<4>. Such types are unsigned (is_signed=False) integers (fraction_digits=0) by default.- Execution on remote providers is no longer subject to any time limit when using
ExecutionSessionor executing models without classical execution code. Note: simulation on Classiq backends is still subject to time limit. - In-place add operations (
inplace_add) now support signed variables.
Bug Fixes
- Fixed an operand-related bug. Might occur when calling a function recursively
in one of its operands (for example:
foo(lambda: foo(...))). - Fixed an expression-related bug. Might occur when using the same variable in multiple expressions.
- Fixed in-place XOR operations (
^=/inplace_xor) in the presence of signed variables. The sign variable is now interpreted as part of the significand without special treatment. - Fixed synthesis of arithmetic operations nested in a within-apply statement.
Interface Changes
- SDK: Deprecated parameter names in built-in operations were removed.
control(ctrl=..., operand=...)=>control(ctrl=..., stmt_block=...)within_apply(compute=..., action=...)=>within_apply(within=..., apply=...)power(power=..., operand=...)=>power(exponent=..., stmt_block=...)invert(operand=)=>invert(stmt_block=...)
Library Additions
- Added a new notebook for solving the Differential equation using the HHL Algorithm, to simulate war games.
- Jupyter Notebook
Published by amir-naveh over 1 year ago
classiq-library - Classiq 0.47.0
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- Cancelling an execution job will now result in cancellation of any ongoing jobs sent to the provider during the execution. For more information, see Cancellation.
Library and Documentation
- A new tutorial on the Oblivious Amplitude Amplification algorithm was added.
SDK
- The Classiq SDK now supports Python 3.12.
- Jupyter Notebook
Published by amir-naveh over 1 year ago
classiq-library - Classiq 0.46.0
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- Improve synthesis performance in unconstrained large models by lowering circuit width via qubit recycling.
Deprecations
- The Classiq SDK will drop support for Python 3.8 near its end-of-life on October 2024.
- Jupyter Notebook
Published by amir-naveh over 1 year ago
classiq-library - Classiq 0.45.0
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- Add
sizeattribute to quantum variables:
=== "SDK"
[comment]: DO_NOT_TEST
``` python
@qfunc
def main(my_struct: Output[MyStruct]) -> None:
allocate(my_struct.size, my_struct)
```
=== "Native"
```
qfunc main(output my_struct: MyStruct) {
allocate(my_struct.size, my_struct);
}
```
- Jupyter Notebook
Published by amir-naveh over 1 year ago
classiq-library - Classiq 0.44.0
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Bug Fixes
- Fixed a bug related to nested control operations.
- Fixed a bug related to boolean arithmetic expressions with invert.
- Fixed a bug related to arithmetic expressions inside within-apply.
IDE
- Add back improved circuit nodes search.
- Fix bug in Quantum Program page .qprog file extensions uploads.
- New Quantum Program export option: Quantum programs can now be exported as .qprog files.
- Poll all active jobs in the job list, not just the selected job.
- Add support for Alice & Bob hardware configurations in the IDE.
- Add support for QCtrl API key configuration in IBM hardware settings.
Enhancements
- Add support for arithmetic boolean expressions as conditionals for control statements; see here.
- Add quantum structs.
- The element type of quantum arrays can be any quantum type. N-dimensional quantum arrays are supported.
- Operand parameter names are optional in both Native
(
qfunc (indicator: qbit)->qfunc (qbit)) and Python (QCallable[QBit]->QCallable[Annotated[QBit, "indicator"]]) Qmod. - Improve error messages.
- Provide better circuits for certain boolean arithmetic expressions.
- Improved qubit reuse and runtime performance for model without constraints.
- Add
solovay_kitaev_max_iterationsfield to the synthesis preferences, allowing for tuning the accuracy of the Solovay-Kitaev algorithm. - Built-in classical functions to decompose/compose a matrix into/from a Hamiltonian. Example of usage:
=== "SDK"
[comment]: DO_NOT_TEST
``` python
mat = np.array([[0, 1, 2, 3], [1, 4, 5, 6], [2, 5, 7, 8], [3, 6, 8, 9]])
hamiltonian = matrix_to_hamiltonian(mat)
mat = hamiltonian_to_matrix(hamiltonian)
```
- parsedstates, parsedcounts, parsedstatevector will contain the parsed execution details as lists if a quantum array was used in the model.
=== "SDK"
[comment]: DO_NOT_TEST
``` python
@qfunc
def main(qna: Output[QArray[QNum[3, True, 0]]]) -> None:
allocate(6, qna)
hadamard_transform(qna)
qp = synthesize(create_model(main))
res = execute(qp).result()
print(res[0].value.parsed_counts[0])
```
previously this would print -> state={'qna': 43} shots=27 now it prints -> state={'qna': [-2, 3]} shots=27
Library and Documentation
- A new tutorial on Hamiltonian simulation for block-encoded Hamiltonians, using QSVT and Qubitization, was added to the library; see here.
- A new tutorial on solving the discrete Poisson's equation using the HHL algorithm, combined with quantum sine and cosine transforms, was added to the library; see here.
- New state preparation functions -
prepare_unifrom_trimmed_state,prepare_unifrom_interval_state, see here. - Enhanced the Discrete logarithm example to the case where the order is not power of 2, see here.
- Updated the Quantum Types documentation page.
Interface Changes
- Some builtin operations parameters have been renamed:
control(ctrl=..., operand=...)=>control(ctrl=..., stmt_block=...)within_apply(compute=..., action=...)=>within_apply(within=..., apply=...)power(power=..., operand=...)=>power(exponent=..., stmt_block=...)invert(operand=)=>invert(stmt_block=...)
Deprecations
- SDK: The
@structdecorator has been removed. Define classical structs using@dataclass. - The field
varianceinEstimationResultis deprecated, and will be populated with the value-1until removed. - The field
timeout_secinExecutionPreferences, and the fieldjob_timeoutinAwsBackendPreferences, have been removed. - classical arguments in the native language are now inside the parentheses
section (
(...)) alongside quantum variables and not inside the angle brackets (<...>), the angle brackets section is now considered deprecated. For example, you should migrate:qfunc <a: real> main{...}->qfunc main(a: real) {...}for info refer to the language reference about functions. A Warning was added to the IDE in the case it is used.
- Jupyter Notebook
Published by classiqdor over 1 year ago
classiq-library - Classiq 0.43.0
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically. Please note that you might need to clear your cache after the version update. See this guide for help.
Enhancements
- Support signed quantum numerics in in-place-xor assignments (
^=). - Support quantum array subscripts in quantum expressions.
- Support quantum numeric arrays.
- Improve synthesis performance.
- Apply an automatic qubit reuse pass when the model is unconstrained.
- Add user-defined enums.
=== "Native"
```
qfunc main(output res: qbit) {
allocate<1>(res);
qnv: qnum<2, False, 0>[]; // quantum numeric array
allocate<6>(qnv);
repeat (i: qnv.len) { inplace_prepare_int<i + 1>(qnv[i]); }
res ^= qnv[0] + qnv[1] == qnv[2]; // array subscripts in expressions
}
```
=== "Python"
[comment]: DO_NOT_TEST
```python
@qfunc
def main(res: Output[QBit]) -> None:
allocate(1, res)
qnv: QArray = QArray("qnv", element_type=QNum[2, False, 0]) # quantum numeric array
allocate(6, qnv)
repeat(qnv.len, lambda i: inplace_prepare_int(i + 1, qnv[i]))
res ^= qnv[0] + qnv[1] == qnv[2] # array subscripts in expressions
```
Interface Changes
- The classical scope in Qmod no longer supports function definitions.
- The
aer_simulator,aer_simulator_statevector,aer_simulator_density_matrix, andaer_simulator_matrix_product_stateClassiq backends are no longer accessible in the SDK. Usesimulator,simulator_statevector,simulator_density_matrix, andsimulator_matrix_product_stateinstead. - The
@structdecorator is deprecated and will be removed in a future release. Use@dataclassinstead.
Bug Fixes
- Fixed a bug where multiple in-place assignment statements resulted in a
22102error. - Fixed a bug where using the same variable in
controloperation for both the control operation and the body resulted in a non-indicative error. - Fix
invertandwithin-applyvariable initialization tracking in native Qmod. - Fix division with classical symbolic variables.
- Fix rogue comma inserted to the chemistry model classical execution code after IDE form update.
- Fix reporting uninitialized quantum variables in arithmetic expressions as undefined.
- Fix double execution on devices requiring access tokens.
- Fix execution configuration being applied only to the first selected device, when one of the selected devices requires an access token.
- Fix a bug where Grover circuit was incorrect when reflecting about states different than uniform superposition.
- Fix a synthesis bug that could appear in models that constrain the width and optimize depth or vice versa.
IDE
- Graphical Model tab redesign of nodes (Function call, Output, Assignment).
- Restructure of node categories (Graphical Model).
- Fix countries list not loading sometimes during registration.
- Prevent QMOD editor from crashing when compiler crashes.
- Redesigned the Accordion and Icon status for jobs.
- Quantum Program tabs moved to the left drawer.
- Uploading Quantum Program can now be done using the Upload button on the left drawer.
- 3 newly introduced tabs of Quantum Program data: Transpiled Info, Program Info, Data.
Library Additions
- A new technology demonstration notebook, treating a discrete quantum walk on a circle, was added to the library; see here.
- New rainbow options pricing notebooks in the public repository research folder.
- Jupyter Notebook
Published by classiqdor over 1 year ago
classiq-library - Classiq 0.42.0
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Bug Fixes
- Fixed an error related to the translation of certain circuits between synthesis and execution.
- Fixed an error when calling a function with local variables multiple times.
Enhancements
- HHL workshop was added to the public repository and to the User Guide.
- It is now possible to use the execution primitives
estimateandvqewith models with multiple output ports. The hamiltonian should match all the output ports by their order. - Amplitude encoding assignments (
ind *= foo(n)) support all quantum numeric variables, not only unsigned fractions. - Add support for lookup tables in amplitude encoding assignments, e.g.,
ind *= [0, 0.5, 0.5, 1][n]wherenis an unsigned quantum integer (ind *= subscript([0, 0.5, 0.5, 1], n)in the SDK). - A quantum COSINE and SINE transforms of types I and II were added to the open library, see Quantum COSINE and SINE Transforms.
- New algorithm was added to the library: "Variational Quantum Linear Solver (VQLS) with Linear Combination of Unitaries (LCU) Block Encoding" Variational Quantum Linear Solver
Alice & Bobprovider is now accessible.
Interface Changes
compute_qaoa_initial_pointis now exposed in the SDK directly fromclassiqpackage.from classiq import compute_qaoa_initial_point- The examples in IDE Flow page are replaced with a new arithmetics example.
Bug Fixes
- Properly evaluate type attributes in
main.- Native Qmod:
qnum's sign field can be specified with lowercasetrue/falseinmain's signature.
- Native Qmod:
- Fix execution results received from running on Amazon Braket to be correct when the measured outputs are not all of the variables of the model.
- Improve language error reporting.
IDE
- Uniform drawer width for all pages
- New way to trigger node options context menu on Graphical Model page: node options menu can now be triggered by right-clicking a selected node
- Jupyter Notebook
Published by classiqdor over 1 year ago
classiq-library - Classiq 0.41.0
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancement
- Hardware-aware synthesis
will now use the Solovay-Kitaev algorithm to approximate
single-qubit gates when the basis gate set is a specific variation of
Clifford + T (
X,Z,H,T,CX, andCCX). qsvtfunction was added to the function library. See Quantum Singular Value Transformation.- A tutorial on discrete quantum walks was added to the tutorials library. See Discrete Quantum Walk.
- SDK: Quantum functions (
@qfunc) can be recursive. - SDK: PauliTerm can be used to declare a hamiltonian.
python
hamiltonian = [
PauliTerm(pauli=[Pauli.I], coefficient=1),
PauliTerm(pauli=[Pauli.Z, Pauli.X], coefficient=2),
]
6. Introducing ExecutionSession which will allow choosing the execution
primitive in the SDK
without the need of changing/synthesizing the quantum program once again.
```python model = createmodel(main) qprog = synthesize(model) preferences = ExecutionPreferences(numshots=1200) execution_session = ExecutionSession(qprog, preferences)
# if the quantum program does not need any execution paramters: execution_session.sample()
# if the quantum program needs execution parameters: execution_session.sample({"phi": 1})
# if multiple samples are needed: executionsession.batchsample([{"phi": 1}, {"phi": 2}, {"phi": 3}])
# if an estimation is needed without execution parameters: hamiltonian = [ PauliTerm(pauli=[Pauli.I], coefficient=1), PauliTerm(pauli=[Pauli.Z], coefficient=2), ] execution_parameters.estimate(hamiltonian)
# if an estimation is needed with execution paramters: execution_parameters.estimate(hamiltonian, {"theta": 1})
# if multiple estimations are needed: executionparameters.batchestimate(hamiltonian, [{"theta": 1}, {"theta": 2}]) ```
- A Qmod library reference, with usage examples for built-in and open library functions, can now be found in Qmod Library Reference.
Interface Changes
- SDK: In
execute_qnn, the optional argumentobservablesof typePauliOperatorshas been replaced with the optional argumentobservableof typePauliOperator. - Documentation: The structure and content have the classiq documentation have been changed signficantly with the following new structure:
The old User Guide chapter from the previous documentation can be found in the new Reference Manual.
Deprecations
- SDK: The
quantum_ifoperation and the oldcontrolsyntax have been removed.
quantum_ifis removed. Usecontrolinstead.control(operand, ctrl)is no longer supported. Usecontrol(ctrl, operand)instead.control(n, operand)does not support quantum numeric variables (n). Instead, use abindoperation to castninto a quantum array, or comparento an integer explicitly (e.g.,n == 7).
- SDK: The
QParamtype has been removed.
- Instead of
QParam[int], useCInt. - Instead of
QParam[float], useCReal. - Instead of
QParam[bool], useCBool. - Instead of
QParam[List[...]], useCArray[...]. - Instead of
QParam[Array[..., size]], useCArray[..., size].
Native Qmod: Accessing quantum variable properties (e.g.,
qbv.lenorn.is_signed) via function call syntax (len(qbv),is_signed(qbv)) is no longer supported.The field
optimizer_preferencesofExecutionPreferenceshas been removed.The function
set_initial_valueshas been removed.
IDE
- "Slack" and "Learn More" links were moved from the side drawer to the IDE header. New links were added as well: Community, User Guide.
- Allow visualization of larger circuits and prolong the timeout for visualization
- Users can now download a LaTeX format of their quantum programs directly from the IDE, allowing for easy sharing, publication, and presentation of their work.

- Cookies settings are now available to adjust the given consent at any time.
Bug fixes
- "selected example not found" error when opening the IDE
- Resetting now clears preferences form instead of initializing from cache on the model page
- Naming for exported files on the Graphical Editor
- State vector measurement results ordering
- Parameter names in lambda expressions don't have to match the parameter names in operand declarations:
=== "Native"
```
qfunc my_H(qb: qbit) {
H(qb);
}
...
apply_to_all<my_H>(qba); // used to throw an error since "qb" != "target"
```
=== "Python"
[comment]: DO_NOT_TEST
```python
@qfunc
def my_H(qb: QBit) -> None:
H(qb)
...
apply_to_all(my_H, qba) # used to throw an error since "qb" != "target"
```
- Jupyter Notebook
Published by classiqdor over 1 year ago
classiq-library - Classiq 0.40.0
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Interface Changes
- The
controlandquantum_ifstatements have been unified into one statement in native QMOD and the SDK under the namecontrol.- SDK: The unified
controlstatement accepts a qbit (q), a q-array (qbv), or a comparison of a qnum and an integer (n == 5) as the first argument. - SDK: The old
controlsyntax (withctrlas the second argument) is deprecated and will be removed in the next release. - SDK: The
quantum_ifoperator is deprecated and will be removed in the next release. - Native QMOD:
quantum_ifis no longer supported, use the newcontrolstatement instead.
- SDK: The unified
- SDK: The
QParamandArraytypes are deprecated and will be removed in the next release.- Instead of
QParam[int], useCInt. - Instead of
QParam[float], useCReal. - Instead of
QParam[bool], useCBool. - Instead of
QParam[List[...]], useCArray[...]. - Instead of
QParam[Array[..., size]], useCArray[..., size].
- Instead of
- SDK: Using Python types (
int,bool, etc.) in struct declarations (@struct) is deprecated and will not be supported by the next release. Instead, use classical data types (CInt,CBool, etc., see above). - Default timeout for sending jobs to AWS changed from 5 minutes to 4 hours.
Deprecations
- The error mitigation settings in the execution preferences are no longer available.
- The
aer_simulatorbackend has been removed. Use Classiq's simulator backend instead (ClassiqSimulatorBackendNames.SIMULATOR).
Enhancements
- Improved error messages.
Bug fixes
- Fixed a bug preventing execution of circuits synthesized with hardware aware synthesis on Azure and IonQ.
- Jupyter Notebook
Published by classiqdor over 1 year ago
classiq-library - Classiq 0.39.0
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancements
- Improved the native QMOD syntax of the
repeat,ifstatements. For details, see Classical Control Flow. - Improved the native QMOD syntax of the
control,power, andinvertstatements. For details, see Quantum Operators. - Added the
classiq.execution.all_hardware_devices.get_all_hardware_devicesfunction to the Python SDK.
Deprecations
- In the SDK, the
classiq.analyzer.analyzer.Analyzer.get_available_devicesmethod is deprecated. Useclassiq.execution.all_hardware_devices.get_all_hardware_devicesinstead.
Interface Changes
- The
lenmethod forQArray,QCallableList, andQParamof lists, is now a property. use.leninstead of.len().
- Jupyter Notebook
Published by classiqdor over 1 year ago
classiq-library - Classiq 0.38.0
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Overview
Release 0.38 achieves a major milestone in the migration to the new QMOD language. The following general changes are now in effect:
- In the IDE, Synthesis page is now removed. Writing and synthesizing models is now done exclusively in the Model page.
- All pre-defined models previously available in the Synthesis page in Json format are now available in the Model page in native QMOD syntax.
- Many QMOD language enhancements were introduced to enable the coding of all available models and applications, in both native QMOD and in its Python embedding (see detailed list below).
- A new QMOD reference manual, covering all the language concepts and constructs in both input formats, is available QMOD-language-reference.
- Documentation content covering old input formats - the Json input and the old SDK classes - has been removed
Language and SDK Enhancements
- Native QMOD now supports classical POD struct declaration, initialization, and member access.
- Native QMOD now supports within-apply statements.
- Native QMOD now supports generalized in-place quantum assignment.
- Add method
parsed_counts_of_outputsto sample's result in the Python SDK, see sample. - Constants can now be used in the
qmod-python integration with theQConstantclass. - Native QMOD now supports global constants.
- The quantum numeric type can now receive sign and fraction digits as type arguments in parameter declarations, in both the SDK and native QMOD.
- Native QMOD example:
qnum<5, True, 2>to indicate a 5-bit signed number with 2 fraction digits. - SDK examples:
QNum[5, True, 2]to indicate a 5-bit signed number with 2 fraction digits (as a function argument)QNum("x", 5, True, 2)to indicate a 5-bit signed number with 2 fraction digits (as a local variable)
- Native QMOD example:
- The amplitude encoding flavor of quantum arithmetic (
*=operator) is now an in-place operation in both the SDK and native QMOD.
Interface Changes
- The
QStructdecorator was renamed tostructin theqmod-python integration. - The
qfuncdecorator is renamed toquantum_function. The newerQFuncandExternalQFuncdecorator are now available asqfuncandqfunc(external=True). Using either classes as a decorator is deprecated, and this feature may be removed in a future release. - Similarly, a new
cfuncdecorator is now available, and using the classCFuncas a decorator is deprecated and may be removed in the future. - Renamed
GeneratedCircuittoQuantumProgramin the SDK. - The
QNumtype does not accept size argument without sign and fraction digits. QNumon the right-hand side ofbindstatements must have sign and fraction digits (inferred from initialization or declaration).- The Following async methods were removed from
Analyzerclass (The documented methods without theasyncsuffix are still available and can be used instead):get_available_devices_asyncanalyzer_app_asyncplot_hardware_connectivity_asyncget_hardware_comparison_table_async
- The method
show_multiple_hardware_datawas removed fromRBAnalysisclass. The async equivalentshow_multiple_hardware_data_asynccan be used instead. - Removed
reinterpret_numoperation (instead useQNum/allocate_numarguments). - Removed
splitandjoinoperation (instead usebindoperation).
- Jupyter Notebook
Published by classiqdor over 1 year ago
classiq-library - Classiq 0.30.0
Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Enhancement
- The
SuzukiTrotterfunction now accepts parameters as coefficients for itspauli_list. - The
SuzukiTrotterfunction now has adisable_schedulingoption to disable the reordering of Pauli terms. - There is a new
QDriftHamiltonian evolution function.
Interface Changes
- Add the Classiq Provider as an execution backend preference. It contains the AER backends, that used to be inside IBMBackendPreferences, as well as the Nvidia simulator, which used to be in NvidiaBackendPreferences. See Classiq Provider
- Deprecate the NvidiaBackendPreferences.
- Python SDK: Change annotations of input and output
QVartypes -InputQVar[...]is now writtenInput[QVar[...]], and likewise forOutput.
- Jupyter Notebook
Published by classiqdor over 1 year ago