On Thu, 22 Mar 2018 21:34:44 +0100 Jeroen Demeyer <j.deme...@ugent.be> wrote: > Dear python-ideas, > > I would like to draft a PEP to change the implementation of functions > and methods in CPython. The idea for this PEP come from a discussion on > https://bugs.python.org/issue30071 > > The core idea of the PEP is to reorganize classes for functions and > methods with the goal of removing the difference between > functions/methods implemented in C and functions/methods implemented in > Python. > > Currently, CPython has two different function classes: the first is > Python functions, which is what you get when defining a function with > def or lambda. The second is built-in functions such as len, isinstance > or numpy.dot. These are implemented in C. > > These two classes are completely independent with different > functionality. For example, built-in functions do not have __get__ and > therefore cannot be used as methods. And only Python functions support > introspection like inspect.getargspec or inspect.getsourcefile. > > This is a problem for projects like Cython that want to implement > functions in C but still want to offer functionality close to Python > functions. In Cython, this was solved by inventing a new function class > called cyfunction. Unfortunately, this new function class creates > problems, for example the inspect module does not recognize such > functions as being functions (this is the bug mentioned above) and the > performance is worse (CPython has specific optimizations for calling > built-in functions). > > When you look at methods, the inconsistency increases: On the one hand, > the implementation of built-in functions and bound methods is very > similar but built-in unbound methods are different. On the other hand, > Python functions and unbound methods are identical but bound methods are > different. > > Do you think that it makes sense to propose a PEP for this?
It does make sense, since the proposal sounds ambitious (and perhaps impossible without breaking compatibility). Regards Antoine. _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/