diff --git a/content/authors/stan-ulbrych.json b/content/authors/stan-ulbrych.json new file mode 100644 index 0000000..f52d6e4 --- /dev/null +++ b/content/authors/stan-ulbrych.json @@ -0,0 +1,11 @@ +{ + "name": "Stan Ulbrych", + "bio": "Python patcher, PSRT member, and translator", + "github": "StanFromIreland", + "avatar": "", + "twitter": "", + "bluesky": "https://bsky.app/profile/stan.ulbrych.org", + "mastodon": "https://mastodon.social/@stanfromireland", + "website": "https://stan.ulbrych.org", + "featured": false +} diff --git a/content/posts/cpython-codebase-growth/cpython_growth.svg b/content/posts/cpython-codebase-growth/cpython_growth.svg new file mode 100644 index 0000000..d53e25b --- /dev/null +++ b/content/posts/cpython-codebase-growth/cpython_growth.svg @@ -0,0 +1,23382 @@ + + + + + + + + 2026-03-08T15:21:31.848372 + image/svg+xml + + + Matplotlib v3.10.0, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/posts/cpython-codebase-growth/index.md b/content/posts/cpython-codebase-growth/index.md new file mode 100644 index 0000000..bd66567 --- /dev/null +++ b/content/posts/cpython-codebase-growth/index.md @@ -0,0 +1,16 @@ +--- +title: 'CPython: 36 Years of Source Code' +publishDate: 2026-08-03 +author: Stan Ulbrych +description: >- + An analysis of the growth of CPython's codebase from its first commits to the + present day +tags: + - history +published: true +--- +![Stacked area chart showing CPython's growth from a few lines in 1990 to 2.9 million lines in 2026, broken down by language](cpython_growth.svg) + +While working on a patch and navigating through CPython, I got curious as to how the codebase has grown over the years. Using an interesting tool I found on the internet to *count lines of code* ([cloc](https://github.com/AlDanial/cloc)), some scripts, and some patience (thank goodness for multiple cores, or I’d be at this all day), I amassed a [1,392 commit dataset.](https://gist.github.com/StanFromIreland/bd33d5ee3c59c54cbe1f3bad2fbdb4e9) With that, and some Git spelunking for the annotations, I was able to generate the above graph. + +Many thanks to Tim and Ned for their help with this little project! I plan to tidy my scripts and upload them to a repository sometime in the near future. Please feel free to use my dataset :-) diff --git a/keystatic.config.tsx b/keystatic.config.tsx index cfdb2f4..84505d8 100644 --- a/keystatic.config.tsx +++ b/keystatic.config.tsx @@ -36,6 +36,7 @@ const knownTags = [ "docs", "contributors", "buildbot", + "history", ]; const referenceComponents = {