MagicStack / uvloop

Ultra fast asyncio event loop.
Apache License 2.0
10.44k stars 548 forks source link

uvloop fails to build with Python 3.13.0a5: error: implicit declaration of function ‘_Py_RestoreSignals’ #603

Closed befeleme closed 3 months ago

befeleme commented 8 months ago

I try to build uvloop for Fedora Linux 41 with Python 3.13.0a5. The build fails with the information below.

  uvloop/loop.c: In function ‘__pyx_f_6uvloop_4loop_9UVProcess__after_fork’:
  uvloop/loop.c:129617:5: error: implicit declaration of function ‘_Py_RestoreSignals’ [-Werror=implicit-function-declaration]
  129617 |     _Py_RestoreSignals();
         |     ^~~~~~~~~~~~~~~~~~
befeleme commented 6 months ago

_Py_RestoreSignals() has apparently been moved to internal CPython: https://github.com/python/cpython/commit/c9ce983ae1a361f431a0303aeb6f4b8e1d674275

hroncok commented 6 months ago

https://github.com/python/cpython/blob/v3.13.0a6/Modules/signalmodule.c#L1931-L1951

Maybe this can be inlined?

wRAR commented 6 months ago

This one is a warning here on a pyenv-installed 3.13.0b1 (not sure if -Werror=implicit-function-declaration in the original report comes from Fedora defaults or what), but there are multiple actual errors:

      uvloop/loop.c:4446:105: error: invalid type argument of ‘->’ (have ‘int’)
       4446 |     __pyx_assertions_enabled_flag = ! _PyInterpreterState_GetConfig(__Pyx_PyThreadState_Current->interp)->optimization_level;
            |                                                                                                         ^~
[...]
      uvloop/loop.c: In function ‘__Pyx_PyInt_As_int’:
      uvloop/loop.c:177390:27: error: too few arguments to function ‘_PyLong_AsByteArray’
      177390 |                 int ret = _PyLong_AsByteArray((PyLongObject *)v,
             |                           ^~~~~~~~~~~~~~~~~~~
[...]
root-kidik commented 5 months ago

+1