Re: [INTERNALS-WIN] PHP7: which Windows Kit?

[email protected] (Pierre Joye) Tue, 4 Aug 2015 16:50:09 +0700
Newsgroups php.internals.win
Message-ID <CAEZPtU5WkxMFkRqQ1C0SBLRaO4BkkWrQwrGZiRRDr7W+5jW0kw@mail.gmail.com>
On Tue, Aug 4, 2015 at 3:16 PM, Anatol Belski <[email protected]> wrote:
> Hi Jan,
>
>> -----Original Message-----
>> From: Jan Ehrhardt [mailto:[email protected]]
>> Sent: Tuesday, August 4, 2015 12:32 AM
>> To: [email protected]
>> Cc: [email protected]; [email protected]
>> Subject: Re: [INTERNALS-WIN] PHP7: which Windows Kit?
>>
>> Hi Anatol,
>>
>> "Anatol Belski" in php.internals.win (Mon, 3 Aug 2015 23:30:50 +0200):
>> >Windows Kit means targeting the OS specific features. PHP on Windows
>> >currently doesn't target anything except Desktop/Server in the range of
>> >Vista and up. PHP currently doesn't claim to be a universal APP. Like
>> >to run on a smartphone, or as a store app, or ... PHP doesn't
>> >develop/require any kernel mode drivers. All the functionality in PHP
>> >is covered by the native CRT, which is UCRT due to VS2015 requirement for
>> PHP7.
>>
>> As far as I know that is not the whole story. For instance network
> connectivity
>> (WinSock2.h) is not part of the UCRT, but has to be included from either
>>
>> C:\Program Files (x86)\Windows Kits\8.1\include\um\ or C:\Program Files
>> (x86)\Windows Kits\10\Include\10.0.10240.0\um\
>>
>> A fresh VS 2015 Pro install includes the UM headers from Windows Kit 10.
>> It may be true that you do not target any system, but implicitely you are
> making
>> a choice between '8.1\include\um\' and '10\Include\10.0.10240.0\um\'.
>>
>> Pierre is always hammering on using the same sources to avoid bugs/issues
> that
>> are caused by non-standard source code. Then certainly this must be true
> as well
>> for the included UM headers. You have to rule out differences between the
> 8.1
>> UM headers and the 10.0.10240.0 UM headers. It does not really make any
>> difference for me which of the 2 you choose as long as the choice is clear
> and
>> documented.
>>
>> https://wiki.php.net/internals/windows/stepbystepbuild just says 'Install
> Visual
>> Studio 2015' and open the 'Developer Command Prompt for VS2015'. On my
>> laptop (which still has VS2015 RC) that means using the Windows 8.1 UM kit
> for
>> things like network connectivity. Om my development machine VS 2015 Pro
>> includes the UM kit from 10.0.10240.0.
>> You do not want such differences.
>>
>> Unless you had access to the 10.0.10240.0 UM headers before the release,
> the
>> VC14 dependencies aren't compiled with them. People that start building
> PHP7
>> now (after July 29) using the instructions on the wiki page will have a
> different
>> building environment then what was (and is?) used for the windows.php.net
>> builds.
>> --
> Your information is not correct. A separate SDK is only needed when an
> earlier VS version is used. And SDK 10 needed when targeting specific Win10
> features. PHP7 only requires UCRT which is present on Win10/Server 2016 by
> default or available as a VC++ redistributable on lower.
>
> Regarding headers - within same VS version ABI/API compatibility is usually
> kept. This is the very common thing that should be reliable. For the system
> headers and libraries the system is in charge to keep them compatible within
> the versions range. Requiring them to be the same makes no sense. The
> sentence about the sources is related to the dependency libraries we build
> and use, the CRT/SDK version is predefined.

For the record, I meant php7 will rely on the latest SDK available. We
have no plan to use the windows universal SDK or the like. It is
really not necessary and brings its lot of issues.


-- 
Pierre

@pierrejoye | http://www.libgd.org