Feature Request: Support free-threaded Python

オープン
#303 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
45/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
docker, python

調査の方向性

まず、既存の 3.14 ディレクトリとその Dockerfile を比較します。特に、issue でリンクされている pyenv のインストール行を確認してください。node イメージなどのイメージタグとバリアントがどのように生成または公開されているかを確認し、その後 free-threaded 版を追加して、生成されたタグが要求された Python リリースで利用可能であることを検証します。

索引モデルが issue の本文から書いたものです。

説明

enhancement

Describe the Feature Request

Python has been officially supporting a free-threaded variant since v3.14.0 (also available in v3.13.x, but it was considered experimental then). That is, multiple threads in Python no longer invoke the GIL to coordinate, which reduces performance limitations significantly. Because it can cause subtle issues in programs that do not do all the correct locking and coordinating, it’s important to be able to test these builds in CI. More info on free-threaded builds here: https://py-free-threading.github.io/

Free-threading is a build-time feature, so it would need to be a separate Docker image/tag. As far as I can tell, this isn’t currently being built here or published at https://hub.docker.com/r/cimg/python.

The official free-threading variants are usually identified by appending a t to the version, e.g. 3.14.3t. This might be as simple as adding a 3.14t directory alongside the 3.14 one and just updating the pyenv install line: https://github.com/CircleCI-Public/cimg-python/blob/f27d1395d07d077c5fe6e681e0ab7c9e53e9c7d1/3.14/Dockerfile#L45

The t variants should work just fine otherwise with the existing Docker configuration here — I’ve been maintaining a set of images for Python pre-releases for a couple years that does free-threaded builds without issue (I changed the Dockerfile slightly to accommodate Poetry failing to build, which regularly happens in pre-releases before the release candidate phase, but it’s never failed on final releases of Python).

Is your feature request related to a particular problem?

The free-threaded variant of Python can cause lots of subtle issues with any Python’s binary interface (e.g. compiled extensions/packages written in C), it’s really important to test against in CI. Even pure-Python packages may have binary dependencies, or may just need to be more careful about locking and testing in threading-related code.

None of this can be tested in Circle when using cimg/python right now (so far as I’m aware, at least), and it requires building your own base image from cimg/base instead.

How will this feature request benefit CircleCI jobs using this image?

It enables testing free-threaded Python without building custom base images.

Describe the solution you would like to see

I would like to see tags for the cimg/python images that use free-threaded Python, e.g. 3.14.3t or 3.14.3t-node.

Describe alternatives you have considered

The alternative is all customers testing Python code building custom base images for free-threaded Python and not being able to rely on cimg/python.

主要言語
Dockerfile
スター
34
フォーク
33
平均マージ
8時間 45分
マージ済み PR(30日)
7

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

CircleCI-Public/cimg-python のほかの issue

CircleCI-Public/cimg-python の issue をすべて見る

似ている issue

Build System の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。