At 09:51 10.06.2003 -0400, Guido van Rossum wrote:
1. Extending builtins should still be possible like it is now.
Of course, the extensions wouldn't take part in the optimizations you have in mind, but they should still be found.
I'm not sure what you mean by "extending builtins", but if it is what I think it is, I am strongly opposed. The builtins should have fixed capabilities (in a particular Python version). If you want a function that behaves just like a builtin but also can do something else, give it a different name and import it explicitly, don't override the existing entry in __builtin__. If you have a new function that you want to use in lots of code, resist the temptation to add it to the __builtin__ module. Zope did this e.g. with get_transaction() and the net result was reader confusion and intractable dependencies on import order.
what about substituing the built-in entirely for security reasons, Zope3 does that with its wrapping versions: def ri_exec(self, code): # XXX What is the type of code? self.globals['__builtins__'] = RestrictedBuiltins exec code in self.globals regards.