-
Notifications
You must be signed in to change notification settings - Fork 530
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
win32: retire visual studio 2013 support #21624
Conversation
Yeah, if the build is broken and nobody noticed, it's a no-brainer. VS2013 was the odd one out of the supported versions, the only one without UCRT. |
What then is the earliest supported version after this is merged? |
Earliest supported will then be version 14.0, also referred to as "MSVC140", and "Visual C++ 2015" in the GNUmakefile and Makefile. |
I recently (tried) to test VS 2013 builds, but while vs2013 in theory supports mixed declarations and code, in practice that support is broken, and failed to build toke.obj: The one case I looked at in detail, VS 2013 required an extra ; after a conditional statement to accept the following declaration, for example: ``` C:\Users\Tony\dev\perl\git>cl /c mixed.c Microsoft (R) C/C++ Optimizing Compiler Version 18.00.21005.1 for x64 Copyright (C) Microsoft Corporation. All rights reserved. mixed.c mixed.c(8) : error C2143: syntax error : missing ';' before 'const' mixed.c(9) : error C2065: 'pend' : undeclared identifier mixed.c(9) : error C2100: illegal indirection C:\Users\Tony\dev\perl\git>type mixed.c /* adapted from S_intuit_more() in toke.c. don't run this code */ int g(const char *p) { if (!p) return (0); const char * const pend = p+1; return *pend; } ``` regcomp.obj also failed to build due to the use of the "inline" keyword in regcomp.h. This is fairly trivially fixable but inline is also C99. Despite these build issues we haven't received any error reports for VS2013, so I don't think it's worth re-working any mixed declarations to support it. It might be worth updating regcomp.h to use PERL_STATIC_INLINE but that's out of scope for this commit.
fef5fef
to
e8a4ced
Compare
I believe we can also remove anything that special cases any _MSC_VER < 1900 |
Not a lot of those around:
|
On 11/14/23 21:02, mauke wrote:
Not a lot of those around:
|cpan/Compress-Raw-Zlib/zlib-src/zutil.c:#if (!defined(_MSC_VER) ||
(_MSC_VER <= 600)) cpan/Compress-Raw-Zlib/zlib-src/zutil.h:#if
(defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX
cpan/Time-Piece/Piece.xs:#if !(_MSC_VER >= 1500)
The two files above will require coordination with their upstream
maintainers.
dist/Time-HiRes/HiRes.xs:# if((defined(_MSC_VER) && _MSC_VER < 1900) ||
\ perl.h:# elif _MSC_VER < 1900 |
This can be handled within blead.
|
We can remove more than just that from HiRes.xs.
|
Also, now that MingW can be compiled with UCRT, things that are under WIN32 and |
I recently (tried) to test VS 2013 builds, but while vs2013 in theory supports mixed declarations and code, in practice that support is broken, and failed to build toke.obj:
The one case I looked at in detail, VS 2013 required an extra ; after a conditional statement to accept the following declaration, for example:
regcomp.obj also failed to build due to the use of the "inline" keyword in regcomp.h. This is fairly trivially fixable but inline is also C99.
Despite these build issues we haven't received any error reports for VS2013, so I don't think it's worth re-working any mixed declarations to support it.
It might be worth updating regcomp.h to use PERL_STATIC_INLINE but that's out of scope for this commit.