{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreihwmnsw23n7zvhvxpurbwalmlokmknoimkh6pnqozq2oqklqavbhi",
    "uri": "at://did:plc:hqad6xwuzg7oqfmwylfkvqfm/app.bsky.feed.post/3mlgsiz6xffp2"
  },
  "path": "/viewtopic.php?t=33434&p=273744#p273744",
  "publishedAt": "2026-05-09T16:51:15.000Z",
  "site": "http://forum.palemoon.org",
  "textContent": "> Basically, from 34.3.0 onwards we'll be on Python 3 -- exact range seems to be 3.7 through 3.13(?) and no real handle on breaking changes beyond that, because we had to pick something... got to love moving targets ;P\n\nActually a little broader... I had to start with fairly old Python 3 versions because some of our of our in-tree third-party Python modules had support for Python 3.4 but nothing newer when I started out. So that was the easiest one to get working, and then I walked up to 3.14 from there.\n\nSo it technically did compile the browser on 3.14 in my initial state, but it was spewing a ton of deprecation warnings. That guy who had the CCache issue fixed most of them for us though, so now it actually does run with no apparent issues on everything from 3.4 to 3.14. I saw really clever patterns in Google's gyp that taught me how to do feature detection and fallback in Python that Mozilla would never do, which allows you to support a ridiculous range of Python versions... if you really wanted to, you _could_ support Python 2.x in addition to 3.x (gyp did), but it would turn into spaghetti code at some point, and even more of a maintenance nightmare than it already is.\n\nAs we actually update in-tree Python modules though, most of the newer versions do have a minimum requirement of Python 3.6 or so, so that likely will bump the minimum version we can build with at some point... but for now if someone used 3.4, or even 3.3, it would actually work. The oldest we actually need to support for our own build tooling is actually 3.6 because I think (but not sure) that's what Oracle Linux 8 ships with. MozillaBuild on Windows ships with 3.7.\n\nA fact that's not really documented anywhere is that very early Python 3 was much more like Python 2 than later versions, and thus it's an easier target for a first port... it's obvious why if you think about it, but it's one of the things they don't tell you.\n\n* * *",
  "title": "Platform Development • Re: XULRunner still uses Python 2",
  "updatedAt": "2026-05-09T16:51:15.000Z"
}