12

PEP 425 explains the compatibility tag format for built python distributions, but does not explain the ABI tag in full detail.

The ABI tag can end with a combination of the letters 'd', 'm', and 'u'. As an example, it is explained within the PEP that the 'd' means an ABI with debugging, and this answer explains that the 'u' denotes an interpreter compiled with --enable-unicode=ucs4, but I could not find the meaning of the 'm' anywhere.

ShadowRanger
  • 143,180
  • 12
  • 188
  • 271
Rörd
  • 6,556
  • 21
  • 27

1 Answers1

15

Per PEP 3149, m indicates that the ABI in question is using the pymalloc allocator:

Python implementations MAY include additional flags in the file name tag as appropriate. For example, on POSIX systems these flags will also contribute to the file name:

  • --with-pydebug (flag: d)
  • --with-pymalloc (flag: m)
  • --with-wide-unicode (flag: u)
Community
  • 1
  • 1
ShadowRanger
  • 143,180
  • 12
  • 188
  • 271
  • 6
    It is worth noting that Python 3.8 eliminates the `m` flag. – rdb Sep 04 '19 at 08:41
  • 2
    @rdb: Similarly, as of 3.3 (which implemented [PEP 393](https://www.python.org/dev/peps/pep-0393/)), "wide unicode" isn't a thing (they went from a hardcoded two or four bytes per character, determined when Python was built, to a flexible representation that uses 1, 2 or 4 bytes per character, depending on the max ordinal, so any system can represent any Unicode character, without always using four bytes per character). – ShadowRanger Oct 29 '19 at 16:48