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:
there is now the Environment :: GPU classifier, which can be used to tag CUDA-enabled code
some packages may only run on certain target platforms (for instance when only x86 is supported by an upstream dependency)
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)
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).
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 aTyping :: Typed
for typed packages), but in general usingProgramming Language :: C
orProgramming Language :: Cython
is enough.However, I was wondering if it would make sense to add classifiers to list CPU architectures, given:
Environment :: GPU
classifier, which can be used to tag CUDA-enabled codeThis is open for discussion, but I could imagine an
Architecture
classifier something like:etc. for architectures, maybe with
:: Only
variants for code only supporting an architecture (e.g.Architecture :: x86-64 :: Only
, likeProgramming Language :: Python :: 3 :: Only
)For CPU features, maybe something like:
Since there is already an
Environment :: GPU
classifier, another option would be to use anEnvironment :: CPU
root classifier (e.g.Environment :: CPU :: Arm :: Aarch64 :: NEON
to mark that a package implements NEON-accelerated computation, orEnvironment :: CPU :: x86-64 :: Only
to mark that a package is only available with an x86-64 CPU).