[Python-Dev] Rename Include/internals/ to Include/pycore/
Steve Dower
steve.dower at python.org
Thu Nov 1 11:38:24 EDT 2018
I assume the redundancy was there to handle the naming collision
problem, but a better way to do that is to have only header files that
users should ever use in "include/", and put the rest inside
"include/python/" and "include/internal/" (and if possible, we don't
distribute the internal directory as part of -develop packages, which
only really impacts the Windows installer as far as we're concerned, but
I assume some distros will care).
That would mean a layout like:
include/
Python.h
typeslots.h
Python/
abstract.h
...
internal/
pycore_atomic.h
...
End users/distutils should only -Iinclude, while our build can
-Iinclude/Python and -Iinclude/internal as well. Or we can update all of
our includes to specify the directory (which I'd prefer - #include
"name.h" should look adjacent to the file first, while #include <name.h>
looks at search paths first, which should be able to deal with collisions).
Any change here is an improvement, though. I'll be happy for
Py_BUILD_CORE to go away (or at least only imply -Iinclude/internal,
rather than actual preprocessor work), no matter where files land
precisely :)
Cheers,
Steve
On 31Oct2018 1835, Eric Snow wrote:
> On the one hand dropping redundancy in the filename is fine. On the
> other having the names mirror the public header files is valuable. How
> about leaving the base names alone and change the directory to "pyinternal"?
>
> -eric
>
> On Wed, Oct 31, 2018, 17:36 Victor Stinner <vstinner at redhat.com
> <mailto:vstinner at redhat.com> wrote:
>
> Ok, thanks. I decided to remove the redundant "py", so I renamed
> "pystate.h" to "pycore_state.h" (single "py", instead of
> "pycore_pystate.h", double "py py").
>
> I updated my PR:
> https://github.com/python/cpython/pull/10263
>
> * Rename Include/internal/ header files:
>
> * pyatomic.h -> pycore_atomic.h
> * ceval.h -> pycore_ceval.h
> * condvar.h -> pycore_condvar.h
> * context.h -> pycore_context.h
> * pygetopt.h -> pycore_getopt.h
> * gil.h -> pycore_gil.h
> * hamt.h -> pycore_hamt.h
> * hash.h -> pycore_hash.h
> * mem.h -> pycore_mem.h
> * pystate.h -> pycore_state.h
> * warnings.h -> pycore_warnings.h
>
> * PCbuild project, Makefile.pre.in <http://Makefile.pre.in>,
> Modules/Setup: add the
> Include/internal/ directory to the search paths of header files.
> * Update include. For example, replace #include "internal/mem.h"
> with #include "pycore_mem.h".
>
> Victor
> Le mer. 31 oct. 2018 à 23:38, Eric Snow <ericsnowcurrently at gmail.com
> <mailto:ericsnowcurrently at gmail.com>> a écrit :
> >
> > B
> > On Wed, Oct 31, 2018 at 4:28 PM Victor Stinner
> <vstinner at redhat.com <mailto:vstinner at redhat.com>> wrote:
> > >
> > > Le mer. 31 oct. 2018 à 22:19, Eric Snow
> <ericsnowcurrently at gmail.com <mailto:ericsnowcurrently at gmail.com>> a
> écrit :
> > > > > Maybe we can keep "Include/internal/" directory name, but add
> > > > > "pycore_" rather than "internal_" to header filenames?
> > > >
> > > > this sounds good to me. thanks for chasing this down.
> > >
> > > What do you prefer?
> > >
> > > (A Include/internal/internal_pystate.h
> > > (B) Include/internal/pycore_pystate.h
> > > (C) Include/pycore/pycore_pystate.h
> > >
> > > Victor
>
More information about the Python-Dev
mailing list