airspeed-velocity / asv

Airspeed Velocity: A simple Python benchmarking tool with web-based reporting
https://asv.readthedocs.io/
BSD 3-Clause "New" or "Revised" License
860 stars 180 forks source link

CI: Simplify wheel builds #1342

Open mattip opened 12 months ago

mattip commented 12 months ago

We have a single c-exetension range-median. Because of that, we need wheels for each python version and each platform. We should

HaoZeke commented 12 months ago

We have a single c-exetension range-median. Because of that, we need wheels for each python version and each platform. We should

* create an abi3 wheel for cpython, which would eliminate the need for a wheel for each python version

SGTM.

* create a non-optimized pure python wheel with a slower implementation of range-median, for PyPy and less popular platforms like aarch64, ppc64le.

This is what happens when building from source currently (that's why we still have a setup.py, to check if the extension can be built continue if not), but I see the utility of having a "fallback" wheel. Will look into it.

Personally I'd also be happy to move rangemedian outside of this repository, that would make depending on it much simpler (via the platform checks in pyproject.toml).

mattip commented 12 months ago

Are there other parts of the asv web interface we could move out to a separate asv[analyze] package?

HaoZeke commented 12 months ago

Are there other parts of the asv web interface we could move out to a separate asv[analyze] package?

As I recall, a couple of the functions in statistics.py were already refactored out into runner. I think the only ones which remain (step_detect, rangemedian etc) could be moved into another package, along with the regressions plugin.

Will need to look into it a bit more, but I definitely think its doable. It might be nicer to define a set of functionality meant to stay here and pretty aggressively spin out the rest.

mattip commented 7 months ago

Did you mean to mark this for 0.6.3 or 1.6.2?

HaoZeke commented 7 months ago

Did you mean to mark this for 0.6.3 or 1.6.2?

Good catch, updated to be 0.6.3.

HaoZeke commented 3 weeks ago

Unfortunately, after a quick check it seems that the extension isn't very easily compatible with the limited API, and needs some work as per PEP 697. I think I'd rather spin it out into a separate repo first though.