Skip to content

Request to add trove classifiers for CPU architectures #118

@althonos

Description

@althonos

Hello there!

I am using mostly Python for scientific programming in bioinformatics, and I've come to develop several packages with support for particular CPU features, such as SIMD extensions. At the moment, listing compiled extensions is not obvious with classifiers (there is no Compiled classifier like there is a Typing :: Typed for typed packages), but in general using Programming Language :: C or Programming Language :: Cython is enough.

However, I was wondering if it would make sense to add classifiers to list CPU architectures, given:

  1. there is now the Environment :: GPU classifier, which can be used to tag CUDA-enabled code
  2. some packages may only run on certain target platforms (for instance when only x86 is supported by an upstream dependency)
  3. it would be nice to classify packages targeting specific targets like Arm, or supporting special features like SSE.

This is open for discussion, but I could imagine an Architecture classifier something like:

Architecture :: Any
Architecture :: x86
Architecture :: x86-64
Architecture :: Arm :: Armv7
Architecture :: Arm :: Aarch64

etc. for architectures, maybe with :: Only variants for code only supporting an architecture (e.g. Architecture :: x86-64 :: Only, like Programming Language :: Python :: 3 :: Only)

For CPU features, maybe something like:

Architecture :: x86-64 :: SSE
Architecture :: x86-64 :: SSE2
...
Architecture :: Arm :: Armv7 :: NEON
Architecture :: Arm :: Aarch64 :: NEON
Architecture :: Arm :: Aarch64 :: Helium

Since there is already an Environment :: GPU classifier, another option would be to use an Environment :: CPU root classifier (e.g. Environment :: CPU :: Arm :: Aarch64 :: NEON to mark that a package implements NEON-accelerated computation, or Environment :: CPU :: x86-64 :: Only to mark that a package is only available with an x86-64 CPU).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions