The Signal
Qiskit 2.6 Brings Custom Compiler Passes to Its C API
Qiskit 2.6 adds C API support for custom compiler passes, circuit serialization and user-defined quantum operations. The release also makes QPY v18 the default and advances IBM’s effort to reduce the SDK’s reliance on Python.

Quantum.world Team · Written with AI · fact-checked ·
IBM’s Qiskit team published its v2.6 release summary on Oct. 22, describing a compiler stack that exposes more of its machinery through a C API. The SDK’s 2.6.0 release went out on Oct. 16; a 2.6.1 patch followed on Oct. 22. The main addition is not a new quantum algorithm but a set of tools for building and moving quantum programs from compiled-language environments.
“Qiskit v2.6 is, above all, a C API release,” the Qiskit Team writes in its IBM Quantum release summary. The update lets C API users define compiler passes, compose type-checked pipelines across intermediate representations, serialize circuits in QPY and add custom operations without relying on Python’s object model.
Pass managers move into the C API
Earlier C API support let developers build circuits and run Qiskit’s preset transpilation pipeline. Version 2.6 adds a framework for writing and composing custom passes through a QkPassManager. Each pass declares the intermediate representation it accepts and produces, allowing the manager to check that the stages in a pipeline fit together.
The built-in representations currently include QkCircuit and QkDag; developers can also define their own. That structure gives a program a route through multiple representations as compilation progresses, rather than limiting C API users to a single preset workflow. The feature builds on the multi-representation compiler work introduced in v2.5.
QPY carries circuits between languages
Qiskit’s QPY binary format is now available through the C API. Programs can write circuits to a file or memory buffer and load them back without a Python round-trip; the resulting files remain compatible with Python’s qiskit.qpy interface. That opens a path for compiled-language programs to save circuits between runs or prepare files for later Python analysis.
Version 2.6 also makes QPY format v18 the default. Its register encoding can reduce file sizes, with the largest gains expected for circuits containing very large registers or many classical registers. Older Qiskit versions may not load files written in v18, so users who need backward compatibility can select an earlier format version when dumping a circuit.
Custom operations do not need Python objects
The release also lets C API users define operations, including custom gates, and add them to circuits or directed acyclic graphs. A custom operation uses a vtable to provide behaviors such as its name, qubit count and definition. Only the name and number of qubits are required; omitted optional behaviors receive defaults.
That gives developers a way to represent hardware-native gates directly in a circuit without creating Python operation objects. The C API’s potential reach extends beyond C itself: IBM describes access from C++, Julia or Fortran through their C foreign-function interfaces.
Python is still a dependency for now
Qiskit 2.6 advances work to remove Python’s installation requirement from the standalone C library, but does not complete it. The library does not start the Python interpreter in standalone mode, yet it still needs Python installed because parts of Qiskit’s Rust data model refer to Python types. IBM says it aims to finish removing that linker dependency in v2.7.
Other upgrade details matter for maintainers: v2.6 keeps Python 3.10 as its minimum, but it is the final Qiskit version to support that release; v2.7 will require Python 3.11 or newer. Building from source now requires Rust 1.89, while users installing prebuilt wheels are unaffected. IBM also says the C API is not yet declared stable, although the changes between v2.5 and v2.6 are additive.
The Oct. 22 patch fixes four issues
The same-day Qiskit 2.6.1 patch addresses four reported fixes: safer handling of interior null bytes in CString::new in the C extension, corrections to two-qubit decomposer Python wrappers, a mimalloc build setting and preservation of control state in power operations for three controlled gates. The patch leaves the main compiler additions of v2.6 intact.
For developers choosing when to adopt the new interfaces, the release has a clear boundary: the C API now supports custom compiler pipelines and circuit serialization, but IBM has not yet marked that interface stable. Teams using QPY across versions must also account for v18 files, and projects on Python 3.10 will need to move to a newer interpreter before Qiskit 2.7.