What does the 'm' in a Python ABI tag mean?
Asked Answered
F

1

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.

Fairlie answered 8/1, 2019 at 17:42 Comment(0)
N
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)
Nonfeasance answered 8/1, 2019 at 17:47 Comment(2)
It is worth noting that Python 3.8 eliminates the m flag.Mythify
@rdb: Similarly, as of 3.3 (which implemented PEP 393), "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).Nonfeasance

© 2022 - 2024 — McMap. All rights reserved.