While the Windows NT/2k/XP are technically POSIX compliant, the Windows environment differs enough from Unix that it presents specific problems in porting Unix tools to Windows, especially in regards to the shell or console. Nonetheless, there exist several versions of GCC for the Microsoft operating systems. For many years, the most widely used was the MS-DOS based DJGPP; however, with the adoption of Windows XP, most OS developers working in Windows have begun using Windows-native implementations, such as Cygwin or MinGW.