Replace pybind11 with nanobind in Catalyst's core #1187
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context: The Catalyst core contains two Python extension modules (importable Python modules written in C/C++):
The Python-C++ bindings were originally implemented using pybind11. This PR is part of a larger effort to replace all pybind11 code with nanobind.
Description of the Change:
This change replaces all the pybind11 code in mlir/python/PyCompilerDriver.cpp with the equivalent nanobind objects and operations.
This change also removes the MLIR python module
QuantumExtension
entirely, along with associated tests and infrastructure, since (a) it depends on upstream MLIR Python bindings written in pybind11: mlir/Bindings/Python/PybindAdaptors.h, which would be quite onerous to port to nanobind, and (b) we do not actually use these dialect extensions, nor do we ship them with our wheels.Benefits:
See Epic 68472 for a list of nanobind's benefits.
[sc-72842]