Upgrade Instructions
- Python SDK
- The IDE upgrades automatically.
Bug Fixes
- Fixed incorrect gate arguments in
QuantumProgram.qasm. Also affects simulation whentranspilation_option=TranspilationOption.NONE.
Enhancements
- The Python SDK now collects telemetry to help us improve our product. This can be disabled by setting the environment variable
CLASSIQ_TELEMETRY_MODE=disabled.
Bug Fixes
- fix an issue with nvidia-gpu worker, where it would fail on initialization
Interface Changes
-
The pretty_qasm field was removed from
Preferences. OpenQASM 2 outputs are now always formatted with line breaks inside gate declarations (the previous default behavior). -
ExecutionSessionnow accepts individual configuration parameters directly:ExecutionSession(qprog, backend=..., num_shots=..., random_seed=..., transpilation_option=..., run_via_classiq=..., config=...). Theexecution_preferences=keyword form still works but is deprecated and will be removed on 2026-06-22.
Enhancements
- Improved QP Visualization Support: Quantum program visualizations can now display much larger circuits and operations. The maximum number of child operations that can be expanded at once has been increased from 1,000 to 2,500. This means large composite gates, functions, and generated code blocks will now expand and render fully, improving visibility and debugging for more complex circuits.
Bug Fixes
CombinatorialProblem: Fixed aKeyErrorraised when an inequality constraint became degenerate (collapsed to a single feasible value) after another constraint had fixed one of its variables.
Enhancements
- GitHub Copilot Integration: Added support for GitHub Copilot in Classiq Studio, including chat-based AI assistance, coding agent features, and code autocomplete. These features are now available in the browser-based IDE experience.
Bug Fixes
- Restored the Studio button to its original location in the left sidebar of the IDE.
Enhancements
- Faster synthesis for models containing very large hamiltonian objects.
- Added support for the C12 provider when using
sample,observe, and related functions withbackend='c12/<backend_name>'. - Added support for large-scale models by uploading/downloading execution and synthesis inputs/outputs directly to S3 via pre-signed URLs, bypassing payload size limitations.
Bug Fixes
prepare_amplitudes/inplace_prepare_amplitudes: Fixed a wrong global phase that affected the controlled version for some amplitude vectors.- QP Visualization: Improved robustness of the QP Visualization feature by adding webGPU/webGL context loss recovery, preventing blank screens when the graphics context is lost.
Enhancements
- Studio:
latexmkand a TeX Live subset are now pre-installed, enabling the benchmarking application from the Classiq library to generate its PDF report directly in the Studio.
Bug Fixes
- Fix an issue where most models saved with older SDK versions cannot be synthesized.
Enhancements
ExecutionSession.sampleandExecutionSession.estimate: These methods now accept a list of parameter dictionaries for batch execution, returning a list of results. The dedicatedbatch_sample,submit_batch_sample,batch_estimate, andsubmit_batch_estimatemethods are deprecated — pass a list to the standard methods instead.variational_minimizefunction: Added a new publicvariational_minimizefunction for variational optimization of a cost function over the parameter values of a quantum program. Supports Hamiltonian and classical cost functions,run_via_classiq, and improved input validation. See the SDK reference for details.- Added
slice(array, start, stop)inclassiq.qmod.symbolicas the Python alternative for array slice expressions on Python lists, analogous tosubscript. classiq.print_diagnostics(): New function that prints a snapshot of the SDK version, Python environment, backend host and version, authentication status, and user ID - for easy inclusion in support tickets.
Bug Fixes
- Execution: Sample jobs started with
execute()now persist submitted-circuit metadata soExecutionJob.get_submitted_circuits()matches the documented behavior. - Studio - Light mode not saved for users preferences
- IDE - Synthesize button keeps showing and disappearing
- Fix synthesis of nested concatenations in control condition.
API Changes
- The
thetaparameter of functionphasewas renamed tocoefficient. The old name is deprecated and will no longer be supported starting on 2026-05-04 at the earliest. - Function
randomized_benchmarkingis deprecated and will no longer be supported starting on 2026-05-11 at the earliest.
Enhancements
samplefunction: Added a new top-levelsamplefunction for executing a quantum program and retrieving results as a DataFrame directly, without managing a job object. Supports single and batch execution — pass a list of parameter dictionaries toparametersto run multiple parameter sets and receive a list of DataFrames. Also supportsrun_via_classiq=Trueto run using Classiq’s provider credentials against your allocated budget. See the SDK reference for details.observefunction: Added a new publicobservefunction that computes the expectation value of a Hermitian observable with respect to a quantum program’s output state. Supports exact statevector calculation or shot-based estimation, batch execution, andrun_via_classiq. See the SDK reference for details.get_backend_detailsfunction: Added aget_backend_detailsfunction that returns a DataFrame of all supported quantum backends, including provider, backend name, type (hardware or simulator), qubit count, availability, pending jobs, and queue time.calculate_state_vectorfunction: Added a new publiccalculate_state_vectorfunction that returns the full state vector of a quantum program as a DataFrame. Supports batch execution by passing a list of parameter dictionaries. Available on Classiq simulators (e.g.classiq/simulator).minimizefunction: Added a new publicminimizefunction for variational optimization of a cost function over the parameter values of a quantum program. Supports Hamiltonian and classical cost functions,run_via_classiq, and improved input validation. See the SDK reference for details.- OpenQASM in
sampleandExecutionSession: You can pass OpenQASM 2.0 or 3.0 source as a string tosample()(first argument) or toExecutionSessioninstead of a synthesizedQuantumProgram. Results use the same histogram DataFrame shape (bitstring,counts, etc.). Theparametersargument is not supported for OpenQASM strings (use aQuantumProgramfor Qmodmainparameters, or bind parameters inside the QASM circuit). See the Execution section of the user guide. - Improve error messages related to qfunc arguments.
- Add
emulateonAzureBackendPreferencesto enable IonQ hardware noise simulation on Azure Quantum when using an IonQ QPU target (ionq.qpu.*); ignored for other Azure targets. - Add a QSVM application with a
QSVMclass that providestrain,test, andpredictmethods for easy implementation of Quantum Support Vector Machine training and data classification. The relevant notebooks in the classiq-library will be updated accordingly.
Enhancements
- Upgrade infrastructure to enable future support in AWS Marketplace.
Enhancements
- IBM execution – emulate: Add optional
emulateonIBMBackendPreferencesandIBMConfig. Setemulate=True(defaultFalse) to run on Classiq AerSimulator with an IBM noise model derived from the backend name (e.g.ibm_pittsburgh,ibm_boston). Only valid for real IBM hardware backends (not fake backends); backend name must be inCLASSIQ_NOISE_MODELS. See IBM backends for details. - Add
ExecutionJob.get_submitted_circuits()to return the final quantum circuits submitted to the provider (sample jobs only). The returned circuits reflect the actual QASM after transpilation and parameter assignment. Each circuit can be converted to QASM viato_qasm()or to a QiskitQuantumCircuitviato_qiskit(). - Amplitude threshold for state vector simulation: Added
amplitude_thresholdtoExecutionPreferences. When running state vector simulation, only states with amplitude magnitude strictly greater than the threshold are included in the result. Defaults to0(filters exactly zero-amplitude states, same as before). Setting a higher threshold reduces the size of the result for circuits where most amplitudes are negligibly small.include_zero_amplitude_outputs=Trueoverrides this and includes all states regardless of amplitude. See State Vector Filtering for details. - QP Visualization: Fixed bug in the visualization of split operations
- Add
estimate_sample_costandestimate_sample_batch_costto the Python SDK for user-facing cost estimation before executing quantum programs. These functions return aCostEstimateResultwithcostandcurrencyfields. See SDK execution reference for details.
Bug Fixes
- Fix error messages when calling built-in operations with the wrong number of arguments.
- IonQ execution: Replaced explicit
noise_modelwith anemulateflag onIonqBackendPreferencesandIonQConfig. Setemulate=True(defaultFalse) to run on the IonQ simulator with a noise model derived from the backend name (e.g.qpu.aria-1→aria-1). Only valid when the backend is a QPU. See IonQ backends for details. - QLayer check-pointing: Prefer saving only weights with
torch.save(model.state_dict(), path)andmodel.load_state_dict(torch.load(path)). For whole-model save/load, ifpost_processis not picklable it is omitted and a warning is logged; after load calllayer.register_post_process(your_post_process)before using the model. New constructor optionserializable_post_process=Falseskips picklingpost_processand suppresses the warning when you know it is not serializable. - Add
estimate_sample_costandestimate_sample_batch_costto the Python SDK for user-facing cost estimation before executing quantum programs. These functions return aCostEstimateResultwithcostandcurrencyfields. See SDK execution reference for details.
Bug Fixes
- Execution –
transpilation_level = None: When execution is run with no transpilation, the circuit is now submitted to the provider without any backend transpilation when it already uses only the provider’s basis gates. If the circuit contains gates not supported by the provider, an error is raised that lists the provider’s supported gates, the invalid gates in the program, and suggests usingtranspilation_level = "decompose"(ortranspile_to_hardware = "decompose"in ExecutionPreferences). - Re-enable negative indices for classical arrays.
- Fix user not getting redirected to login page when they try to synthesize but are logged out
- IDE - result page - change exported csv to be identical to shown tables
- QLayer: Fix saving models that contain a
QLayerwhenpost_processor the execution path use local functions or lambdas (e.g.torch.save(model, path)or saving an epoch state dict). Such callables are now omitted from the pickled state and re-created or restored after load so that save/load no longer raises “Can’t pickle local object”. - Add indicative error message when calling a classical function with quantum arguments in an arithmetic expression.
Enhancements
- Predefined noise models for Classiq simulators: Add optional
noise_modelonClassiqBackendPreferencesto run Classiq Aer, Nvidia, and Braket Nvidia simulators with a device-style noise model. The value is a predefined name in the form<provider>_<target>(e.g.ibm_pittsburgh,ibm_boston). Supported names are listed inCLASSIQ_NOISE_MODELS; initially IBM backend names are supported. The noise model is built from the provider (e.g. via IBM Runtime) and passed to the underlying AerSimulator. - IonQ execution: Replaced explicit
noise_modelwith anemulateflag onIonqBackendPreferencesandIonQConfig. Setemulate=True(defaultFalse) to run on the IonQ simulator with a noise model derived from the backend name (e.g.qpu.aria-1→aria-1). Only valid when the backend is a QPU. See IonQ backends for details. - QLayer check-pointing: Prefer saving only weights with
torch.save(model.state_dict(), path)andmodel.load_state_dict(torch.load(path)). For whole-model save/load, ifpost_processis not picklable it is omitted and a warning is logged; after load calllayer.register_post_process(your_post_process)before using the model. New constructor optionserializable_post_process=Falseskips picklingpost_processand suppresses the warning when you know it is not serializable.
Bug Fixes
- Fix an incorrect compilation when an arithmetic operation appears
inside a
repeatstatement and the left-hand side uses the repeat index as a subscript. - Change default vendor from Azure to Classiq
Enhancements
-
Added
use_double_precisiontoClassiqBackendPreferencesto control numerical precision on Nvidia and Braket Nvidia simulators. Default isFalse(single precision). Setuse_double_precision=Truefor double precision. See Classiq backends for details. -
Removed
max_depthandmax_gate_countfromConstraints. These fields were deprecated since 0.52 and are no longer supported.
Bug Fixes
- Fix a bug causing an internal error during synthesis when calling a function containing
foreachtwice or more.
Enhancements
- Updated the Classiq Platform home page.
Enhancements
- The function
poly_inversionnow supportserror_type("relative"default or"uniform") to choose between minimizing relative error |xp(x)-1| or absolute uniform error |p(x)-1/x| over x in [1/kappa,1]. The sameerror_typeoption is also available inpoly_inversion_degreeandpoly_inversion_error. - Add the foreach statement to Qmod. Foreach iterates efficiently through the elements of a classical array.
- Support
QBits in addition toQNums inlookup_table.
API Changes
- Renamed
sampletocmain_samplein legacycscope. This does not affect any usage of ExecutionSession.
Enhancements
- Introduce CUDA-Q Integration, enabling translation of synthesized Qmod programs into Python CUDA-Q kernels, to leverage CUDA-Q’s high-performance simulation and hybrid quantum–classical workflows.
Bug Fixes
- Fix compilation of symbolic values in concatenations (for example,
[q[i], q[j]]whereiandjare of typeCInt).
API Changes
- Rename parameter
run_through_classiqofBackendPreferencestorun_via_classiq.run_through_classiqis deprecated and will no longer be supported starting on 2026-03-09 at the earliest.
Bug Fixes
- IDE - Phase legend mismatches actual phase
- Fix compilation of the
I(identity) gate. - Fix evaluation of constants in
mainfunction parameter types. - Remove previously deprecated
"count"column from execution result dataframe. Use"counts"column instead.
Enhancements
- IDE - Adjustments to the table shown in “State Vector” jobs
- IDE - Add table in “Measurement Results” jobs
- Noise models are now available for IonQ Simulators.
Enhancements
- Reduce CX count and circuit depth for multi-controlled Pauli rotations (RX, RY, RZ).
Enhancements
- IDE - Improve the appearance of the histograms / bar-plots shown for results
- IDE - Improve native Qmod library usability
- Classiq Studio - Added support for light mode visualization in the Quantum Program (QP) visualizer within Classiq Studio. Users can now switch between light and dark themes for an improved viewing experience.
- C12 Cloud is now available. See Cloud Providers section in the user guide.
Bug Fixes
- Fixed error message for a measurement under unitary context.
Enhancements
- Support array subscripts with missing slices (e.g.,
arr[1:]andarr[:9]) in Python Qmod. - Add qmod_to_qubit_op function to convert from SparsePauliOp to OpenFermion’s QubitOp data structure.
Bug Fixes
- IDE - Fix selection in Quantum Program Execution Jobs tab - Make the first job on the jobs list be selected
- Fix synthesis of functions with
Outputquantum parameters called underinvert.
Bug Fixes
- IDE - Fix expand / collapse of backend details in the HW Catalogue
- In the dataframe, change the
countfield tocountsso as not to override the built-incountmethod on pandas dataframes. The currentcountfield is deprecated and will be removed in the next release. - Fix multi-value Boolean operations in Native Qmod (e.g.,
a or b or c). - Fix synthesis error when controlling
Xwith >=13 control qubits. - Raise indicative errors when overriding internal functions (for example, when re-defining
prepare_state).
Enhancements
- Support
QArray[QBit]assignment statements, for example,qarr |= [1, 0, 0, 1]. - Improve implementation of in-place quantum subscript assignments (e.g.,
x ^= subscript([1, 2, 3, 4], y)). - IDE - Execution in the IDE now supports running through Classiq account for Amazon Braket, Microsoft Azure Quantum, and IonQ backends. Authorized users can enable this option using the “Run through Classiq” switch, which eliminates the need to provide their own credentials for these backends. This feature also includes spending tracking and budget management capabilities.
- Support assignments of non-scalar variables, for example,
qarr1 |= qarr2. Both variables must have the same type. - Improve error message when assigning a symbolic value to a generative parameter.
Deprecation
- IDE - Removed support for
max depthandmax gate countsynthesis constraints in the model
Interface Changes
- Violations of uncomputation rules are now flagged as errors instead of warnings.
- The function
qubit_op_to_pauli_termsin thechemistrymodule is deprecated due to incorrect order of qubits in its result. Please usequbit_op_to_qmodinstead.
Bug Fixes
- Resolved an issue with labeling CX gate inputs in QP visualization, so that the correct qubit labels are now displayed.
- Fixed
qfuncs being expanded declaratively (symbolically) when passed as arguments to otherqfuncs. - Improved the error message for type errors with function arrays.
- Fixed error message for
nanvalues. - Fix mapping from output registers to measured qubits on parametrized repeat circuits with HW aware synthesis.
- Fix
phaseapplied with an execution parameter under multiple controls. - Fix
unscheduled_suzuki_trotterandqdriftimplementations. - Fix SDK function get_execution_actions
- Flattened the cost field. The result holds now cost, currency_code
- Add session_id in the result
- Fix compilation of unused variables defined in nested blocks.
Studio
- Classiq Studio now includes built-in AI integration, allowing users to generate, optimize, and execute quantum models directly within the Studio. This capability leverages Classiq’s quantum resources and requires no external API tokens.
Enhancements
- Add quantum modular arithmetic functions to the open library, enabling modular quantum operations:
modular addition, multiplication, squaring, negation, and inversion:
modular_add_inplace,modular_double_inplace,modular_negate_inplace,modular_multiply,modular_square,modular_multiply_constant,modular_multiply_constant_inplace,modular_to_montgomery_inplace,modular_montgomery_to_standard_inplace,modular_inverse_inplace,kaliski_iteration, andmodular_rsub_inplace. - Change precision of GPU simulators to single-precision to make better use of hardware.
- Add functions
get_execution_actionsandget_execution_actions_asyncreturn a pandas DataFrame of execution actions. Filter by id, session_id, status, name, provider, backend, program_id, cost range (total_cost_min/max), and time ranges (start_time_min/max, end_time_min/max). All filters are combined with AND logic. - Add functions
get_synthesis_actionsandget_synthesis_actions_asyncreturn a pandas DataFrame of synthesis actions. Filter by id, status, backend, program_id, backend_name, optimization_parameter, random_seed, max_width, max_gate_count, cost range (total_cost_min/max), and time ranges (start_time_min/max, end_time_min/max). All filters are combined with AND logic.
Bug Fixes
- Fix uncomputation of function calls with input or output concatenations.
- Fix within-apply bug caused by variable declarations nested in the “within” block.
Interface Changes
- Function
exponentiation_with_depth_constraintis deprecated and will no longer be supported starting on 2025-12-10 at the earliest. Instead, useexponentiate.
Enhancements
- Add functions for encoding conversions between binary, unary, and one-hot representations:
binary_to_one_hot,binary_to_unary,one_hot_to_unary,one_hot_to_binary,unary_to_one_hot,unary_to_binary,inplace_binary_to_one_hot, andinplace_one_hot_to_unary. - Change precision of GPU simulators to single-precision to make better use of hardware.
Bug Fixes
- Fixed a bug in Hardware-Aware Quantum Program.
- Fixed concatenations arguments to input and output quantum parameters.
IDE
- Fixed a bug in Jobs page after Executing on several hardwares.
- Added a better labeling in the QP visualization. Now on “Show label” user will see label as on the closed box. On hover user will see full label.
- Fixed issue with duplicate error snackbar in the Jobs page.
IDE
- Basis Gates field under “Hardware Aware” now starts empty. If left empty, synthesis applies default basis gates automatically based on connectivity; select one or more gates to override.
Interface Changes
Enhancements
- Add functions for getting polynomial approximations for common use cases -
poly_jacobi_anger_<>for Hamiltonian Simulation andpoly_inversionfor matrix inversion.
Bug Fixes
- Fix an issue that caused certain execution runs to fail due to incompatible gates
Enhancements
- Qmod now supports automatic uncomputation of local variables and enforces rules that guarantee their correct uncomputation. Similar rules are enforced on variables initialized inside a within-apply statement. For more details, see Uncomputation. Currently, violations of uncomputation rules are issued as warnings for backward compatibility. These will become compilation errors no earlier than 2025-12-03.
-
Add the
assign_amplitude_tableandassign_amplitude_poly_sinopen-library functions, to replace the*=operator and theassign_amplitudefunction. -
Add
unscheduled_suzuki_trotter, a variant ofmulti_suzuki_trotterthat doesn’t re-order the Pauli terms. - Improve synthesis of controlled phase with theta=pi.
- This release includes initial support of classical local variables, assignment of mid-circuit measurements, and runtime if statements. Currently, only variables of type QBit can be measured, and only the classical bool type is supported for local variable declaration and assignment. This enables simple algorithms such as the quantum teleportation protocol. These constructs have the corresponding dedicated graphics in the quantum program visualization. See more details under Classical variables) and Mid-circuit measurement.
Interface Changes
- The
*=operator and theassign_amplitudefunction are deprecated and will no longer be supported starting on 2025-12-03 at the earliest. Useassign_amplitude_tableinstead. - Function
qdriftnow receives a sparse Hamiltonian (SparsePauliOp) instead of a list of non-sparse Pauli terms (CArray[PauliTerm]). Non-sparse pauli terms inqdriftwill no longer be supported starting on 2025-12-03 at the earliest.
Bug Fixes
- Fix
multi_suzuki_trottersynthesis with symbolic evolution coefficients raising an internal error. - Fix a bug where an internal error is raised when synthesizing with a maximum width constraint a model that contains control on a function, or a statement block, that allocates and frees qubits.
Security
- Internal dependencies have been upgraded to address security vulnerabilities.
Bug Fixes
- Fix transpilation and execution of
unitaryfunctions when compiling to QASM2.
Enhancements
- We’ve changed our AWS Braket integration, now AWS credentials consist of an access key ID and a secret access key. For more information, see AWS Credentials.
- Added the function
prepare_selectfor the definition of structured Linear Combination of Unitaries primitive (LCU) schemes.
Bug Fixes
- Report assignments into non-numeric variables.
- Fix concatenation operator on single variable not casting to QArray.
- Fix lambda list (
QCallableList) scoping issue causing a bug when a lambda list item is invoked in a different lambda. - Fix error which caused execution jobs on IonQ to fail if they took more than 5 minutes.
Deprecations
- Python 3.9 is no longer supported in the Python SDK. The minimum supported version is now Python 3.10.
Enhancements
- Added the
skip_controlstatement to the Qmod language.skip_controlapplies a quantum statements unconditionally. - Add
pauli_operator_to_matrix, the sparse counterpart ofhamiltonian_to_matrix. - Add new quantum functions for modular arithmetics:
modular_add_qft_space,modular_multiply, andinplace_modular_multiply. Those functions useskip_controlstatements for specifying their efficient controlled version.
Bug Fixes
- Fix a bug where an error is raised when synthesizing with a maximum width constraint, even though a solution exists.
- Fix
qasm_to_qmodquantum argument size calculations (resulting in, for instance, illegalcontrolstatements generated frommcxgates).
Deprecations
- SDK versions below 0.92 will be deprecated as planned from October 13, 2025 (at the earliest). As a one-time exception, the version deprecation error message will not be as usual. Instead of “You are using an unsupported version of Classiq SDK—… “, users will experience a “504 Gateway Timeout ERROR” or a similar message. We apologize for the inconvenience.
Bug Fixes
- Fix a bug where an internal error occurred during hardware-aware synthesis with a basis gate set of Clifford + T.
- Fix
allocatewith floating-point size when themax_widthconstraint is set.
Classiq Studio Updates
- A progress bar was added to the classiq studio start up page.
Deprecations
- Python version 3.9 will no longer be supported starting on 2025-10-01 at the earliest.
Enhancements
- The new
qasm_to_qmodfunction de-compiles QASM 2 or 3 into Python/Native Qmod source code. - Added methods for execution budget management.
- Classiq’s AI agent is now installed in Classiq Studio, providing seamless AI-powered quantum development. See the AI documentation for setup instructions.
- Remove negligibly small amplitudes from state vectors when the auxiliary (non-output) qubits are non-zero. These amplitudes are caused by numeric error during simulation, but they result in multiple states with the same assignment for the variables, which caused confusion.
- Added several Quantum Signal Processing (QSP) related functions to the SDK:
qsvt_phasesfor obtaining QSVT phases,qsp_approximatefor approximating QSP-compatible Chebyshev polynomials,gqsp_phasesfor calculating Generalized-QSP (GQSP) phases, and a quantumgqspfunction that implements GQSP. To use these functions the user shouldpip install classiq[qsp]. The existing QSVT examples and a new GQSP example will be updated in the library towards the next version release.
Bug Fixes
- Fix a bug where the visualization generated unnecessary variable splits and assigned incorrect variable names in certain cases.
- Support classical functions in the cost expression of
minimize. - Prevent invisible blocks from being collapsed.
- Adjust CZ gate boundaries to align with disconnected variable lines.
- Fix Studio loading stuck until page reload.
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.
Enhancements
- Add magnitude and phase to the dataframe for state vector simulations.
- Increase the limit of the number of qubits that can be simulated on Classiq’s Simulator from 25 to 28. Note that wider circuits take longer to simulate, so Classiq’s Nvidia Simulator will likely have improved performance for wide/deep circuits. Also, increase the limit on Classiq’s State Vector Simulator to 28 qubits, as long as State Vector Filtering reduces the number of output (unfiltered) qubits to 18 or less, the previous limit. For example, it is now possible to get the state vector from a quantum program of 20 qubits with a 2-qubit QNum filtered out.
- Add support for bitwise operators in phase statements.
Documentation Enhancements
- A new tutorial on execution is now available under The Classiq Tutorial
- New explanations on visualization features in the Synthesis Tutorial
- Search results have been improved to show the most relevant information at the top.
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(..., ...).
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
Enhancements
- Added the function
prepare_linear_amplitudesfor preparing the state . - 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.
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.
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
-
Deprecation: QP Visualization Basic View Mode
-
Visualization: Focused Search
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.
Enhancements
-
Added new chemistry functions to
the Python SDK for using Hartree-Fock and UCC ansatz in Qmod. In order to
use them, it is required to install the Python SDK with the extra
chemistrydependency. - Qmod functions are represented with a single symbolic definition throughout the compilation process when their use of classical parameters allows it. This improves compilation time and output QASM code size in many cases.
-
Added a new function,
multi_suzuki_trotter, that applies the Suzuki-Trotter decomposition jointly to a sum of Hamiltonians. -
Added a new syntax for specifying sparse Hamiltonians (
SparsePauliOp) in Qmod’s Python embedding. For example:0.5 * Pauli.Z(0) * Pauli.Y(1) * Pauli.X(2) + 0.8 * Pauli.X(1). Check out the documentation for more details. -
Added a
dataframeproperty to ExecutionDetails object. Example usage: -
Added a new execution primitive
ExecutionSession.minimizethat encapsulates classical optimization of ansatz parameters. The cost function to minimize is specified either as a quantum observable (Hamiltonian) or an arithmetic expression. This offers a significant performance advantage compared to executing the same logic on the client side, as it eliminates communication overhead. Note that it utilizes a fixed generic minimization scheme (scipy-COBYLA). In non-trivial cases, you may still need to implement your own optimization logic. - The total size of quantum structs can be retrieved using the new
__PROTECTED_0__ class attribute
QStruct.Interface Changes
- Function
sparse_suzuki_trotterwill no longer be supported starting on 21/7/25 at the earliest. Instead, usesuzuki_trotter. - Function
parametric_suzuki_trotterwill no longer be supported starting on 21/7/25 at the earliest. Instead, usemulti_suzuki_trotter. - Function
suzuki_trotternow receives a sparse Hamiltonian (SparsePauliOp) instead of a list of non-sparse Pauli terms (CArray[PauliTerm]). Non-sparse pauli terms insuzuki_trotterare deprecated, useSparsePauliOpinstead. ExecutionSession’sestimatemethods now accept a sparse Hamiltonian (SparsePauliOp) instead of a list of non-sparse Pauli terms (CArray[PauliTerm]). Non-sparse pauli terms inExecutionSessionwill no longer be supported starting on 21/7/25 at the earliest. UseSparsePauliOpinstead.
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. - Width constraints are now treated more systematically for optimization levels 0-2 (partitioning the model into separate synthesis steps), yielding solutions in cases where previously no solution was found. See more under Optimization Level.
Interface Changes
- The type
SerailizedQuantumProgramand methodQuantumProgram.get_qprogare no longer available.
Fixes
- Removed the “Login required” error message when not authenticated
Enhancements
- In Quantum Program visualization, engine-level (grey) boxes are flattened when they are single children.
Deprecations
- The Qmod function
allocate_numis deprecated and will no longer be supported starting on 16/06/2025 at the earliest. Instead, use
__PROTECTED_0__
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-prefix -
Added the functions
prepare_dicke_stateandprepare_dicke_state_unary_input. -
A new exponentiation function, sparse_suzuki_trotter,
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:New: -
allocatenow supports specifying numeric attributes of the allocated variable.
Bug Fixes
- Fix a system bug that caused execution jobs to fail with an “insufficient resources” message.
- Fix a bug related to execution parameters.
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.
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.
IQAE application Descriptions
iqae problems, rather than cmain
with the primitive iqae.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”.
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
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
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.
Classiq Studio Updates
Added a new commandreset-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 theClassiqSimulatorBackendNames.SIMULATOR_STATEVECTOR backend,
whether using the ExecutionSession or classical main, compute the expectation
value directly from the state vector instead of running shots.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.
- Added the functions
prepare_complex_amplitudesandinplace_prepare_complex_amplitudes.
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.

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
- Improve
controlstatement visualization to distinguish control qubits from target qubits.
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.
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.
UI Fixes
- Updated the Quantum program icon in the drawer to a newer version
New Features
We’re launching Classiq Studio!
Classiq Studio is a web-based coding environment where you can write and run Python code in a pre-configured setup. Access it now via the Classiq Platform. For details, see the Classiq Studio user guide.Enhancements
- Improve the synthesis of the
molecule_uccfunction for small molecules. - Introduce a new QMOD core-library function
commuting_paulis_exponent. - Social Sharing is now available. You can share circuits to various social platforms.
- Add SLSQP optimizer for use in VQE.
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.
- Fix unexpected resets when using Classiq Studio.
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 running VQE using the
ClassiqSimulatorBackendNames.SIMULATOR_STATEVECTORbackend, compute the expectation value directly from the state vector instead of running shots. - 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).
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
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.
Library Additions
- Add the functions
amplitude_amplificationandexact_amplitude_amplificationto the function library.
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: -
The
executeparameter of theQLayerobject is now optional. Example:
Deprecations
The simulator name “nvidia_state_vector_simulator” has been removed. Please use ClassiqNvidiaBackendNames.SIMULATOR or “nvidia_simulator” instead.IDE Changes
- The Application Configuration Panel used for editing examples in the Built-in Apps folder has been removed.
- Patched dependencies: Katex.
Bug Fixes
- Fix failed execution jobs which stay in “running” status forever instead of reporting an indicative error.
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.
IDE Improvements
Share Quantum Programs with anyone. For more information, see Sharing your Quantum Program Visualization.Deprecations
Functionprepare_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.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.
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.
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.
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.
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.
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.Bug Fixes
- Fix walkthrough bug in the IDE.
- Change the default value of display_url in show(circuit, display_url) to True.
Bug Fixes
Fix a bug causing execution failures on IBM in version 0.56.0.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):
- Support non-equation Boolean expressions as control conditions:
- SDK
- Native
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.
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.
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
Example:
z += x ** 2 - 0.5 * y
5. The state of SampledState supports dot-notation for field access when
representing a quantum struct: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.
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.
Bug Fixes
- Allow the sign qubit of a quantum numeric variable to overlap the fraction
digits (e.g.,
qnum[1, SIGNED, 1]).
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.
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).
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.
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.
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.
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.
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
- parsed_states, parsed_counts, parsed_state_vector will contain the parsed execution details as lists if a quantum array was used in the model.
- SDK
Library and Documentation
- A new tutorial on Hamiltonian simulation for block-encoded Hamiltonians, using QSVT and Qubitization, was added to the library.
- 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.
Enhancements
- Error mitigation can now be enabled or disabled for IonQ through Azure in the SDK. Default is set to False.
IDE
- Fix infinite loop bug in Quantum Program page.
- Fix Quantum Program deletion bug on Quantum Program page.
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.
- Python
- Native
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.
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
Enhancements
- Performance of synthesis has been improved, most significantly for synthesis requests with no constraints.
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.
- Introducing ExecutionSession which will allow choosing the execution primitive in the SDK without the need of changing/synthesizing the quantum program once again.
- A Qmod library reference, with usage examples for built-in and open library functions, can now be found in the function menu.
Interface Changes
- SDK: In
execute_qnn, the optional argumentobservablesof typePauliOperatorshas been replaced with the optional argumentobservableof typePauliOperator.
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:
- Python
- Native
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.
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().
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).