HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
python
cpython
Python2014–2026
python / cpython

cpython

The Python programming language

400Distinct people
547Mentions
3Explicit recommenders
78.2KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

The Python programming language

GitHub

Where it is used

  • AWS Lambda — AWS Lambda provides a managed runtime and container base image for Python 3.11 that runs on CPython’s interpreter improvements. It uses CPython’s specialization adaptive interpreter features to improve Lambda workloads’ performance. Source
  • abridging clinical conversations using python — “In addition to the above-mentioned instances, we also use Python widely in conjunction with several Google Cloud Platform (GCP) services and to set up other monitoring and debugging tools.” Source
  • 4 more documented examples

What people are saying

I love the description in the draft PR: 'Twas the night before Christmas, when all through the code Not a core dev was merging, not even Guido; The CI was spun on the PRs with…

divbzero used a recommendation phrase. 3 indexed comments match. This is a phrase match, not a verdict.

Favorable Commenters discuss Tim Peters' contributions to CPython, including int-to-str conversion and Timsort. The tone is respectful and appreciative of his technical achievements.

This week’s discussion is favorable. This is not a standing endorsement. Read the supporting reply

Also in these discussions

  • golang/go · linked in 2 of the same discussions
  • nodejs/node · linked in 2 of the same discussions
  • ruby/ruby · linked in 2 of the same discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Favorable

Commenters discuss Tim Peters' contributions to CPython, including int-to-str conversion and Timsort. The tone is respectful and appreciative of his technical achievements.

Supporting reply 1 · Supporting reply 2 · 2 discussions summarized

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

Tim Peters has died direct repository linkDebated

The discussion centers on the death of Python contributor Tim Peters, with widespread tributes to his technical legacy like Timsort and the Zen of Python clashing with heated disagreements over his controversial suspension by the Python Software Foundation. While many users urge focusing solely on his contributions, others argue that ignoring the PSF's handling of his ban is a disservice to his memory and an endorsement of flawed community governance.

189 readable replies · Supporting reply 1 · Supporting reply 2 · Supporting reply 3 · Supporting reply 4
Timsort direct repository link

Read the discussion on HN. A full-thread summary is not available yet.

Adapting CPython for Yk project name in title

Read the discussion on HN. A full-thread summary is not available yet.

Showing the three threads with the most distinct people linking this repo, from 5 threads this week.

Mentions over time

HN mentions by year547 dated mentions

Observed mentions: 2014-12-30 12:04:55 UTC to 2026-10-27 17:34:51 UTC.

0204060802014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20142015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 20 mentions; 2 submissions, 18 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 36 mentions; 4 submissions, 32 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 28 mentions; 2 submissions, 26 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 33 mentions; 4 submissions, 29 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 54 mentions; 2 submissions, 52 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 62 mentions; 3 submissions, 59 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 63 mentions; 6 submissions, 57 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 64 mentions; 4 submissions, 60 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 70 mentions; 6 submissions, 64 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 72 mentions; 6 submissions, 66 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 40 mentions; 5 submissions, 35 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC101
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC404
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC20218
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC36432
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC28226
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC33429
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC54252
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC62359
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC63657
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC64460
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC70664
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC72666
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC40535

What Hacker News says

40 sources
> I would expect such a project to get continual updates without PEPs. Just for completeness: the original JIT PR was merged quite enthusiastically and only after the fact it was pointed out that it should have went through a PEP process [1]. The following PEP 744 was of the “informational” type, and the just-withdrawn PEP 836 was the first “standards track” PEP, which means that (in my understanding) it’s technically the first actual PEP that the SC would formally comment on. So in a way it’s not “can we update the JIT” PEP, but the first real “does SC want this JIT as proposed” PEP. That said, I do agree with most of what you said, especially the acceptance criteria part. The issue I have and find it hard to resolve is that since the code was already on main, the feature was already in “sunk cost” mode. It’s hard when the code is alre
Read the rest
ady on main and another 3 optimization PRs are always there behind the corner, but it needs to be possible for SC to say “we decided it’s not actually worth all this complexity for <some small number>% speed improvement” (I’m not commenting whether in this particular case it’d have been a right call), and the PEP (if not withdrawn) was the way to exercise that control. [1] https://github.com/python/cpython/pull/113465#issuecomment-1...
In Python's experimental JIT to be removed
zahlman·Oct 27, 2026Submission

New Python security updates explicitly block the eMudhra certificates by SPKI

Thanks to Python core developer (and Python 3.14 and 3.15 release manager) Hugo van Kemenade on the main Python discussion forums for the heads-up[0]. The patch[1] is contributed by Christian Heimes (with Claude assistance), former core developer who spearheaded the discussion on the bug tracker[2] and quickly affirmed the seriousness of the problem in the discussion thread (post 2, which corrected my mistaken assumption that pip would ignore its bundled `certifi` certificates as long as `truststore` was able to find system certificates). Blocking is implemented by a pretty straightforward loop, memcmp'ing against the hard-coded `unsigned char _distrusted_spki[][SHA256_DIGEST_LENGTH]`. As explained in comments: * This is an extraordinary measure and last line of defense. Removing trust is * primarily the job of the platform root store.
Read the rest
This list only blocks keys while * that update is still propagating to the OS, container images, or root CAs * bundled in Python packages. The threshold for adding an entry is very high. There's also an amusing workaround for security scanners that might trip on the tests included in the source release. From the code comment: > The distrusted test material… lives in a password-protected zip so it doesn't trip security scanners that cannot tell internal test fixtures from production secrets and flag any certificate or private key they find. It is encrypted, not merely zipped, because such scanners read inside plain archives. The password is fixed, public, and not a secret. What might that non-secret password be, you ask? Well, this is Python, so of course: DISTRUSTED_ZIP_CHOSEN_KNIGHT = 'Brave Sir Robin' [0]: https://discuss.python.org/t/_/109576/60 [1]: https://github.com/python/cpython/commit/7dd8b4736a1419750b94a388e6d158be15836fe6 [2]: https://github.com/python/cpython/issues/160040
3 points · Open discussion
Yep. Per the main thread on the Python forums (https://discuss.python.org/t/information-for-python-users-re...), this now happens even with the outdated pip because the built-in `ssl` module has been patched to reject it. The relevant commit is https://github.com/python/cpython/commit/7dd8b4736a1419750b9... , featuring a rather amusing workaround for security scanners that might mistake the blacklisted certificates (included for testing purposes) for "leaked" certificates accidentally included in a source package. From code comments, because I found it interesting: * This is an extraordinary measure and last line of defense. Removing trust is * primarily the job of the platform root store. This list only blocks keys while * that update is still propagating to the OS, container images, or root CAs * bundled in Python packages. Th
Read the rest
e threshold for adding an entry is very high. * * See https://github.com/python/cpython/issues/160040 for the eMudhra discussion. As a Mint 22.x user, I wonder if and when Debian or Ubuntu will pick up the change and release another patch for the system Python (basically, to my understanding, a base of 3.12.3 with security patches from other patch releases backported). Since they've already updated ca-certificates it might not seem necessary, at least as long as the pip package gets updated (although I don't use that anyway). BTW, I think I saw your comments in other places about the 30-cent vibe-coded MITM demo proxy, unless someone else had the same idea. Thanks for helping educate. Edit: apparently (https://discuss.python.org/t/avoiding-compromised-certificat...), the relevant Debian and Ubuntu packages already patch the distro-provided pip to enforce using the system certificates. (Indeed, `ca-certificates` is listed as "Depends" for the pip package, rather than "Recommends".) But maybe they'll still be interested in the key blocking, on defense-in-depth principles.
In Broccoli2Shell: Brotli decoder RCE in Node.js, Python and more
Even in software, there are many things that haven't changed. e.g. Why do Rust and CPython still have over 5,000 open issues each? At some point, will the superintelligence fix all the bugs autonomously? When is that going to happen? https://github.com/rust-lang/rust/issues https://github.com/python/cpython/issues What about new features? In every thread about Rust, people are clamoring for new features and libraries. People wonder why there can't be a batteries-included standard library like Go. So now that LLMs are so smart, is that a solved problem? Or are we still bottlenecked on the expertise of a few experts? --- Also, what happened to AI's passing the Turing test? I see tons of slop articles that are obvious to most HN readers. They haven't fooled us apparently -- the longer the interaction, the more obvious it becomes wheth
Read the rest
er it's AI. (That said, I use AI all the time and find it to be a great tool. IMO is is a tool, not an autonomous intelligence with a will of its own.)
In The gap in shared understanding of LLM capability is widening
1. Better memory locality by knowing what you load and when, exactly. 2. The ability to "cheat" on calling conventions. 3. The ability for techniques like threaded code, and in general, better cache-awareness. 4. Less mov's. 5. Guaranteeing no spilling in important loops. 6. Compilers don't do well with flags registers and you can't read/write them in high level languages. You're hoping your `if (result < a) { carry = 1; }` becomes a direct flag test. Especially important in bignum, you can't really utilise adcx/adox directly from high-level code. 7. Hot/cold layout without PGO. Yes PGO is good but sometimes you know better and PGO isn't very suitable for "configurable" code. 8. Computed goto. See https://github.com/python/cpython/issues/128563 , who doesn't like 10% free performance? 9. Exploiting uninitialised memory for classic party t
Read the rest
ricks like not initialising a buffer fully (let's say you have a library function with a return buffer. You don't want dynamic allocations for some reason. You can simulate this with a pointer return into a let's say a static 4KB buffer and a count return, you only initialise it until the count. Caller has the responsibility not to overread.)
In Beating the compiler (2024)
Interesting. Why do you call out KDE? Does it add to the experience specifically for you? I usually use XMonad, but then I nearly do everything in the command line, and I don't like to move my windows around via mouse. (Though XMonad supports that, too.) XMonad works for me, but I wouldn't call it out specifically as contributing to the experience. > You can't even see the update download speed or progress percentage on MacOS, [...] What program are you talking about? You can customise eg Firefox on Mac, just like anywhere else, with extensions to look however you want. > [...] brew is terrible in terms of performance [...] I'm trying to fix at least brew's Python performance a bit: https://github.com/python/cpython/issues/158283
In Turn off Apple Intelligence on macOS 27 and get its disk space back
In short, we haven't found many bugs, but it also wasn't just recompile on a new platform. We've seen test failures like https://github.com/python/cpython/issues/151040 And perf support needs to be tested and merged https://github.com/python/cpython/issues/121201 Overall though, fairly smooth sailing as you say. The reason RISC-V wasn't already supported is a mix of lacking hardware access for build bots and committers willing to pledge time to support it.
In RISC-V is now officially supported by CPython
It's not exposed for general use (yet?) but cpython does internally contain an implementation of the HAMT data structure: https://github.com/python/cpython/blob/main/Python/hamt.c Set/Delete/Lookup are all O(log(n)) See also: https://github.com/MagicStack/immutables (for something you can actually use) p.s. I think the reason heapq isn't a type is that it's ancient code that's hung around from the early days of python.
In Time complexity of operations on Python's built-in types
Man, I proposed the idea of `__min__`/`__max__` (and a few others) in 2023[0], exactly because of this kind of big-O optimization potential, and it was poorly received: https://discuss.python.org/t/_/25095 Another idea[1] that I won't get official credit for, I guess. Which, you know, I was raised in the "ideas are nothing, implementation is everything" era of code, but it still hurts. (Edit: I confused myself into thinking they were actually implementing the optimization in 3.16; they are not, or at least there's no evidence of it at present. Regardless, the hesitancy to implement this sort of improvement is rather irritating to me. See also https://github.com/python/cpython/issues/90716 .) By the way, `x in range(n)` is only optimized for integer `x`. Not for nonconvertible types (where the answer should obviously just be False) and not
Read the rest
for floating-point (values equal to an integer have to get converted and checked O(N) times, and other values can't be immediately rejected). That's been proposed and poorly received before too: https://discuss.python.org/t/_/18248 [2]. [0]: and I'd first thought of it long before that and didn't know where to propose it, plus it kept slipping my mind [1]: like https://zahlman.github.io/posts/a-brief-annotation/ [2]: see also my later post there, which went ignored
In Time complexity of operations on Python's built-in types
The first sentence sounds as if they modified the implementemention of str.lower(). That would be bonkers, but that's not what they did. https://github.com/python/cpython/commit/7e109d084d55e7eb The important part is: # B.3 is mostly Python's .lower, except for a number # of special cases, e.g. considering canonical forms. +# To enforce Unicode 3.2.0 behavior of .lower instead of +# whatever Unicode version is included with Python we +# add unassigned or newly case-folding codepoints to +# the exception map, too. b3_exceptions = {} for k,v in table_b2.items(): if list(map(ord, chr(k).lower())) != v: b3_exceptions[k] = "".join(map(chr,v)) +for cp in range(0x110000): + ch = chr(cp) + # Assigned in current Unicode version + # and supports case folding, but not + # explicitly
Read the rest
in B.2 or B.3 tables. + if (unicodedata_current.category(ch) != "Cn" + and ch.lower() != ch + and cp not in table_b2 + and cp not in table_b3): + b3_exceptions[cp] = ch # Identity.
In When str.lower() is a security vulnerability in Python

Showing the 15 most recent of 40 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.