Hi Martin!
Now that 2.2 is history (well, kind of ;-), would it be the time to think about this again?
By "consideration early in 2.3's life cycle", the OP probably meant that a patch should be posted to SF. Are you willing to implement the complete change (i.e. create a patch that changes each and every source file)? If so, please post one to SF. You may want to start this slowly, first creating only the infrastructure and touching a single file (say, stringobject.c)
Yes, I'm going to implement it. I'd just like to know if there was interest in the patch. Implementing it slowly looks like a nice idea as well. I'll post a patch there. Thanks!
I'd personally like to see opportunities for more magic used. E.g. in a compiler that uses sections, putting all doc strings into a single section might be desirable. They will be a contiguous fragment of the python executable, which helps on demand-paged systems to reduce the startup time. Going further, it might be possible to strip off "unused sections" from the binary after it has been linked, deferring the choice of doc string presence to the installation time.
Interesting. I know it's possible to discard a session. OTOH, I don't know what happens if somebody refer to discarded data. I'll have a look at this.
For that to work, we'd first need to know what compilers offer what syntax to implement such magic, then generalize it to the right macro. If that is a desirable goal, I'd be willing to investigate how to achieve things with gcc, on ELF systems.
This is something pretty easy with gcc. When reading your email, I remembered that the kernel uses this magic to discard a session with code used just when initializing. Looking in the kernel code, I found out this in include/linux/init.h: /* * Mark functions and data as being only used at initialization * or exit time. */ #define __init __attribute__ ((__section__ (".text.init"))) #define __exit __attribute__ ((unused, __section__(".text.exit"))) #define __initdata __attribute__ ((__section__ (".data.init"))) #define __exitdata __attribute__ ((unused, __section__ (".data.exit"))) #define __initsetup __attribute__ ((unused,__section__ (".setup.init"))) #define __init_call __attribute__ ((unused,__section__ (".initcall.init"))) #define __exit_call __attribute__ ((unused,__section__ (".exitcall.exit"))) After surrounding doc strings with a macro, this will be easy to achieve. Thanks! -- Gustavo Niemeyer [ 2AAC 7928 0FBF 0299 5EB5 60E2 2253 B29A 6664 3A0C ]