Being involved in creation of tools for 64-bit application developers, I follow the situation in the world. Processors being released, operating systems and technologies. I need it to understand the tendencies of this industry's development and make plans according to them.
Some years ago, in 2007, the director of Microsoft Windows Server unit Bill Leing announced: "Windows Server 2008 will be the last 32-bit operating system. All the following versions of operating systems for Microsoft servers after Windows Server 2008 will be 64-bit". At that time, we placed this quotation on the Viva64 product's page and we hope it did stimulate program developers to make 64-bit versions of their applications.
Windows Server 2008 operating systems released in February, 2008, was presented in 32-bit and 64-bit versions.
Figure 1 - Windows Server 2008 logo
But the next version Windows Server 2008 R2 released in July, 2009, is available only in 64-bit version!
Figure 2 - Windows Server 2008 logo
It seems that we will really see no 32-bit versions of server operating systems by Microsoft Microsoft. And this is understandable, for costs on maintenance for Microsoft will (gradually) decrease without 32-bit version.
But Microsoft has not stopped at ceasing to release the 32-bit version of the operating system.
Many administrators are aware of a relatively new installation and operation mode of the operating system's server version called Server Core.
Figure 3 - Installation in Server Core mode
It is this mode that participants of "Windows vs Linux" wars had been speaking about for a long time. One of the arguments supporters of using Linux on servers resort to is the ability to install a server operating system without GUI. So, here is this ability available now in Windows Server too. Installation in this mode allows you to get only the command line without GUI.
This ability (installation of Server Core) appeared in Windows Server 2008. But in Windows Server 2008 R2, there is an innovation bringing the 64-bit future closer. Support of 32-bit application invoke has become optional for Windows Server 2008 R2 (Server Core)! And by default this support is switched off. So, when trying to launch a 32-bit application in Server Core mode, the user will see the message about launch failure. Of course, you may add support of 32-bit programs:
start /w ocsetup ServerCore-WOW64
In common (Full Installation) mode, 32-bit applications can be launched by default, but in Server Core they cannot.
One can understand the causes of this. Besides the already mentioned difficulty of maintaining several platforms, 64-bit programs are, as a rule, safer.
The tendency is obvious. Programmers have less and less opportunities to postpone release of 64-bit versions of their applications.
I often hear in various interpretations the phrase: "The given examples show not the code incorrect from the viewpoint of porting to x64 systems, but the code incorrect in itself". I would like to discuss and theorize a bit on this point in the blog. Please, take this note with a bit of humor.
In this article, I've collected a huge amount of links all of which could prove potentially useful to software developers who are getting acquainted with 64-bit world. In general, we will cover C/C++ languages, but I am sure, that developers from other languages will discover a lot of interesting stuff here as well.