On singleton modules, heap types, and subinterpreters

Petr Viktorin <[email protected]> Sun, 26 Jul 2015 12:39:21 +0200
Newsgroups gmane.comp.python.import
Message-ID <CA+=+wqDjQnUq2AteFWRG7fZJ9U5GvaMYwunZEo_TDxd-CYcKXw@mail.gmail.com>
SGVsbG8sClRoaXMgaXMgYSBmb2xsb3ctdXAgdG8gUEVQIDQ4OSBhbmQgZGlzY3Vzc2lvbnMgcmVn
YXJkaW5nIHBlci1tb2R1bGUKZGF0YSBQeVN0YXRlX0ZpbmRNb2R1bGUuCkl0IHR1cm5lZCBvdXQg
dG8gYmUgcXVpdGUgdGhlIHJhYmJpdCBob2xlLiBBcG9sb2dpZXMgZm9yIHRoZSBsb25nCm1haWws
IEkgaG9wZSBpdCBlbmRzIHVwIHN1ZmZpY2llbnRseSBjbGVhci4KClVzaW5nIHNpbmdsZS1waGFz
ZSBpbml0aWFsaXphdGlvbiAodGhlIHByZS1QRVAgNDg5IHNvbHV0aW9uKSwKZXh0ZW5zaW9uIG1v
ZHVsZXMgYXJlIGVmZmVjdGl2ZWx5IHNpbmdsZXRvbnMg4oCTIHRoZXJlJ3MgdXAgdG8gb25lCmlu
c3RhbmNlIG9mIGEgcGFydGljdWxhciBtb2R1bGUgaW4gYW55IGdpdmVuIHN1YmludGVycHJldGVy
LiBDeXRob24KbW9kdWxlcyBvbmx5IGFsbG93IG9uZSBpbnN0YW5jZSAqcGVyIHByb2Nlc3MqLgoK
VXNpbmcgdGhlIG5ldyBtdWx0aXBsZS1waGFzZSBpbml0LCBvbmUgY2FuIGNyZWF0ZSBzZXZlcmFs
IG1vZHVsZXMgZnJvbQpvbmUgUHlNb2R1bGVEZWYg4oCTIGVpdGhlciAoYWdhaW4pIG9uZSBwZXIg
c3ViaW50ZXJwcmV0ZXIsIG9yIGZvcgp0ZXN0aW5nIHB1cnBvc2VzLiBBcyBwZXIgdGhlIGdvYWwg
b2YgUEVQIDQ4OSwgdGhpcyBicmluZ3MgZXh0ZW5zaW9uCm1vZHVsZXMgY2xvc2VyIHRvIGhvdyBQ
eXRob24gbW9kdWxlcyBiZWhhdmUuCgpUaGUgcHJvYmxlbSBpcyB0aGF0IGNsYXNzZXMgZGVmaW5l
ZCBpbiBhIG1vZHVsZSBkb24ndCBoYXZlIGEgcmVmZXJlbmNlCnRvIHRoZSBtb2R1bGUgb2JqZWN0
LiBGb3IgZXhhbXBsZSwgdGhlIF9jc3YgbW9kdWxlIGRlZmluZXMgdGhlIGNsYXNzZXMKInJlYWRl
ciIgYW5kICJFcnJvciIuIFRoZSBjb2RlIGluICJyZWFkZXIiIG5lZWRzIHRvIGhhdmUgYWNjZXNz
IHRvCiJFcnJvciIgaW4gb3JkZXIgdG8gcmFpc2UgZXhjZXB0aW9ucy4KKFRoZSBFcnJvciBjbGFz
cyBoZXJlIGlzIGp1c3QgYW4gZXhhbXBsZSBvZiBtb2R1bGUgc3RhdGU7IHRoaW5ncyBsaWtlCl9j
c3YncyBnbG9iYWwgZmllbGQgc2l6ZSBsaW1pdCBvciBDeXRob24gZ2xvYmFscyBhbHNvIG5lZWQg
dG8gYmUKYWNjZXNzZWQgZnJvbSBjbGFzc2VzLikKV2l0aCB0aGUgdHJhZGl0aW9uYWwgc2luZ2xl
LXBoYXNlIGluaXQsIHRvIGFjY2VzcyBtb2R1bGUgc3RhdGUsIG9uZQpjYW4gdXNlIFB5U3RhdGVf
RmluZE1vZHVsZSwgd2hpY2ggcXVlcmllcyBhIHBlci1zdWJpbnRlcnByZXRlciBtYXBwaW5nCm9m
IFB5TW9kdWxlRGVmIHRvIG1vZHVsZSBvYmplY3QuIFRoaXMgb2J2aW91c2x5IGFzc3VtZXMgb25l
IG1vZHVsZSBwZXIKc3ViaW50ZXJwcmV0ZXIsIHdoaWNoIGlzIGEgbGltaXRhdGlvbiB0aGF0IFBF
UCA0ODkgY3VycmVudGx5IGF2b2lkcy4KQnJpbmdpbmcgdGhpcyBsaW1pdGF0aW9uIGJhY2sgd291
bGQgcHJvYmFibHkgYmUgdGhlIGVhc2llc3Qgc29sdXRpb24KdG8gdGhlIHByb2JsZW0gSSdtIGRl
c2NyaWJpbmcgaGVyZTsgdGhpcyBoYXMgYmVlbiBkaXNjdXNzZWQgaW4gdGhlCmZvcm0gb2YgInNp
bmdsZXRvbiBtb2R1bGVzIiBbMF0sIGFuZCBwb3N0cG9uZWQgaW4gaG9wZXMgb2YgYSBiZXR0ZXIK
c29sdXRpb24uCgpTbywgd2hhdCBvcHRpb25zIGFyZSB0aGVyZSBmb3IgbWV0aG9kcyBvZiBleHRl
bnNpb24gY2xhc3NlcyB0byBnZXQgYQpob2xkIG9mIHRoZSBtb2R1bGUgb2JqZWN0IChvciBtb2R1
bGUgc3RhdGUpPwpGb3Igc3RhdGljIGNsYXNzZXMsIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHN0b3Jl
IGEgcmVmZXJlbmNlIG1vZHVsZSwKYmVjYXVzZSBtdWx0aXBsZSBtb2R1bGVzIGNhbiB1c2UgYSBz
aW5nbGUgc3RhdGljIGNsYXNzLgpBbHNvLCBzdGF0aWMgY2xhc3NlcyB3b24ndCBiZWhhdmUgd2Vs
bCB3aXRoIG11bHRpcGxlIHN1YmludGVycHJldGVyczoKaWYgYW4gb2JqZWN0IG9mIHN1Y2ggYSBj
bGFzcyBpcyBwYXNzZWQgaW50byBhIHN1Ym1vZHVsZSB0aGF0IGRvZXNuJ3QKaGF2ZSB0aGUgY29y
cmVzcG9uZGluZyBtb2R1bGUgb2JqZWN0IGxvYWRlZCwgUHlTdGF0ZV9GaW5kTW9kdWxlIHdpbGwK
ZmFpbC4gQW5kIFB5U3RhdGVfRmluZE1vZHVsZSBmYWlsdXJlIHRlbmRzIHRvIGhhdmUgdmVyeSBu
YXN0eQpjb25zZXF1ZW5jZXMg4oCTIHRoZXJlJ3MgcmVhbGx5IG5vdCBtdWNoIHlvdSBjYW4gZG8g
d2hlbiB5b3UgZ2V0IGEgTlVMTCwKYW5kIG1vc3QgbW9kdWxlcyBkb24ndCBldmVuIGNoZWNrLiBB
bmQgZXZlbiBpZiBQeVN0YXRlX0ZpbmRNb2R1bGUKc3VjY2VlZHMsIGluIGEgImZvcmVpZ24iIHN1
YmludGVycHJldGVyIGl0IGFyZ3VhYmx5IHdvbid0IGZpbmQgdGhlCiJjb3JyZWN0IiBtb2R1bGUg
aW5zdGFuY2UuIFNvLCBzaW5nbGV0b24gbW9kdWxlcyAob3IgdGhlIHByZS1QRVA0ODkKc3RhdHVz
IHF1bykgYXJlbid0IGEgZ29vZCBhbnN3ZXIuCgpTbyBpdCBzZWVtcyB0aGF0IGV4dGVuc2lvbiBt
b2R1bGVzIHRoYXQgbmVlZCBwZXItbW9kdWxlIHN0YXRlIG5lZWQgdG8KdXNlIGhlYXAgdHlwZXMu
IEFuZCB0aGUgaGVhcCB0eXBlcyBuZWVkIGEgcmVmZXJlbmNlIHRvICJ0aGVpciIgbW9kdWxlLgpB
bmQgbWV0aG9kcyBvZiB0aG9zZSB0eXBlcyBuZWVkIHRvIGJlIGNhbGxlZCB3aXRoIHRoZSBjbGFz
cyB0aGF0CmRlZmluZWQgdGhlbS4KVGhpcyB3b3VsZCBiZSBwb3NzaWJsZSB3aXRoIHJlZ3VsYXIg
bWV0aG9kcy4gQnV0LCBjb25zaWRlciBmb3IgZXhhbXBsZQp0aGUgdHBfaXRlcm5leHQgc2lnbmF0
dXJlOgoKICAgIFB5T2JqZWN0KiBteW9ial9pdGVybmV4dChQeU9iamVjdCAqc2VsZikKClRoZXJl
J3Mgbm8gZ29vZCB3YXkgZm9yIHRoaXMgZnVuY3Rpb24gdG8gZ2V0IGEgcmVmZXJlbmNlIHRvIHRo
ZSBjbGFzcwppdCBiZWxvbmdzIHRvLgpgUHlfVFlQRShzZWxmKWAgbWlnaHQgYmUgYSBzdWJjbGFz
cy4gVGhlIGJlc3Qgd2F5IEkgY2FuIHRoaW5rIG9mIGlzCndhbGtpbmcgdGhlIE1STyB1bnRpbCBJ
IGdldCB0byBhIGNsYXNzIHdpdGggdHBfaXRlciAob3IgYSBjbGFzcwpjcmVhdGVkIGZyb20gIm15
IiBrbm93biBQeVR5cGVfU3BlYyksIGJ1dCBvbmUgb2YgdGhlIHJlcXVpcmVtZW50cyBvbgptb2R1
bGUgc3RhdGUgaXMgdGhhdCBpdCBuZWVkcyB0byBiZSBlZmZpY2llbnQsIHNvIEknZCByYXRoZXIg
YXZvaWQKd2Fsa2luZyBhIGxpc3QuCgpUaGF0J3Mgd2hlcmUgSSdtIGN1cnJlbnRseSBzdHVjay4g
RG9lcyBhbnlvbmUgaGF2ZSBhbnkgaWRlYXMvY29tbWVudHMKb24gdGhpcyBwcm9ibGVtPwoKWzBd
IGh0dHBzOi8vbWFpbC5weXRob24ub3JnL3BpcGVybWFpbC9pbXBvcnQtc2lnLzIwMTUtQXByaWwv
MDAwOTQ2Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KSW1wb3J0LVNJRyBtYWlsaW5nIGxpc3QKSW1wb3J0LVNJR0BweXRob24ub3JnCmh0dHBzOi8v
bWFpbC5weXRob24ub3JnL21haWxtYW4vbGlzdGluZm8vaW1wb3J0LXNpZwo=