VS 11 Express is Metro only.

The free Visual Studio 11 Express for Windows 8 (still in beta) will produce both 32 and 64 bit binaries and allow multiple languages but will only produce Metro apps. For desktop apps, either the paid Visual Studio versions or the free 2010 Express releases are required. https://www.microsoft.com/visualstudio/11/en-us/products/express bottom of page. Will this inhibit someday moving to Visual Studio 11 Professional or would VS2010 Express or VC++2010 Express still work for hacking on Python or making extensions that would work with any VS11-produced binary? -- Terry Jan Reedy

On 24 May 2012 19:36, <martin@v.loewis.de> wrote:
It is better documented here, and seems something to start thinking about: http://arstechnica.com/information-technology/2012/05/no-cost-desktop-softwa...

It is better documented here, and seems something to start thinking about:
http://arstechnica.com/information-technology/2012/05/no-cost-desktop-softwa...
This isn't actually better documentation, since it talks about the future, without being "official" (i.e. it's Peter Bright's opinion, not a Microsoft announcement). I hereby predict that Microsoft will revert this decision, and that VS Express 11 will be able to build CPython. Regards, Martin

On Fri, May 25, 2012 at 5:06 AM, <martin@v.loewis.de> wrote:
But will it be able to target Windows XP? http://connect.microsoft.com/VisualStudio/feedback/details/690617/bug-apps-c... (Disclaimer: I work at Microsoft, but I know nothing about either of these topics.) -Curt

On Fri, May 25, 2012 at 10:17 PM, Curt Hagenlocher <curt@hagenlocher.org> wrote:
But will it be able to target Windows XP?
http://connect.microsoft.com/VisualStudio/feedback/details/690617/bug-apps-c...
The key things to remember at this point: 1. There's every chance Microsoft will reverse this decision, for all the reasons they introduced the Express editions of Visual Studio in the first place (e.g. to stop haemorrhaging hobbyist developers to other ecosystems where development tools aren't a profit centre). The collective "WTF?!" from third parties at their current approach (eloquently expressed by Peter Bright over at Ars) is going to be hard for even the most passionate Metro advocates to ignore. 2. It's going to be at least 18 months before CPython's Windows build is likely to migrate to VS2011, and if there's still no desktop app support in the Express edition at that time, that will be a strong argument against migrating. Cheers, Nick. -- Nick Coghlan | ncoghlan@gmail.com | Brisbane, Australia

I'll still need to try. I couldn't easily find a Windows XP installation to try out whether a hello world application runs on XP. Please understand that Visual Studio never had the notion of "targetting" an operating system. The Windows SDK has that notion, and it appears that targetting XP continues to be supported. Visual Studio C/C++ only targets Debug vs. Release, and Win32 vs. IA-64 vs. x64 (leaving CE/Windows Mobile/WP7 aside). The only place where platform support matters is the CRT, and this is what I still want to test. E.g. it might be that the C RT works on XP, and the C++ RT might use newer API. Regards, Martin

Curt:
But will it be able to target Windows XP?
It will likely be possible in a reasonable manner at some point. From http://blogs.msdn.com/b/visualstudio/archive/2012/05/18/a-look-ahead-at-the-... : """C++ developers can also use the multi-targeting capability included in Visual Studio 11 to continue using the compilers and libraries included in Visual Studio 2010 to target Windows XP and Windows Server 2003. Multi-targeting for C++ applications currently requires a side-by-side installation of Visual Studio 2010. Separately, we are evaluating options for C++ that would enable developers to directly target XP without requiring a side-by-side installation of Visual Studio 2010 and intend to deliver this update post-RTM. """ Martin v. Löwis wrote:
C++ runtime is more dependent on post-XP features than C runtime but even the C runtime currently needs some thunks: http://tedwvc.wordpress.com/ Neil

On 05/30/2012 12:43 PM, "Martin v. Löwis" wrote:
I may be misremembering, but--the C API of necessity calls the Win32 API. So if Microsoft chooses to call new Win32 APIs as part of the C API, this can force you to require a minimum Windows version. I dimly recall an incident some years back where part of the startup code for a C program (code called before main / WinMain) was calling a newish API, and thus programs generated with that version of the compiler could not support older Windows versions. //arry/

I have now tried, and it seems that the chances are really low (unless you use the VS 2010 tool chain, in which case you can just as well use VS 2010 Express in the first place). The VS 11 linker sets the "OS version" and "subsystem version" to 6.0, which means that XP refuses to recognize the files as executables. While the /subsystem switch allows to specify a different version, specifying 5.02 (needed for XP) gives an error that this is smaller than the minimum supported version. So for that reason alone, VS 11 cannot produce binaries that work on XP, but that would be easy to change for MS. In addition, the CRT uses various API in its startup code already that are Vista+. I already mentioned GetTickCount64, which is used to initialize the security cookie (for /GS). In addition, TLS is now implemented using FlsAlloc to better support fibers, which is also Vista+. This dependency cannot be easily broken, except to access FlsAlloc through LoadLibrary/GetProcAddress or weak externals. There may be more dependencies on Vista+. Regards, Martin

On 05/31/2012 09:47 AM, "Martin v. Löwis" wrote:
Microsoft is now claiming that it will be able to using something called "multi-targeting", "later this year. http://blogs.msdn.com/b/vcblog/archive/2012/06/15/10320645.aspx //arry/

Interesting. Unlike the re-addition of desktop app support for Express, which was a purely political decision, this change likely involves significant code changes to the CRT, in particular if they aim for a single CRT that works on XP but uses newer features on Vista+. At the downside for CPython, this probably also means that they will not extend the life of VS 2010 just to support XP, as they can tell people to switch to VS 2012 and still support XP. So VS 2010 will probably expire on 07/14/2015 for mainstream support as planned today. So for 3.4, we have to ask whether to switch to VS 2012 or stay with VS 2010, and for 3.5, we have to ask whether to switch to VS 2014 (assuming that's when the next release is made). Regards, Martin

On Fri, May 25, 2012 at 7:06 AM, <martin@v.loewis.de> wrote:
And your prediction was right on :-) : http://blogs.msdn.com/b/visualstudio/archive/2012/06/08/visual-studio-expres.... -- # Meador

On 24 May 2012 19:36, <martin@v.loewis.de> wrote:
It is better documented here, and seems something to start thinking about: http://arstechnica.com/information-technology/2012/05/no-cost-desktop-softwa...

It is better documented here, and seems something to start thinking about:
http://arstechnica.com/information-technology/2012/05/no-cost-desktop-softwa...
This isn't actually better documentation, since it talks about the future, without being "official" (i.e. it's Peter Bright's opinion, not a Microsoft announcement). I hereby predict that Microsoft will revert this decision, and that VS Express 11 will be able to build CPython. Regards, Martin

On Fri, May 25, 2012 at 5:06 AM, <martin@v.loewis.de> wrote:
But will it be able to target Windows XP? http://connect.microsoft.com/VisualStudio/feedback/details/690617/bug-apps-c... (Disclaimer: I work at Microsoft, but I know nothing about either of these topics.) -Curt

On Fri, May 25, 2012 at 10:17 PM, Curt Hagenlocher <curt@hagenlocher.org> wrote:
But will it be able to target Windows XP?
http://connect.microsoft.com/VisualStudio/feedback/details/690617/bug-apps-c...
The key things to remember at this point: 1. There's every chance Microsoft will reverse this decision, for all the reasons they introduced the Express editions of Visual Studio in the first place (e.g. to stop haemorrhaging hobbyist developers to other ecosystems where development tools aren't a profit centre). The collective "WTF?!" from third parties at their current approach (eloquently expressed by Peter Bright over at Ars) is going to be hard for even the most passionate Metro advocates to ignore. 2. It's going to be at least 18 months before CPython's Windows build is likely to migrate to VS2011, and if there's still no desktop app support in the Express edition at that time, that will be a strong argument against migrating. Cheers, Nick. -- Nick Coghlan | ncoghlan@gmail.com | Brisbane, Australia

I'll still need to try. I couldn't easily find a Windows XP installation to try out whether a hello world application runs on XP. Please understand that Visual Studio never had the notion of "targetting" an operating system. The Windows SDK has that notion, and it appears that targetting XP continues to be supported. Visual Studio C/C++ only targets Debug vs. Release, and Win32 vs. IA-64 vs. x64 (leaving CE/Windows Mobile/WP7 aside). The only place where platform support matters is the CRT, and this is what I still want to test. E.g. it might be that the C RT works on XP, and the C++ RT might use newer API. Regards, Martin

Curt:
But will it be able to target Windows XP?
It will likely be possible in a reasonable manner at some point. From http://blogs.msdn.com/b/visualstudio/archive/2012/05/18/a-look-ahead-at-the-... : """C++ developers can also use the multi-targeting capability included in Visual Studio 11 to continue using the compilers and libraries included in Visual Studio 2010 to target Windows XP and Windows Server 2003. Multi-targeting for C++ applications currently requires a side-by-side installation of Visual Studio 2010. Separately, we are evaluating options for C++ that would enable developers to directly target XP without requiring a side-by-side installation of Visual Studio 2010 and intend to deliver this update post-RTM. """ Martin v. Löwis wrote:
C++ runtime is more dependent on post-XP features than C runtime but even the C runtime currently needs some thunks: http://tedwvc.wordpress.com/ Neil

On 05/30/2012 12:43 PM, "Martin v. Löwis" wrote:
I may be misremembering, but--the C API of necessity calls the Win32 API. So if Microsoft chooses to call new Win32 APIs as part of the C API, this can force you to require a minimum Windows version. I dimly recall an incident some years back where part of the startup code for a C program (code called before main / WinMain) was calling a newish API, and thus programs generated with that version of the compiler could not support older Windows versions. //arry/

I have now tried, and it seems that the chances are really low (unless you use the VS 2010 tool chain, in which case you can just as well use VS 2010 Express in the first place). The VS 11 linker sets the "OS version" and "subsystem version" to 6.0, which means that XP refuses to recognize the files as executables. While the /subsystem switch allows to specify a different version, specifying 5.02 (needed for XP) gives an error that this is smaller than the minimum supported version. So for that reason alone, VS 11 cannot produce binaries that work on XP, but that would be easy to change for MS. In addition, the CRT uses various API in its startup code already that are Vista+. I already mentioned GetTickCount64, which is used to initialize the security cookie (for /GS). In addition, TLS is now implemented using FlsAlloc to better support fibers, which is also Vista+. This dependency cannot be easily broken, except to access FlsAlloc through LoadLibrary/GetProcAddress or weak externals. There may be more dependencies on Vista+. Regards, Martin

On 05/31/2012 09:47 AM, "Martin v. Löwis" wrote:
Microsoft is now claiming that it will be able to using something called "multi-targeting", "later this year. http://blogs.msdn.com/b/vcblog/archive/2012/06/15/10320645.aspx //arry/

Interesting. Unlike the re-addition of desktop app support for Express, which was a purely political decision, this change likely involves significant code changes to the CRT, in particular if they aim for a single CRT that works on XP but uses newer features on Vista+. At the downside for CPython, this probably also means that they will not extend the life of VS 2010 just to support XP, as they can tell people to switch to VS 2012 and still support XP. So VS 2010 will probably expire on 07/14/2015 for mainstream support as planned today. So for 3.4, we have to ask whether to switch to VS 2012 or stay with VS 2010, and for 3.5, we have to ask whether to switch to VS 2014 (assuming that's when the next release is made). Regards, Martin

On Fri, May 25, 2012 at 7:06 AM, <martin@v.loewis.de> wrote:
And your prediction was right on :-) : http://blogs.msdn.com/b/visualstudio/archive/2012/06/08/visual-studio-expres.... -- # Meador
participants (11)
-
"Martin v. Löwis"
-
Brian Curtin
-
Curt Hagenlocher
-
Jesse Noller
-
Joao S. O. Bueno
-
Larry Hastings
-
martin@v.loewis.de
-
Meador Inge
-
Neil Hodgson
-
Nick Coghlan
-
Terry Reedy