storpipfugl / pykdtree

Fast kd-tree implementation in Python
GNU Lesser General Public License v3.0
221 stars 46 forks source link

Enable Python 3.13 wheel building and switch to C17 C standard #124

Closed djhoese closed 2 months ago

djhoese commented 2 months ago

See https://py-free-threading.github.io/debugging/

We were getting:

  In file included from pykdtree/kdtree.c:13538:
  In file included from /Users/runner/miniforge3/conda-bld/pykdtree_1725442308828/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_/include/python3.13/internal/pycore_frame.h:13:
  /Users/runner/miniforge3/conda-bld/pykdtree_1725442308828/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_/include/python3.13/internal/pycore_code.h:540:15: error: expected parameter declarator
    540 | static_assert(COLD_EXIT_INITIAL_VALUE > ADAPTIVE_COOLDOWN_VALUE,
        |               ^
  /Users/runner/miniforge3/conda-bld/pykdtree_1725442308828/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_/include/python3.13/internal/pycore_backoff.h:125:33: note: expanded from macro 'COLD_EXIT_INITIAL_VALUE'
    125 | #define COLD_EXIT_INITIAL_VALUE 64
        |                                 ^
  In file included from pykdtree/kdtree.c:13538:
  In file included from /Users/runner/miniforge3/conda-bld/pykdtree_1725442308828/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_/include/python3.13/internal/pycore_frame.h:13:
  /Users/runner/miniforge3/conda-bld/pykdtree_1725442308828/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_/include/python3.13/internal/pycore_code.h:540:15: error: expected ')'
  /Users/runner/miniforge3/conda-bld/pykdtree_1725442308828/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_/include/python3.13/internal/pycore_backoff.h:125:33: note: expanded from macro 'COLD_EXIT_INITIAL_VALUE'
    125 | #define COLD_EXIT_INITIAL_VALUE 64
        |                                 ^
  /Users/runner/miniforge3/conda-bld/pykdtree_1725442308828/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_/include/python3.13/internal/pycore_code.h:540:14: note: to match this '('
    540 | static_assert(COLD_EXIT_INITIAL_VALUE > ADAPTIVE_COOLDOWN_VALUE,
        |              ^
  /Users/runner/miniforge3/conda-bld/pykdtree_1725442308828/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_/include/python3.13/internal/pycore_code.h:540:1: error: type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit int [-Wimplicit-int]
    540 | static_assert(COLD_EXIT_INITIAL_VALUE > ADAPTIVE_COOLDOWN_VALUE,
        | ^
        | int
  3 errors generated.

Hopefully fixes it, but I need to read more into if we should be doing more to protect against free-threaded Python 3.13.