ToucanToco / fastexcel

A Python wrapper around calamine
http://fastexcel.toucantoco.dev/
MIT License
85 stars 4 forks source link

Provide `abi3` wheels #168

Closed lukapeschke closed 4 months ago

lukapeschke commented 5 months ago

abi3 wheels would allow us to build for our lowest supported Python version only (currently 3.8), while still being compatible with higher versions. This would allow to produce a single artifact per target plaform/arch rather than a wheel per platform/arch/version: https://pyo3.rs/v0.14.5/building_and_distribution#py_limited_apiabi3

It is also what polars does currently

Pros:

A potential downside could be a performance cost. To quote PyO3's docs:

The downside of this is that PyO3 can't use optimizations which rely on being compiled against a known exact Python version. It's up to you to decide whether this matters for your extension module.

We'd have to run a benchmark with both types of wheels in Python 3.12 to check the impact of this, but since our API is quite simple, we shouldn't see a difference