I think these features may improve C code readability.
(Easy feature first).

* // one line comment

* inline function
static inline function can be used instead of may macros.
It is more readable, and type safe.

* Designated Initializers; { .key = value };
https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html

Defining new type may be much shorter.

* stdint.h
https://en.wikibooks.org/wiki/C_Programming/C_Reference/stdint.h

If we can relying to it, we can remove like PY_INT_32

* variadic macro

It may reduce some wrapper functions, but I'm not sure.


On Sat, Aug 6, 2016 at 1:04 PM, Guido van Rossum <gu...@python.org> wrote:
> Different question. What features are we actually talking about? Is it
> possible to enumerate them?
>
> The only thing I'm aware of is declarations following non-declarations
> in the same block, but I'm no C expert any more.
>
> On Fri, Aug 5, 2016 at 8:43 PM, Ned Deily <n...@python.org> wrote:
>> On Aug 5, 2016, at 23:02, Nick Coghlan <ncogh...@gmail.com> wrote:
>>> As a pragmatic requirement, what if we went with:
>>>
>>> - must compile with the Python 3.5 Windows compiler (so MSVC 14.0)
>>> - must compile with the Python 3.5 Mac OS X compiler (some version of 
>>> clang?)
>>> - must compile with the manylinux1 gcc compiler (gcc 4.8.2, as per PEP 513)
>>>
>>> The reason I like the pragmatic definition is that it's one we can
>>> readily automate by ensuring these 3 configurations are always present
>>> in the stable buildbot fleet, while the formal standards based version
>>> is technically more precise, but not in a way we can easily test.
>>>
>>> It also gives us an objective criterion for when we change the
>>> definitions: when the baseline compiler version for the respective
>>> platform builds change, and Python 3.x versions using the older
>>> definition are no longer supported by python-dev.
>>>
>>> Phrasing the policy that way would mean moving future iterations of
>>> the manylinux spec out of distutils-sig only territory into one which
>>> needs to be reviewed by both distutils-sig and python-dev (since it
>>> would now also modify CPython's compiler compatibility requirements in
>>> PEP 7), but I think that's a reasonable position to adopt, and
>>> unlikely to cause any major problems (manylinux is a *trailing* edge
>>> definition that is only likely to get updated as the oldest enterprise
>>> Linux definitions drop out of commercial support)
>>>
>>> The other question we need to consider is the possible impact on PEP
>>> 11: what happens to support for alternate compilers and platforms that
>>> *have* a buildbot, but may not support particular C99 features? Should
>>> there be a 4th clause that says "- must compile and run on all stable
>>> buildbots"?
>>
>> [Nick's reply above arrived just as I was getting ready to send my own 
>> response below which covers some of the same territory.]
>>
>> On Aug 5, 2016, at 18:37, Guido van Rossum <gvanros...@gmail.com> wrote:
>>> I think if we want to revisit this in the future it should be an
>>> explicit change.
>>> On Fri, Aug 5, 2016 at 3:27 PM, Brett Cannon <br...@python.org> wrote:
>>>> On Fri, 5 Aug 2016 at 15:17 Guido van Rossum <gvanros...@gmail.com> wrote:
>>>>> I want it to list specific versions that are known to be good right
>>>>> now, so we can point fingers appropriately when a regression happens.
>>>> OK, then we could pin it to MSVC 2016, gcc 6.1, and clang 3.8.1 which are
>>>> the latest releases (unless I'm missing a compiler we all feel like we
>>>> should officially support).
>>
>> While in principle allowing C99 features to be used in cpython is a *good* 
>> thing, I'm sure that I don't fully understand all of the implications of 
>> adopting this policy for 3.6.  I think we need to be sure we don't 
>> inadvertently drop support for some platforms and/or older releases of some 
>> platforms.  The key word is "inadvertently".  Not all of those compiler 
>> versions above are supported everywhere we currently run.  If that's what we 
>> want to do, that's fine but we should be explicit about that.  Two sets of 
>> concerns that come to mind are our buildbots and support for older OS X 
>> releases.
>>
>> If I gathered the data correctly, for the default branch (upcoming 3.6 
>> release), we currently have 31 buildbots: 19 classified as "stable" and 12 
>> as "unstable".  Of the stable buildbots, here is the count, version, and 
>> platform architecture of compilers in use:
>>
>> 2 x MSVC 14.0 2015 64 bit (AMD64)
>> 1 x MSVC 14.0 2015 32 bit (AMD64)
>>
>> 1 x Clang 3.8.0 (AMD64)
>> 1 x Clang 3.4.1 (AMD64)
>>
>> 1 x GCC 5.3.1 (s390x)
>> 2 x GCC 4.9.3 (x86)
>> 2 x GCC 4.9.2 (AMD64)
>> 1 x GCC 4.9.2 (PPC64LE)
>> 2 x GCC 4.8.5 (s390x)
>> 1 x GCC 4.8.4 (x86)
>> 1 x GCC 4.8.3 (PPC64)
>> 1 x GCC 4.3.3 (AMD64)
>> 2 x GCC 4.2.1 (AMD64)
>> 1 x GCC 4.0.1 (x86)
>>
>> I know very little about the details of C99 support in those compilers but I 
>> gather from this link (https://gcc.gnu.org/c99status.html) that GCC 4.5 is 
>> potentially the earliest level that properly supports C99.  Note that we 
>> have a number of buildbots running version of GCC older than 4.5 (including 
>> all of our OS X stable buildbots) and only one (an s390) running 5.x and 
>> none yet running 6.x.
>>
>> I don't know that we've written this policy anywhere but I think it has been 
>> our de facto policy to require only the "standard" platform build tools 
>> (including compilers) to build or install Python on our supported platform 
>> versions.  With my OS X hat on, I know this likely presents an issue for the 
>> OS X installer builds.  Up to now, we have been providing installers that 
>> run on all Macs that are supported back to at least OS X 10.6 and, to do 
>> that, we build on 10.6 with the standard Apple build tools available there 
>> including GCC 4.2.  If GCC 4.2 proves to no longer be suitable, we'll have 
>> to make some adjustment in either what versions of OS X we support and/or 
>> how we build python.org Pythons for OS X.  There are several possibilities, 
>> and, at some point, we will need to do something anyway.  I am hoping to 
>> propose and implement some changes prior to 3.6.0b1 and this discussion will 
>> shape that proposal.
>>
>> I don't think OS X support should be a gating factor in deciding to move 
>> ahead with C99 adoption but it does point out that there might be more 
>> ramifications to this decision.  What may be more difficult is to judge the 
>> impact on other platforms that don't get as much attention from most of us.  
>> For this to move forward, we need to be able to state what the impact to 
>> current users will be.
>>
>> --
>>   Ned Deily
>>   n...@python.org -- []
>>
>> _______________________________________________
>> Python-Dev mailing list
>> Python-Dev@python.org
>> https://mail.python.org/mailman/listinfo/python-dev
>> Unsubscribe: 
>> https://mail.python.org/mailman/options/python-dev/guido%40python.org
>
>
>
> --
> --Guido van Rossum (python.org/~guido)
> _______________________________________________
> Python-Dev mailing list
> Python-Dev@python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: 
> https://mail.python.org/mailman/options/python-dev/songofacandy%40gmail.com



-- 
INADA Naoki  <songofaca...@gmail.com>
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to