Skip to content

Classiq 0.38.0

Compare
Choose a tag to compare
@classiqdor classiqdor released this 04 Jul 09:39
· 564 commits to main since this release

Upgrade Instructions

Overview

Release 0.38 achieves a major milestone in the migration to the new QMOD language. The following general changes are now in effect:

  1. In the IDE, Synthesis page is now removed. Writing and synthesizing models is now done exclusively in the Model page.
  2. All pre-defined models previously available in the Synthesis page in Json format are now available in the Model page in native QMOD syntax.
  3. 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).
  4. A new QMOD reference manual, covering all the language concepts and constructs in both input formats, is available QMOD-language-reference.
  5. Documentation content covering old input formats - the Json input and the old SDK classes - has been removed

Language and SDK Enhancements

  1. Native QMOD now supports classical POD struct declaration, initialization, and member access.
  2. Native QMOD now supports within-apply statements.
  3. Native QMOD now supports generalized in-place quantum assignment.
  4. Add method parsed_counts_of_outputs to sample's result in the Python SDK, see
    sample.
  5. Constants can now be used in the qmod-python integration with the QConstant class.
  6. Native QMOD now supports global constants.
  7. 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)
  8. The amplitude encoding flavor of quantum arithmetic (*= operator) is now an in-place operation in both the SDK and native QMOD.

Interface Changes

  1. The QStruct decorator was renamed to struct in the qmod-python integration.
  2. The qfunc decorator is renamed to quantum_function. The newer QFunc and ExternalQFunc decorator are now available as qfunc and qfunc(external=True). Using either classes as a decorator is deprecated, and this feature may be removed in a future release.
  3. Similarly, a new cfunc decorator is now available, and using the class CFunc as a decorator is deprecated and may be removed in the future.
  4. Renamed GeneratedCircuit to QuantumProgram in the SDK.
  5. The QNum type does not accept size argument without sign and fraction digits.
  6. QNum on the right-hand side of bind statements must have sign and fraction digits (inferred from initialization or declaration).
  7. The Following async methods were removed from Analyzer class (The documented methods without the async suffix are still available and can be used instead):
    1. get_available_devices_async
    2. analyzer_app_async
    3. plot_hardware_connectivity_async
    4. get_hardware_comparison_table_async
  8. The method show_multiple_hardware_data was removed from RBAnalysis class. The async equivalent show_multiple_hardware_data_async can be used instead.
  9. Removed reinterpret_num operation (instead use QNum/allocate_num arguments).
  10. Removed split and join operation (instead use bind operation).