pydantic / jiter

Fast iterable JSON parser.
https://crates.io/crates/jiter
MIT License
254 stars 19 forks source link

Build fails from Git with Linux 3.14 no-GIL #129

Open clin1234 opened 2 months ago

clin1234 commented 2 months ago
(venv) @clin1234 ➜ /workspaces $ pip install jiter
Collecting jiter
  Using cached jiter-0.5.0.tar.gz (158 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: jiter
  Building wheel for jiter (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for jiter (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [37 lines of output]
      Running `maturin pep517 build-wheel -i /workspaces/venv/bin/python3.14t --compatibility off`
      🔗 Found pyo3 bindings
      🐍 Found CPython 3.14t at /workspaces/venv/bin/python3.14t
      📡 Using build options features, bindings from pyproject.toml
         Compiling target-lexicon v0.12.14
         Compiling once_cell v1.19.0
         Compiling autocfg v1.3.0
         Compiling proc-macro2 v1.0.86
         Compiling pyo3-build-config v0.22.0
         Compiling unicode-ident v1.0.12
         Compiling libc v0.2.155
         Compiling num-traits v0.2.19
         Compiling quote v1.0.36
         Compiling pyo3-macros-backend v0.22.0
         Compiling pyo3-ffi v0.22.0
         Compiling syn v2.0.68
      error: failed to run custom build command for `pyo3-ffi v0.22.0`

      Caused by:
        process didn't exit successfully: `/tmp/pip-install-az1brkny/jiter_141d0b22fd4248418b20e5c69073be19/target/release/build/pyo3-ffi-1e77daa46262542a/build-script-build` (exit status: 1)
        --- stdout
        cargo:rerun-if-env-changed=PYO3_CROSS
        cargo:rerun-if-env-changed=PYO3_CROSS_LIB_DIR
        cargo:rerun-if-env-changed=PYO3_CROSS_PYTHON_VERSION
        cargo:rerun-if-env-changed=PYO3_CROSS_PYTHON_IMPLEMENTATION
        cargo:rerun-if-env-changed=PYO3_PRINT_CONFIG
        cargo:rerun-if-env-changed=PYO3_USE_ABI3_FORWARD_COMPATIBILITY

        --- stderr
        error: the configured Python interpreter version (3.14) is newer than PyO3's maximum supported version (3.13)
        = help: please check if an updated version of PyO3 is available. Current version: 0.22.0
        = help: set PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 to suppress this check and build anyway using the stable ABI
      warning: build failed, waiting for other jobs to finish...
      💥 maturin failed
        Caused by: Failed to build a native library through cargo
        Caused by: Cargo build finished with "exit status: 101": `env -u CARGO PYO3_ENVIRONMENT_SIGNATURE="cpython-3.14-64bit" PYO3_PYTHON="/workspaces/venv/bin/python3.14t" PYTHON_SYS_EXECUTABLE="/workspaces/venv/bin/python3.14t" "cargo" "rustc" "--features" "pyo3/extension-module" "--message-format" "json-render-diagnostics" "--manifest-path" "/tmp/pip-install-az1brkny/jiter_141d0b22fd4248418b20e5c69073be19/crates/jiter-python/Cargo.toml" "--release" "--lib" "--crate-type" "cdylib"`
      Error: command ['maturin', 'pep517', 'build-wheel', '-i', '/workspaces/venv/bin/python3.14t', '--compatibility', 'off'] returned non-zero exit status 1
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for jiter
Failed to build jiter
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (jiter)
(venv) @clin1234 ➜ /workspaces $  PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 pip install jiter
Collecting jiter
  Using cached jiter-0.5.0.tar.gz (158 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: jiter
  Building wheel for jiter (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for jiter (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [102 lines of output]
      Running `maturin pep517 build-wheel -i /workspaces/venv/bin/python3.14t --compatibility off`
      🔗 Found pyo3 bindings
      🐍 Found CPython 3.14t at /workspaces/venv/bin/python3.14t
      📡 Using build options features, bindings from pyproject.toml
         Compiling target-lexicon v0.12.14
         Compiling once_cell v1.19.0
         Compiling autocfg v1.3.0
         Compiling proc-macro2 v1.0.86
         Compiling pyo3-build-config v0.22.0
         Compiling libc v0.2.155
         Compiling unicode-ident v1.0.12
         Compiling num-traits v0.2.19
         Compiling pyo3-macros-backend v0.22.0
         Compiling pyo3-ffi v0.22.0
         Compiling quote v1.0.36
         Compiling syn v2.0.68
         Compiling memoffset v0.9.1
         Compiling cfg-if v1.0.0
         Compiling static_assertions v1.1.0
         Compiling heck v0.5.0
         Compiling version_check v0.9.4
         Compiling radium v0.7.0
         Compiling ahash v0.8.11
         Compiling lexical-util v0.8.5
         Compiling num-integer v0.1.46
         Compiling pyo3 v0.22.0
         Compiling tap v1.0.1
         Compiling wyz v0.5.1
         Compiling num-bigint v0.4.5
         Compiling pyo3-macros v0.22.0
         Compiling lexical-parse-integer v0.8.6
         Compiling getrandom v0.2.15
         Compiling jiter v0.5.0 (/tmp/pip-install-t7y4lu8r/jiter_8bdd178849954a6c817f2ca61929b00f/crates/jiter)
         Compiling indoc v2.0.5
         Compiling funty v2.0.0
         Compiling zerocopy v0.7.34
         Compiling unindent v0.2.3
         Compiling bitvec v1.0.1
         Compiling lexical-parse-float v0.8.5
         Compiling smallvec v1.13.2
      error[E0425]: cannot find function, tuple struct or tuple variant `PyUnicode_New` in module `pyo3::ffi`
         --> crates/jiter/src/py_string_cache.rs:205:26
          |
      205 |       let ptr = pyo3::ffi::PyUnicode_New(s.len() as isize, 127);
          |                            ^^^^^^^^^^^^^ help: a function with a similar name exists: `PySlice_New`
          |
         ::: /home/codespace/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pyo3-ffi-0.22.0/src/sliceobject.rs:50:5
          |
      50  | /     pub fn PySlice_New(
      51  | |         start: *mut PyObject,
      52  | |         stop: *mut PyObject,
      53  | |         step: *mut PyObject,
      54  | |     ) -> *mut PyObject;
          | |______________________- similarly named function `PySlice_New` defined here

      error[E0425]: cannot find function, tuple struct or tuple variant `PyUnicode_KIND` in module `pyo3::ffi`
         --> crates/jiter/src/py_string_cache.rs:207:33
          |
      207 |       debug_assert_eq!(pyo3::ffi::PyUnicode_KIND(ptr), pyo3::ffi::PyUnicode_1BYTE_KIND);
          |                                   ^^^^^^^^^^^^^^ help: a function with a similar name exists: `PyUnicode_Find`
          |
         ::: /home/codespace/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pyo3-ffi-0.22.0/src/unicodeobject.rs:299:5
          |
      299 | /     pub fn PyUnicode_Find(
      300 | |         str: *mut PyObject,
      301 | |         substr: *mut PyObject,
      302 | |         start: Py_ssize_t,
      303 | |         end: Py_ssize_t,
      304 | |         direction: c_int,
      305 | |     ) -> Py_ssize_t;
          | |___________________- similarly named function `PyUnicode_Find` defined here

      error[E0425]: cannot find value `PyUnicode_1BYTE_KIND` in module `pyo3::ffi`
         --> crates/jiter/src/py_string_cache.rs:207:65
          |
      207 |     debug_assert_eq!(pyo3::ffi::PyUnicode_KIND(ptr), pyo3::ffi::PyUnicode_1BYTE_KIND);
          |                                                                 ^^^^^^^^^^^^^^^^^^^^ not found in `pyo3::ffi`

      error[E0425]: cannot find function, tuple struct or tuple variant `PyUnicode_DATA` in module `pyo3::ffi`
         --> crates/jiter/src/py_string_cache.rs:208:31
          |
      208 |       let data_ptr = pyo3::ffi::PyUnicode_DATA(ptr).cast();
          |                                 ^^^^^^^^^^^^^^ help: a function with a similar name exists: `PyUnicode_Find`
          |
         ::: /home/codespace/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pyo3-ffi-0.22.0/src/unicodeobject.rs:299:5
          |
      299 | /     pub fn PyUnicode_Find(
      300 | |         str: *mut PyObject,
      301 | |         substr: *mut PyObject,
      302 | |         start: Py_ssize_t,
      303 | |         end: Py_ssize_t,
      304 | |         direction: c_int,
      305 | |     ) -> Py_ssize_t;
          | |___________________- similarly named function `PyUnicode_Find` defined here

      For more information about this error, try `rustc --explain E0425`.
      error: could not compile `jiter` (lib) due to 4 previous errors
      warning: build failed, waiting for other jobs to finish...
      💥 maturin failed
        Caused by: Failed to build a native library through cargo
        Caused by: Cargo build finished with "exit status: 101": `env -u CARGO PYO3_ENVIRONMENT_SIGNATURE="cpython-3.14-64bit" PYO3_PYTHON="/workspaces/venv/bin/python3.14t" PYTHON_SYS_EXECUTABLE="/workspaces/venv/bin/python3.14t" "cargo" "rustc" "--features" "pyo3/extension-module" "--message-format" "json-render-diagnostics" "--manifest-path" "/tmp/pip-install-t7y4lu8r/jiter_8bdd178849954a6c817f2ca61929b00f/crates/jiter-python/Cargo.toml" "--release" "--lib" "--crate-type" "cdylib"`
      Error: command ['maturin', 'pep517', 'build-wheel', '-i', '/workspaces/venv/bin/python3.14t', '--compatibility', 'off'] returned non-zero exit status 1
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for jiter
Failed to build jiter
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (jiter)
davidhewitt commented 2 months ago

Python 3.14 is a bleeding edge dev build which PyO3 is unlikely to support for a while. Work is still ongoing to support 3.13t in PyO3; you can track that here: https://github.com/PyO3/pyo3/issues/4265