<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/python-abi3t-what-is-it--ucshfitsz" -->

---
title: Python abi3t: what is it? | daily.dev
description: Python 3.15 introduces abi3t, a stable ABI tag for free-threaded builds that cuts down the number of wheels C extension maintainers must publish. Without a...
canonical: https://daily.dev/posts/python-abi3t-what-is-it--ucshfitsz
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Python abi3t: what is it? | daily.dev
og:description: Python 3.15 introduces abi3t, a stable ABI tag for free-threaded builds that cuts down the number of wheels C extension maintainers must publish. Without a...
og:url: https://daily.dev/posts/python-abi3t-what-is-it--ucshfitsz
og:image: https://api.daily.dev/og/posts/UcSHfiTsz.png
og:image:alt: Python abi3t: what is it?
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Python abi3t: what is it?

**[Planet Python](https://daily.dev/sources/planetpython)** · 6 min read · 0 upvotes · 0 comments

## Summary

Python 3.15 introduces abi3t, a stable ABI tag for free-threaded builds that cuts down the number of wheels C extension maintainers must publish. Without a stable ABI, NumPy would need 44 wheels per release across 4 Python versions and 11 platform/architecture pairs. The existing abi3 stable ABI already reduces that to 3 wheels, but it doesn't support free-threaded Python. Without abi3t, supporting free-threaded builds across Python 3.14 through 3.19 would require 15 separate wheels; abi3t avoids that multiplication going forward.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://mathspp.com/blog/python-abi3t-what-is-it>

## Questions this post answers

### what is abi3t in Python 3.15

abi3t is a new stable ABI tag introduced in Python 3.15 that extends the existing abi3 stable ABI to free-threaded Python builds. The original abi3 stable ABI does not support free-threaded Python, so abi3t lets C extension maintainers publish a single wheel compatible across multiple free-threaded Python versions instead of building one per version.

_daily.dev keeps developers tracking free-threaded Python packaging changes like abi3t as they ship._

### why does NumPy need to publish so many wheels for each release

NumPy supports 11 platform and architecture pairs across macOS, Linux, and Windows, and must publish a wheel for each Python version it supports. Supporting Python 3.12 through 3.15 (4 versions) across those 11 platform pairs means publishing 44 wheels per release, since each wheel's ABI tag ties it to a specific Python version's C API.

_developers maintaining C extensions can follow packaging changes like this on daily.dev before their wheel count explodes._

### how many wheels does a C extension need if it uses the stable ABI instead of per-version builds

With the stable ABI (abi3), a C extension only needs 3 wheels total, regardless of how many Python versions it supports, because abi3 stays stable across releases. Without it, a project supporting 5 Python versions across multiple platforms would need a separate wheel per version and platform combination, multiplying the build and maintenance burden.

_daily.dev helps C extension maintainers stay current on stable ABI changes that affect their wheel builds._

## Similar posts on daily.dev

- [A New Python Packaging Council and Other News for May 2026 – Real Python](https://daily.dev/posts/a-new-python-packaging-council-and-other-news-for-may-2026-real-python-j4ikhcce9) · Real Python · 0 upvotes · 0 comments
- [Python 3.15.0a8, 3.14.4 and 3.13.13 are out\!](https://daily.dev/posts/python-3-15-0a8-3-14-4-and-3-13-13-are-out--fpknzjqcr) · Python Insider · 29 upvotes · 1 comments
- [PyCoder’s Weekly](https://daily.dev/posts/pycoder-s-weekly-f3zfmwpbp) · Planet Python · 0 upvotes · 0 comments

---

Tags: [#python](https://daily.dev/tags/python)

[View this post on daily.dev](https://daily.dev/posts/python-abi3t-what-is-it--ucshfitsz)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Python abi3t: what is it?","url":"https://daily.dev/posts/python-abi3t-what-is-it--ucshfitsz","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/python-abi3t-what-is-it--ucshfitsz"},"datePublished":"2026-10-30T19:50:42.918Z","dateModified":"2026-10-30T19:51:11.586Z","description":"Python 3.15 introduces abi3t, a stable ABI tag for free-threaded builds that cuts down the number of wheels C extension maintainers must publish. Without a...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/387b9ecb1a9749a0944e4b3658b549a3?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/387b9ecb1a9749a0944e4b3658b549a3?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Planet Python","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Planet Python","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/eac3cc584cb043b5a242d13752bd3d0c","url":"https://daily.dev/sources/planetpython"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/python-abi3t-what-is-it--ucshfitsz","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"python","timeRequired":"PT6M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Planet Python","item":"https://daily.dev/sources/planetpython"},{"@type":"ListItem","position":3,"name":"Python abi3t: what is it?"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/python-abi3t-what-is-it--ucshfitsz#faq","mainEntity":[{"@type":"Question","name":"what is abi3t in Python 3.15","acceptedAnswer":{"@type":"Answer","text":"abi3t is a new stable ABI tag introduced in Python 3.15 that extends the existing abi3 stable ABI to free-threaded Python builds. The original abi3 stable ABI does not support free-threaded Python, so abi3t lets C extension maintainers publish a single wheel compatible across multiple free-threaded Python versions instead of building one per version. daily.dev keeps developers tracking free-threaded Python packaging changes like abi3t as they ship."}},{"@type":"Question","name":"why does NumPy need to publish so many wheels for each release","acceptedAnswer":{"@type":"Answer","text":"NumPy supports 11 platform and architecture pairs across macOS, Linux, and Windows, and must publish a wheel for each Python version it supports. Supporting Python 3.12 through 3.15 (4 versions) across those 11 platform pairs means publishing 44 wheels per release, since each wheel's ABI tag ties it to a specific Python version's C API. developers maintaining C extensions can follow packaging changes like this on daily.dev before their wheel count explodes."}},{"@type":"Question","name":"how many wheels does a C extension need if it uses the stable ABI instead of per-version builds","acceptedAnswer":{"@type":"Answer","text":"With the stable ABI (abi3), a C extension only needs 3 wheels total, regardless of how many Python versions it supports, because abi3 stays stable across releases. Without it, a project supporting 5 Python versions across multiple platforms would need a separate wheel per version and platform combination, multiplying the build and maintenance burden. daily.dev helps C extension maintainers stay current on stable ABI changes that affect their wheel builds."}}]}
```

