# Import path migration **English** · 简体中文 Release 0.8 moved the implementations into directories organized by responsibility. The common exports of the root package remain available; old module paths are forwarded through a centralized compatibility table and reference the same implementations. New code should use the canonical paths. | Old path | Canonical path | |---|---| | `oracq.ir` | [`oracq.infrastructure.ir`](../api/infrastructure/ir.rst) | | `oracq.builder` | [`oracq.infrastructure.builder`](../api/infrastructure/builder.rst) | | `oracq.validation` | [`oracq.infrastructure.validation`](../api/infrastructure/validation.rst) | | `oracq.serialization` | [`oracq.infrastructure.serialization`](../api/infrastructure/serialization.rst) | | `oracq.linking` | [`oracq.infrastructure.linking`](../api/infrastructure/linking.rst) | | `oracq.execution` | [`oracq.infrastructure.execution`](../api/infrastructure/execution.rst) | | `oracq.native` | [`oracq.infrastructure.native`](../api/infrastructure/native.rst) | | `oracq.layout` | [`oracq.infrastructure.layout`](../api/infrastructure/layout.rst) | | `oracq.readout` | [`oracq.infrastructure.readout`](../api/infrastructure/readout.rst) | | `oracq.backends.originir` | [`oracq.infrastructure.backends.originir`](../api/infrastructure/backends/originir.rst) | | `oracq.backends` | `oracq.infrastructure.backends` | | `oracq.backends.pysparq` | [`oracq.infrastructure.backends.pysparq`](../api/infrastructure/backends/pysparq.rst) | | `oracq.backends.basis` | [`oracq.infrastructure.backends.basis`](../api/infrastructure/backends/basis.rst) | | `oracq.mathfunc.graph` | [`oracq.infrastructure.mathfunc.graph`](../api/infrastructure/mathfunc/graph.rst) | | `oracq.mathfunc.frontend` | [`oracq.infrastructure.mathfunc.frontend`](../api/infrastructure/mathfunc/frontend.rst) | | `oracq.mathfunc.numeric` | [`oracq.infrastructure.mathfunc.numeric`](../api/infrastructure/mathfunc/numeric.rst) | | `oracq.mathfunc.lowering` | [`oracq.infrastructure.mathfunc.lowering`](../api/infrastructure/mathfunc/lowering.rst) | | `oracq.mathfunc` | [`oracq.infrastructure.mathfunc`](../api/infrastructure/mathfunc.rst) | | `oracq.mathfunc.roe_formulas` | [`oracq.applications.roe_formulas`](../api/applications/roe_formulas.rst) | | `oracq.library` | [`oracq.algorithms.input_model.operators`](../api/algorithms/input_model/operators.rst) | | `oracq.combinators` | [`oracq.algorithms.input_model.block_encoding`](../api/algorithms/input_model/block_encoding.rst) | | `oracq.contracts` | [`oracq.algorithms.input_model.contracts`](../api/algorithms/input_model/contracts.rst) | | `oracq.oracles` | [`oracq.algorithms.input_model.oracles`](../api/algorithms/input_model/oracles.rst) | | `oracq.arithmetic` | [`oracq.algorithms.common.arithmetic`](../api/algorithms/common/arithmetic.rst) | | `oracq.sparse_models` | [`oracq.algorithms.input_model.sparse`](../api/algorithms/input_model/sparse.rst) | | `oracq.access` | [`oracq.algorithms.input_model.sparse`](../api/algorithms/input_model/sparse.rst) | | `oracq.qlss` | [`oracq.algorithms.qlss.qlss`](../api/algorithms/qlss/qlss.rst) | | `oracq.algorithms.costa` | [`oracq.algorithms.qlss.qlss`](../api/algorithms/qlss/qlss.rst) | | `oracq.algorithms.cks` | [`oracq.algorithms.qlss.qlss`](../api/algorithms/qlss/qlss.rst) | | `oracq.qode` | [`oracq.algorithms.qode.ode`](../api/algorithms/qode/ode.rst) | | `oracq.qfvm` | [`oracq.applications.qfvm`](../api/applications/qfvm.rst) | | `oracq.qfvm_sparse` | [`oracq.applications.qfvm`](../api/applications/qfvm.rst) | | `oracq.flow_data` | [`oracq.applications.flow_data`](../api/applications/flow_data.rst) | | `oracq.roe` | [`oracq.applications.roe`](../api/applications/roe.rst) | | `oracq.applications` | `oracq.applications.legacy` | | `oracq.workloads` | [`oracq.applications.catalog`](../api/applications/catalog.rst) | | `oracq.qham.pde` | [`oracq.applications.qham.pde`](../api/applications/qham/pde.rst) | | `oracq.qham.linearization` | [`oracq.applications.qham.linearization`](../api/applications/qham/linearization.rst) | | `oracq.qham.reference` | [`oracq.applications.qham.reference`](../api/applications/qham/reference.rst) | | `oracq.qham.quantum` | [`oracq.algorithms.input_model.qham`](../api/algorithms/input_model/qham.rst) | | `oracq.qham` | `oracq.applications.qham` | | `oracq.qham.examples` | [`oracq.applications.qham.examples`](../api/applications/qham/examples.rst) | | `oracq.qham.report` | [`oracq.applications.qham.report`](../api/applications/qham/report.rst) | | `oracq.qham.stencils` | [`oracq.applications.qham.stencils`](../api/applications/qham/stencils.rst) | Package paths without a standalone API page (such as `oracq.infrastructure.backends` and `oracq.applications.qham`) stay as-is; open the API pages of their submodules to inspect them. ## Split-up legacy entry points The query, search, QFT, QPE, and matrix-transform entry points of `algorithms.elementary` moved into `oracle_algorithms`, `search`, `fourier`, `estimation`, and `transforms`, respectively. The concrete methods of `algorithms.differential` moved into `lchs`, `schrodingerization`, `cbmd`, and `carleman`; the general entry point is `ode`, and the PDE adapter is `pde`. The state composition utilities of `algorithms.solvers` moved into `state_preparation`, the Euler history into `ode`, and Trotter into `hamiltonian`. The old factories remain available through the compatibility entries. ## File formats The RIR version is 0.1, and the instruction set and execution semantics are unchanged; the `binding_captures` field newly added to the linker holds provenance information inside the existing scalar-attribute format, and the schema and semantic checks now state its constraints as well. After the module locations and generator compositions of the Python classes changed, module hash names may change; do not use hash names as part of an application protocol. ## Algorithm interface naming and the resource ledger {obj}`AlgorithmContract `, {obj}`QLSSSolver `, and {obj}`QODESolver ` are the new canonical names; {obj}`ProtocolContract `, {obj}`QLSSProtocol `, and {obj}`QODEProtocol ` are kept as same-type aliases. Problem builders accept provider protocols, and the constructed fields still hold concrete role views. The `rotations` of resource estimation changed from a list to a compact read-only sequence. The previous length, indexing, and iteration reads keep working; code that mutated the list directly should read `counts` instead or use the report. In open analyses `qubits` is `None`; known lower bounds are in `qubits_lower_bound`.