<snip>
Perhaps the gcc compiler is an absolute
requirement and if that is true then the code isn't acceptable to any
other compiler regardless if it is C99 compliant or otherwise.

GCC is not a requirement. At the very least, PHP compiles on clang and
MSVC, and I believe it works with some other compilers also.


I have to test with a very strict POSIX system compliant to POSIX.1-2001
and Single UNIX Specification, Version 3 (SUSv3). There is also XNS4
sockets and XTI interfaces which really is XNS5 which is a superset
and LP64 clean derivative of XNS4. The XNS4 spec is 32-bit only and I
think nearly everything lately is targetted to 64-bit systems specs. Not
sure as I am sure there are a bucket of 32-bit embedded systems on the
market still with things like Motorola or Freescale system on a chip
embedded solutions for automobiles and mobile data access pads. Those
are almost always a custom 32-bit Linux kernel for touch screen apps and
other control solutions etc etc.

However within the strict confines of C99 there is the Oracle Developer
Studio which conforms to the ISO/IEC 9899:1999 and ISO/IEC 9899:1990. I
think that ISO/IEC 9899:2014 standards compliance is in progress. With
some feature test macros we can get access to extensions. From the very
long and pedantic man page :

     If the application is using interfaces and headers
     not  defined  by that standard, then in addition to defining
     the appropriate standard feature test macro,  it  must  also
     define  __EXTENSIONS__. Defining __EXTENSIONS__ provides the
     application with access to all interfaces and headers not in
     conflict  with  the specified standard. The application must
     define __EXTENSIONS__ either on the compile command line  or
     within the application source files.

So the POSIX.1-2001 standards compliance can be enforced with the simple
define -D_POSIX_C_SOURCE=200112L but going all the way up to SUSv3 will
require -D_XOPEN_SOURCE=600. This is getting a bit off topic but the
real idea here is that php 5.6.29 will compile perfectly in a 64-bit
strict environment with the allowance for extensions. There is no need
to resort to GCC which is not yet in full compliance. PHP 5.6.x then
runs its entire testsuite and the results are very positive. This can
not ( yet ) be done with PHP 7.x for any value x but I am certainly
going to try.

OKay .. so the long winded summary is that hoo ray PHP 5.6.x will be
around long enough for PHP 7.x to slowly become serious code clean and
it may compile within a very strict environment.

Dennis


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to