Comfy-Org / Comfy-Org/comfy-kitchen

nanobind 3.0 fails with Clang targeting Windows: dllimport vectorcall aliases are not constant expressions

Open
#132 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
220
Forks
91
Avg merge
1d 7h
Merged PRs (30d)
12

Description

nanobind 3.0.0 fails to compile with Clang targeting the Windows/MSVC ABI. The failure occurs in the new vectorcall aliases:

```cpp
inline constexpr ret (*name) args = ⌖
```
On Windows, PyObject_Vectorcall and PyObject_VectorcallMethod are imported functions. Clang does not consider their addresses constant expressions.

The MSVC-compiled CUDA extension succeeds; the same nanobind backend fails when compiled by ROCm Clang.

Pinning nanobind<3 resolves the build failure but is only a WAR that might get lost over time.

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the Windows-targeting ROCm Clang build with nanobind 3.0.0 and inspect the new vectorcall aliases for PyObject_Vectorcall and PyObject_VectorcallMethod. Done means the ROCm Clang extension compiles without pinning nanobind below 3, while the existing MSVC CUDA build still succeeds.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
build-system
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.