Практическая проверка Python 3.15 RC1: как проверить wheel C extension для обычного и free-threaded Python 3.15 с тегами abi3 и abi3t. Изолированный fixture, отрицательный контроль, заранее заданный критерий и безопасный пакет диагностики.
Обычный import не доказывает abi3t
PEP 803 добавляет Stable ABI для free-threaded Python под именем abi3t и предлагает авторам extensions явно собирать обе совместимости. Это подтверждает только границу функции, а не наличие проблемы в конкретном проекте. Практический симптом уже: Wheel импортируется в обычном CPython 3.15, поэтому его ошибочно считают готовым для free-threaded build, хотя тег, opaque PyObject API и thread-safety проверялись в другой ABI. До изменения кода зафиксируйте версию runtime, способ установки, один ожидаемый результат и один отрицательный исход. RC1 остаётся предварительным выпуском: его проверяют в отдельной среде, не ставят поверх рабочего interpreter и не используют один удачный запуск как разрешение на migration.
Две среды и два artifact
Рекомендуемый fixture: собрать минимальный extension в одноразовом CI для обычной и free-threaded сборок, вывести sys.abi_info, имя wheel и audit metadata, затем выполнить import и один детерминированный вызов. Дайте ему метку T23-08, отдельный temp root и короткий deadline. Входы должны быть синтетическими, повторяемыми и минимальными; каждый новый запуск получает новые объекты и процесс, если cache или global state способны изменить наблюдение. До опыта запишите точную команду и ожидаемый class результата. Не включайте рабочие конфиги, адреса, токены, персональные строки, production PID или полные environment dumps.
Tag проверяет installer
Опровергающий маршрут: попытаться установить каждый artifact в обе среды без переименования файла; несовместимый tag должен быть отдельным ожидаемым control, а не исправляться --force или копированием suffix. Собирайте строки формата «runtime | free-threaded | wheel tag | installer принял | import | smoke result | sanitizer/thread test». Порядок control A, target B, fresh control A2 обнаруживает загрязнение fixture: если A2 расходится с A, итог нельзя помечать passed. Пустое поле не равно нулю, отсутствие exception не доказывает правильную семантику, а изменение двух параметров сразу лишает опыт диагностической силы. Соседние причины получают отдельные строки, а не удобное общее объяснение.
Smoke, поток и sanitizer
Зелёный критерий сформулирован заранее: каждая поддерживаемая пара обозначена корректным tag, устанавливается штатно и проходит smoke plus concurrency fixture; обычный abi3 success не засчитывается за abi3t. Ветка not reproduced означает только отсутствие симптома в этой версии fixture; blocked означает нехватку capability или источника; failed control возвращает расследование к стенду. Стоп-линия: {item['stop']}. Нельзя добиваться зелёного результата отключением проверки, broad except, ростом лимита, повторением до случайного успеха или подменой предварительного release стабильным обещанием. После теста удаляются только созданные temp-ресурсы.
Что нужно владельцу wheel
Для maintainer или поддержки подготовьте: две строки sys.abi_info, wheel filenames, compiler flags, audit output и минимальный traceback без исходников продукта и registry credentials. Добавьте label T23-08, московский timestamp, точную версию RC и формулировку критерия «каждая поддерживаемая пара обозначена корректным tag, устанавливается штатно и проходит smoke plus concurrency fixture; обычный abi3 success не засчитывается за abi3t». Секреты, IP, hostnames, usernames, абсолютные домашние пути и полные логи удалите. Официальные источники подтверждают изменение «PEP 803 добавляет Stable ABI для free-threaded Python под именем abi3t и предлагает авторам extensions явно собирать обе совместимости.», но не подтверждают результат вашего теста, частоту проблемы или необходимость менять production. Такой пакет позволяет воспроизвести одну ветку, не раскрывая данные и не смешивая её с соседними issues.
Материал подготовлен редакцией VOne с помощью ИИ по открытым официальным и первичным источникам; факты, даты и ссылки перепроверены. Реальные пользовательские данные не использовались.
Источники и проверка
- Python 3.15.0rc1 release проверено 2026-08-29
- What’s New in Python 3.15 проверено 2026-08-29
- PEP 803 — Stable ABI for Free-Threaded Builds проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.