python / python/cpython

Relax `PyUnstable_SetImmortal` to objects allocated in that thread?

Đang mở
#150,865 25 bình luận 0 reaction 1 người được giao Xem trên GitHub

@ZeroIntensity đang làm issue này rồi.

Từ ngày 7/9/2026.

interpreter-core topic-C-API topic-free-threading type-feature
Ngôn ngữ chính
Python
Star
77.2k
Fork
35.9k
Chỉ số merge pull request
Chỉ số pull request đang chờ

Mô tả

Feature or enhancement

Proposal:

Currently PyUnstable_SetImmortal requires a uniquely referenced object. I think the docs could be a bit clearer about this but that isn't the tricky part.

The tricky part is that I think it doesn't seem uncommon to create objects which are not uniquely referenced. I have two overlapping places in NumPy where I was hope to use this while making types that were previously static to heaptypes:

  1. If you have non-trivial setup code that might fail you want to immortalize at the very end. In my case I wanted to add the object to a dict (as a last step). (Sure, if I am going to immortalize it, then I can re-order adding it to the dict with a lock or so.)
  2. I am using PyType_FromMetaType() and the returned object already has 3 references when created fresh.

Basically, I get the "err on the safe side" part, but from poking it a bit and looking at https://github.com/python/cpython/issues/113956 it seems that the real limitation seems to be that the current thread owns the object.

Ensuring the object is created on the current thread is trivial no matter how complicated object creation itself is.

CC @ngoldbaum

Has this already been discussed elsewhere?

No response given

Links to previous discussion of this feature:

No response

Linked PRs
  • gh-150956

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.