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
866 stars 181 forks source link

RFC: Removing support for multiple `python` versions #1336

Closed HaoZeke closed 8 months ago

HaoZeke commented 1 year ago

I'm not sure this ever made sense to begin. For most environment management systems (conda/mamba) except maybe pyenv, support for multiple python versions is very problematic.

error    libmamba Could not solve for environment specs
    The following packages are incompatible
    ├─ python 3.8  is requested and can be installed;
    └─ python 3.9  is not installable because it conflicts with any installable versions previously reported.
critical libmamba Could not solve for environment specs

Would be good to hear thoughts. Examples of this being used in the wild would also be most welcome. I couldn't find any from a naive Github search.

In support of removing this functionality would be that it would be much easier to handle non-standard python versions and remove ambiguities:

HaoZeke commented 1 year ago

cc @fangchenli @datapythonista @mattip , anyone else

fangchenli commented 1 year ago

+1

trexfeathers commented 1 year ago

This is presumably rooted in the same logic as the dependency matrix - the idea of having several benchmarking 'streams' that could then be compared. "This benchmark is slower with NumPy v2; this benchmark is slower with Python v3.12 ...". But that doesn't seem to be a popular use case from everything I have read.

HaoZeke commented 1 year ago

This is presumably rooted in the same logic as the dependency matrix - the idea of having several benchmarking 'streams' that could then be compared. "This benchmark is slower with NumPy v2; this benchmark is slower with Python v3.12 ...". But that doesn't seem to be a popular use case from everything I have read.

Yup, I think though, for asv, and python projects in general, the "language level specification" is much less pronounced than library dependency issues. Compared to C++ or fortran, Python language standards are adapted by libraries fairly quickly, so I'm not sure this is worth supporting here.

Also pythonpath manipulation is very much frowned upon as a practice, the community has pretty much centered on environments defined by one python at a time so it becomes hard to handle.

jmarcet commented 8 months ago

I think comparing performance between different python versions is a very useful feature, specially with the latest performance oriented upgrades in python. With pyenv is quite easy to have all the pythons you want to test available in the PATH so asv can find and use them without further steps.

For instance, it has helped us find out python-3.12 performs quite worse than python-3.11 in our codebase.

HaoZeke commented 8 months ago

I'm going to close this as I am now convinced we do actually need to keep multiple python version support. If there is dissent later we can reopen this.