On Tue, 12 Jan 2021 15:22:36 +0100 Petr Viktorin <encu...@gmail.com> wrote: > On 1/11/21 5:26 PM, Victor Stinner wrote: > > Hi, > > > > There are multiple PEPs covering heap types. The latest one refers to > > other PEPs: PEP 630 "Isolating Extension Modules" by Petr Viktorin. > > https://www.python.org/dev/peps/pep-0630/#motivation > > > > The use case is to embed multiple Python instances (interpreters) in > > the same application process, or to embed Python with multiple calls > > to Py_Initialize/Py_Finalize (sequentially, not in parallel). Static > > types are causing different issues for these use cases. > > If a type is immutable and has no references to heap-allocated objects, > it could stay as a static type. > The issue is that very many types don't fit that. For example, if some > method needs to raise a module-specific exception, that's a reference to > a heap-allocated type, because custom exceptions generally aren't static.
Aren't we confusing two different things here? - a mutable *type*, i.e. a type with mutable state attached to itself (not to instances) - a mutable *instance*, where the mutable state is per-instance While it's very common for custom exceptions to have mutable instance state (e.g. a backend-specific error number), I can't think of any custom exception that has mutable state attached to the exception *type*. > > Also, it's not possible to destroy static types at Python exit, which > > goes against the on-going effort to destroy all Python objects at exit > > (bpo-1635741). > > I don't see why we would need to destroy immutable static objects. They > don't need to be freed. Right. Regards Antoine. _______________________________________________ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/FNSTYH7AQQUJFCD354AWDXVZWCLNV462/ Code of Conduct: http://python.org/psf/codeofconduct/