RE: [INTERNALS-WIN] RE: [PHP-DEV] Differences in VC6 and VC9 Windows builds and MSSQL Driver.
[email protected] ("Andi Gutmans")
| Newsgroups | php.internals.win |
|---|---|
| Message-ID | <[email protected]> |
> -----Original Message----- > From: Uwe Schindler [mailto:[email protected]] > Sent: Friday, January 02, 2009 2:08 PM > To: 'William A. Rowe, Jr.'; 'Elizabeth M Smith' > Cc: 'Uwe Schindler'; [email protected] > Subject: RE: [INTERNALS-WIN] RE: [PHP-DEV] Differences in VC6 and VC9 Windows > builds and MSSQL Driver. > > > > On a side note... would you advocate linking against a 10 year old > > glibc? > > > > It is??? 01/19/2008 1:30a prod rev 6.1.8638.18000 file rev 7.0.6001.18000 > > properly titled "Windows NT CRT DLL". > > > > Spend some time in depends.exe walking through the Vista/2008 server > > shipping files. If MS trusts it, so do I. > > To note: all binaries coming with recent windows versions (that are not > .NET), e.g. explorer.exe, paint.exe and so on, are linked against the good > old msvcrt.dll. And because of this, msvcrt.dll is the only CRT, that is > distributed with every windows version (since 98 or so). > > And as you can see, the version of the latest msvcrt.dll is rather new and > is so officially supported by MS. I can't remember the details now but about 1.5 years ago we looked into this in great detail. I agree with the analysis that the main problem is when you pass resources from one CRT to another but I don't concur with the assumption that there's not much to gain from moving to the new CRT. One thing we found is that there were some important improvements/fixes esp. on the POSIX compatibility layer in the later CRTs. Unfortunately I can't remember all the details now. There are all sorts of differences including significantly faster (and more flexible) locale operations, some filesystem POSIX APIs were improved in their implementations, etc. In addition there were some old bugs fixed like for example close() on a socket with VC6 doesn't fail (we never quite could figured out what it did), w/ VC8 it crashed so we knew we had to move to closesocket() - just an example of a bug we found as part of the CRTs evolving. We didn't find a significant difference between VC8 and VC9 so I think moving right to VC9 makes sense (can't remember if CRTs are different or not). Anyway I realize these are just a couple of issues I remember and it doesn't solve the issue of synchronization various vendors + projects. However, I do think there's an assumption being made here that the better compiler is the main incentive for moving to a new version. I can definitely say that we found there were some real differences in API implementations too and not just the compiler generating faster binaries. Andi