Developer(s) | Microsoft |
---|---|
Initial release | February 1993 [1] |
Stable release | 14.40.33816 |
Written in | C++ [2] |
Operating system | Windows |
Platform | IA-32, x86-64 and ARM |
Available in | English, Chinese (Simplified & Traditional), Czech, French, German, Italian, Japanese, Korean, Polish, Portuguese (Brazilian), Russian, Spanish, Turkish |
Type | Compiler |
License | Trialware and freeware |
Website | docs |
Microsoft Visual C++ (MSVC) is a compiler for the C, C++, C++/CLI and C++/CX programming languages by Microsoft. MSVC is proprietary software; it was originally a standalone product but later became a part of Visual Studio and made available in both trialware and freeware forms. It features tools for developing and debugging C++ code, especially code written for the Windows API, DirectX and .NET.
Many applications require redistributable Visual C++ runtime library packages to function correctly. These packages are frequently installed separately from the applications they support, enabling multiple applications to use the package with only a single installation. These Visual C++ redistributable and runtime packages are mostly installed for standard libraries that many applications use. [3]
The predecessor to Visual C++ was called Microsoft C/C++. There was also a Microsoft QuickC 2.5 and a Microsoft QuickC for Windows 1.0. The Visual C++ compiler is still known as Microsoft C/C++ and as of the release of Visual C++ 2015 Update 2, is on version 14.0.23918.0.[ citation needed ]
There are several different version numbers to consider when working with Visual C or C++. The oldest and most original of these is the compiler version number, which has been monotonically increased since the early Microsoft C compiler days. This is the version returned by running the command cl.exe
on its own without any options. By taking two digits after the decimal and dropping the decimal point, this also becomes the value of the C pre-processor macro: _MSC_VER
, and the CMake variable: MSVC_VERSION
. A longer version of the C macro is _MSC_FULL_VER
to make more finely-grained distinctions between builds of the compiler. An example of _MSC_VER
is 1933 to represent version 19.33 of the Microsoft C/C++ compiler, and of _MSC_FULL_VER
is 193331630.
The Visual product version, such as "17.3.4", designates the version of Visual Studio with which version 19.33 of the compiler was packaged. Then there is the Microsoft Visual C/C++ Runtime Library version, e.g. "14.3". From this, one can also deduce the toolset version, which can be obtained by taking the first three digits of the runtime library version and dropping the decimal, e.g. "143". It includes the Visual C/C++ runtime library, as well as compilers, linkers, assemblers, other build tools, and matching libraries and header files. The following is a (scrapeable) table of the known correlated version numbers.
product name | VC ( Version Code ) | marketing year | _MSC_VER | _MSC_FULL_VER | runtime library version |
---|---|---|---|---|---|
Microsoft C 6.0 | 600 | ||||
Microsoft C/C++ 7.0 | 700 | ||||
Visual C++ 1.0 | 1.0 | 800 | 1 | ||
Visual C++ 2.0 | 2.0 | 900 | 2 | ||
Visual C++ 4.0 | 4.0 | 1000 | 4 | ||
Visual C++ 4.1 | 4.1 | 1010 | 4.1 | ||
Visual C++ 4.2 | 4.2 | 1020 | 4.2 | ||
Visual Studio 97 [5.0] | 5.0 | 97 | 1100 | 5 | |
Visual Studio 6.0 SP5 | 6.0 | 1200 | 12008804 | 6 | |
Visual Studio 6.0 SP6 | 6.0 | 1200 | 12008804 | 6 | |
Visual Studio .NET 2002 [7.0] | 7.0 | 2002 | 1300 | 13009466 | 7 |
Visual Studio .NET 2003 Beta [7.1] | 7.1 | 2003 | 1310 | 13102292 | 7.1 |
Visual Studio Toolkit 2003 [7.1] | 7.1 | 2003 | 1310 | 13103052 | 7.1 |
Visual Studio .NET 2003 [7.1] | 7.1 | 2003 | 1310 | 13103077 | 7.1 |
Visual Studio .NET 2003 SP1 [7.1] | 7.1 | 2003 | 1310 | 13106030 | 7.1 |
Visual Studio 2005 Beta 1 [8.0] | 8.0 | 2005 | 1400 | 140040607 | 8 |
Visual Studio 2005 Beta 2 [8.0] | 8.0 | 2005 | 1400 | 140050215 | 8 |
Visual Studio 2005 [8.0] | 8.0 | 2005 | 1400 | 140050320 | 8 |
Visual Studio 2005 SP1 [8.0] | 8.0 | 2005 | 1400 | 140050727 | 8 |
Visual Studio 2008 Beta 2 [9.0] | 8.0 | 2008 | 1500 | 150020706 | 9 |
Visual Studio 2008 [9.0] | 9.0 | 2010 | 1500 | 150021022 | 9 |
Visual Studio 2008 SP1 [9.0] | 9.0 | 2010 | 1500 | 150030729 | 9 |
Visual Studio 2010 Beta 1 [10.0] | 10.0 | 2010 | 1600 | 160020506 | 10 |
Visual Studio 2010 Beta 2 [10.0] | 10.0 | 2010 | 1600 | 160021003 | 10 |
Visual Studio 2010 [10.0] | 10.0 | 2010 | 1600 | 160030319 | 10 |
Visual Studio 2010 SP1 [10.0] | 10.0 | 2010 | 1600 | 160040219 | 10 |
Visual Studio 2012 [11.0] | 11.0 | 2012 | 1700 | 170050727 | 11 |
Visual Studio 2012 Update 1 [11.0] | 11.0 | 2012 | 1700 | 170051106 | 11 |
Visual Studio 2012 Update 2 [11.0] | 11.0 | 2012 | 1700 | 170060315 | 11 |
Visual Studio 2012 Update 3 [11.0] | 11.0 | 2012 | 1700 | 170060610 | 11 |
Visual Studio 2012 Update 4 [11.0] | 11.0 | 2012 | 1700 | 170061030 | 11 |
Visual Studio 2012 November CTP [11.0] | 11.0 | 2012 | 1700 | 170051025 | 11 |
Visual Studio 2013 Preview [12.0] | 12.0 | 2013 | 1800 | 180020617 | 12 |
Visual Studio 2013 RC [12.0] | 12.0 | 2013 | 1800 | 180020827 | 12 |
Visual Studio 2013 [12.0] | 12.0 | 2013 | 1800 | 180021005 | 12 |
Visual Studio 2013 Update 1 [12.0] | 12.0 | 2013 | 1800 | 180021005 | 12 |
Visual Studio 2013 Update2 RC [12.0] | 12.0 | 2013 | 1800 | 180030324 | 12 |
Visual Studio 2013 Update 2 [12.0] | 12.0 | 2013 | 1800 | 180030501 | 12 |
Visual Studio 2013 Update 3 [12.0] | 12.0 | 2013 | 1800 | 180030723 | 12 |
Visual Studio 2013 Update 4 [12.0] | 12.0 | 2013 | 1800 | 180031101 | 12 |
Visual Studio 2013 Update 5 [12.0] | 12.0 | 2013 | 1800 | 180040629 | 12 |
Visual Studio 2013 November CTP [12.0] | 12.0 | 2013 | 1800 | 180021114 | 12 |
Visual Studio 2015 [14.0] | 14.0 | 2015 | 1900 | 190023026 | 14 |
Visual Studio 2015 Update 1 [14.0] | 14.0 | 2015 | 1900 | 190023506 | 14 |
Visual Studio 2015 Update 2 [14.0] | 14.0 | 2015 | 1900 | 190023918 | 14 |
Visual Studio 2015 Update 3 [14.0] | 14.0 | 2015 | 1900 | 190024210 | 14 |
Visual Studio 2017 version 15.0 | 15.0 | 2017 | 1910 | 191025017 | 14.1 |
Visual Studio 2017 version 15.1 | 15.1 | 2017 | 1910 | 191025017 | 14.1 |
Visual Studio 2017 version 15.2 | 15.2 | 2017 | 1910 | 191025017 | 14.1 |
Visual Studio 2017 version 15.3.3 | 15.3.3 | 2017 | 1911 | 191125507 | 14.11 |
Visual Studio 2017 version 15.4.4 | 15.4.4 | 2017 | 1911 | 191125542 | 14.11 |
Visual Studio 2017 version 15.4.5 | 15.4.5 | 2017 | 1911 | 191125547 | 14.11 |
Visual Studio 2017 version 15.5.2 | 15.5.2 | 2017 | 1912 | 191225831 | 14.12 |
Visual Studio 2017 version 15.5.3 | 15.5.3 | 2017 | 1912 | 191225834 | 14.12 |
Visual Studio 2017 version 15.5.4 | 15.5.4 | 2017 | 1912 | 191225834 | 14.12 |
Visual Studio 2017 version 15.5.6 | 15.5.6 | 2017 | 1912 | 191225835 | 14.12 |
Visual Studio 2017 version 15.5.7 | 15.5.7 | 2017 | 1912 | 191225835 | 14.12 |
Visual Studio 2017 version 15.6.0 | 15.6.0 | 2017 | 1913 | 191326128 | 14.13 |
Visual Studio 2017 version 15.6.1 | 15.6.1 | 2017 | 1913 | 191326128 | 14.13 |
Visual Studio 2017 version 15.6.2 | 15.6.2 | 2017 | 1913 | 191326128 | 14.13 |
Visual Studio 2017 version 15.6.3 | 15.6.3 | 2017 | 1913 | 191326129 | 14.13 |
Visual Studio 2017 version 15.6.4 | 15.6.4 | 2017 | 1913 | 191326129 | 14.13 |
Visual Studio 2017 version 15.6.6 | 15.6.6 | 2017 | 1913 | 191326131 | 14.13 |
Visual Studio 2017 version 15.6.7 | 15.6.7 | 2017 | 1913 | 191326132 | 14.13 |
Visual Studio 2017 version 15.7.1 | 15.7.1 | 2017 | 1914 | 191426428 | 14.14 |
Visual Studio 2017 version 15.7.2 | 15.7.2 | 2017 | 1914 | 191426429 | 14.14 |
Visual Studio 2017 version 15.7.3 | 15.7.3 | 2017 | 1914 | 191426430 | 14.14 |
Visual Studio 2017 version 15.7.5 | 15.7.5 | 2017 | 1914 | 191426433 | 14.14 |
Visual Studio 2017 version 15.9.1 | 15.9.1 | 2017 | 1916 | 191627023 | 14.16 |
Visual Studio 2017 version 15.9.4 | 15.9.4 | 2017 | 1916 | 191627025 | 14.16 |
Visual Studio 2017 version 15.9.5 | 15.9.5 | 2017 | 1916 | 191627026 | 14.16 |
Visual Studio 2017 version 15.9.7 | 15.9.7 | 2017 | 1916 | 191627027 | 14.16 |
Visual Studio 2017 version 15.9.11 | 15.9.11 | 2017 | 1916 | 191627030 | 14.16 |
Visual Studio 2019 version 16.0.0 | 16.0.0 | 2019 | 1920 | 192027508 | 14.20 |
Visual Studio 2019 version 16.1.2 | 16.1.2 | 2019 | 1921 | 192127702 | 14.21 |
Visual Studio 2019 version 16.2.3 | 16.2.3 | 2019 | 1922 | 192227905 | 14.21 |
Visual Studio 2019 version 16.3.2 | 16.3.2 | 2019 | 1923 | 192328105 | 14.21 |
Visual Studio 2019 version 16.4.0 | 16.4.0 | 2019 | 1924 | 192428314 | 14.24 |
Visual Studio 2019 version 16.5.1 | 16.5.1 | 2019 | 1925 | 192528611 | 14.25 |
Visual Studio 2019 version 16.6.2 | 16.6.2 | 2019 | 1926 | 192628806 | 14.26 |
Visual Studio 2019 version 16.7 | 16.7 | 2019 | 1927 | 192729112 | 14.27 |
Visual Studio 2019 version 16.8.1 | 16.8.1 | 2019 | 1928 | 192829333 | 14.28 |
Visual Studio 2019 version 16.8.2 | 16.8.2 | 2019 | 1928 | 192829334 | 14.28 |
Visual Studio 2019 version 16.9.0 | 16.9.0 | 2019 | 1928 | 192829910 | 14.28 |
Visual Studio 2019 version 16.9.2 | 16.9.2 | 2019 | 1928 | 192829913 | 14.28 |
Visual Studio 2019 version 16.9.17 | 16.9.17 | 2019 | 1928 | 192829921 | 14.28 |
Visual Studio 2019 version 16.9.18 | 16.9.18 | 2019 | 1928 | 192829921 | 14.28 |
Visual Studio 2019 version 16.9.19 | 16.9.19 | 2019 | 1928 | 192829923 | 14.28 |
Visual Studio 2019 version 16.11.2 | 16.11.2 | 2019 | 1929 | 192930133 | 14.29 |
Visual Studio 2019 version 16.11.8 | 16.11.8 | 2019 | 1929 | 192930138 | 14.29 |
Visual Studio 2019 version 16.11.9 | 16.11.9 | 2019 | 1929 | 192930139 | 14.29 |
Visual Studio 2019 version 16.11.10 | 16.11.10 | 2019 | 1929 | 192930140 | 14.29 |
Visual Studio 2019 version 16.11.11 | 16.11.11 | 2019 | 1929 | 192930141 | 14.29 |
Visual Studio 2019 version 16.11.12 | 16.11.12 | 2019 | 1929 | 192930142 | 14.29 |
Visual Studio 2019 version 16.11.16 | 16.11.16 | 2019 | 1929 | 192930145 | 14.29 |
Visual Studio 2019 version 16.11.17 | 16.11.17 | 2019 | 1929 | 192930146 | 14.29 |
Visual Studio 2019 version 16.11.21 | 16.11.21 | 2019 | 1929 | 192930147 | 14.29 |
Visual Studio 2019 version 16.11.24 | 16.11.24 | 2019 | 1929 | 192930148 | 14.29 |
Visual Studio 2019 version 16.11.27 | 16.11.27 | 2019 | 1929 | 192930151 | 14.29 |
Visual Studio 2019 version 16.11.35 | 16.11.35 | 2019 | 1929 | 192930154 | 14.29 |
Visual Studio 2022 version 17.0.1 | 17.0.1 | 2022 | 1930 | 193030705 | 14.30 |
Visual Studio 2022 version 17.0.2 | 17.0.2 | 2022 | 1930 | 193030706 | 14.31 |
Visual Studio 2022 version 17.1.3 | 17.1.3 | 2022 | 1931 | 193131105 | 14.31 |
Visual Studio 2022 version 17.2.2 | 17.2.2 | 2022 | 1932 | 193231329 | 14.32 |
Visual Studio 2022 version 17.3.4 | 17.3.4 | 2022 | 1933 | 193331630 | 14.33 |
Visual Studio 2022 version 17.4.0 | 17.4.0 | 2022 | 1934 | 193431933 | 14.34 |
Visual Studio 2022 version 17.5.0 | 17.5.0 | 2022 | 1935 | 193532215 | 14.35 |
Visual Studio 2022 version 17.6.0 | 17.6.0 | 2022 | 1936 | 193632532 | 14.36 |
Visual Studio 2022 version 17.6.2 | 17.6.2 | 2022 | 1936 | 193632532 | 14.36.32532 |
Visual Studio 2022 version 17.6.4 | 17.6.4 | 2022 | 1936 | 193632535 | 14.36.32532 |
Visual Studio 2022 version 17.7.0 | 17.7.0 | 2022 | 1937 | 193732822 | 14.36.32543 |
Visual Studio 2022 version 17.8.0 | 17.8.0 | 2022 | 1938 | 193833130 | 14.38.33135 |
Visual Studio 2022 version 17.9.1 | 17.9.1 | 2022 | 1939 | 193933520 | 14.39.33520 |
Visual Studio 2022 version 17.9.6 | 17.9.6 | 2022 | 1939 | 193933523 | 14.39.33523 |
Visual Studio 2022 version 17.10.1 | 17.10.1 | 2022 | 1940 | 194033811 | 14.40.33811 |
Visual Studio 2022 version 17.10.10 | 17.10.10 | 2022 | 1940 | 194033818 | 14.40.33818 |
Visual Studio 2022 version 17.11.0 | 17.11.0 | 2022 | 1941 | 194134120 | 14.41.34120 |
Visual Studio 2022 version 17.12.4 | 17.12.4 | 2022 | 1942 | 194234436 | 14.42.34436 |
The Visual C++ compiler ABI has historically changed between major compiler releases. [54] This is especially the case for STL containers, where container sizes have varied a lot between compiler releases. [55] Microsoft therefore recommends against using C++ interfaces at module boundaries when one wants to enable client code compiled using a different compiler version. Instead of C++, Microsoft recommends using C [56] or COM [57] interfaces, which are designed to have a stable ABI between compiler releases.
All 14.x MSVC releases have a stable ABI, [58] and binaries built with these versions can be mixed in a forwards-compatible manner, noting the following restrictions:
Visual C++ ships with different versions of C runtime libraries. [59] This means users can compile their code with any of the available libraries. However, this can cause some problems when using different components (DLLs, EXEs) in the same program. A typical example is a program using different libraries. The user should use the same C Run-Time for all the program's components unless the implications are understood. Microsoft recommends using the multithreaded, dynamic link library (/MD or /MDd compiler option) to avoid possible problems. [59]
Although Microsoft's CRT implements a large subset of POSIX interfaces, the Visual C++ compiler will emit a warning on every use of such functions by default. The rationale is that C and C++ standards require an underscore prefix before implementation-defined interfaces, so the use of these functions are non-standard. [60] However, systems that are actually POSIX-compliant would not accept these underscored names, and it is more portable to just turn off the warning instead.
Although the product originated as an IDE for the C programming language, for many years the compiler's support for that language conformed only to the original edition of the C standard, dating from 1989, but not the C99 revision of the standard. There had been no plans to support C99 even in 2011, more than a decade after its publication. [61]
Visual C++ 2013 finally added support for various C99 features in its C mode (including designated initializers, compound literals, and the _Bool
type), [62] though it was still not complete. [63] Visual C++ 2015 further improved the C99 support, with full support of the C99 Standard Library, except for features that require C99 language features not yet supported by the compiler. [64]
Most of the changes from the C11 revision of the standard were still not supported by Visual C++ 2017. [65] For example, generic selections via the _Generic
keyword are not supported by the compiler and result in a syntax error. [66]
The preprocessor was overhauled in 2018, with C11 in sight: [67]
Full C11 conformance is on our roadmap, and updating the preprocessor is just the first step in that process. The C11
_Generic
feature is not actually part of the preprocessor, so it has not yet been implemented. When implemented I expect the feature to work independently of if the traditional or updated preprocessor logic is used.
_Generic
support has been committed to MSVC as of February 2020. [68]
In September 2020, Microsoft announced C11 and C17 standards support in MSVC would arrive in version 16.8. [69] This did not include optional features but Microsoft indicated that they were planning to add support for atomics and threads at a later date. In version 17.5, partial (since atomic locks are missing) and experimental (meaning hidden behind the compiler flag /experimental:c11atomics
) support for atomics was added [70] and in version 17.8, support for threads was added, this time not behind a compiler flag. [71] [72]
With default settings MSVC does not do two-phase name lookup which prevents it from flagging a wide range of invalid code. Most checks are deferred to template instantiation. More recent versions remedy this behavior, but it needs to be enabled by the command-line option /permissive-
. [73]
Describing it as "excellent", BYTE in February 1989 approved of Microsoft C 5.1's OS/2 support, QuickC for interactive development, and CodeView debugger. Although Watcom C produced slightly faster code, the magazine said that developers "might still prefer Microsoft's friendlier and more powerful tools". [74]
Visual Basic (VB), originally called Visual Basic .NET (VB.NET), is a multi-paradigm, object-oriented programming language, implemented on .NET, Mono, and the .NET Framework. Microsoft launched VB.NET in 2002 as the successor to its original Visual Basic language, the last version of which was Visual Basic 6.0. Although the ".NET" portion of the name was dropped in 2005, this article uses "Visual Basic [.NET]" to refer to all Visual Basic languages released since 2002, in order to distinguish between them and the classic Visual Basic. Along with C# and F#, it is one of the three main languages targeting the .NET ecosystem. Microsoft updated its VB language strategy on 6 February 2023, stating that VB is a stable language now and Microsoft will keep maintaining it.
C++Builder is a rapid application development (RAD) environment for developing software in the C++ programming language. Originally developed by Borland, as of 2009 it is owned by Embarcadero Technologies, a subsidiary of Idera. C++Builder can compile apps for Windows, iOS, macOS, and Android. It includes tools that allow drag-and-drop visual development, making programming easier by incorporating a WYSIWYG graphical user interface builder.
Microsoft Foundation Class Library (MFC) is a C++ object-oriented library for developing desktop applications for Windows.
C99 is a past version of the C programming language open standard. It extends the previous version (C90) with new features for the language and the standard library, and helps implementations make better use of available computer hardware, such as IEEE 754-1985 floating-point arithmetic, and compiler technology. The C11 version of the C programming language standard, published in 2011, updates C99.
The Active Template Library (ATL) is a set of template-based C++ classes developed by Microsoft, intended to simplify the programming of Component Object Model (COM) objects. The COM support in Microsoft Visual C++ allows developers to create a variety of COM objects, OLE Automation servers, and ActiveX controls. ATL includes an object wizard that sets up primary structure of the objects quickly with a minimum of hand coding. On the COM client side ATL provides smart pointers that deal with COM reference counting. The library makes heavy use of the curiously recurring template pattern.
Microsoft Visual Studio Express was a set of integrated development environments (IDEs) that Microsoft developed and released free of charge. They are function-limited version of the non-free Visual Studio and require mandatory registration. Express editions started with Visual Studio 2005.
Interix was an optional, POSIX-conformant Unix subsystem for Windows NT operating systems. Interix was a component of Windows Services for UNIX, and a superset of the Microsoft POSIX subsystem. Like the POSIX subsystem, Interix was an environment subsystem for the NT kernel. It included numerous open source utility software programs and libraries. Interix was originally developed and sold as OpenNT until purchased by Microsoft in 1999.
Windows Template Library (WTL) is a free software, object-oriented C++ template library for Win32 development. WTL was created by Microsoft employee Nenad Stefanovic for internal use and later released as an unsupported add-on to Visual Studio and the Win32 Framework SDK. It was developed primarily as a light-weight alternative to the Microsoft Foundation Classes and builds upon Microsoft's ATL, another lightweight API widely used to create COM and ActiveX libraries.
Microsoft Windows SDK, and its predecessors Platform SDK, and .NET Framework SDK, are software development kits (SDKs) from Microsoft that contain documentation, header files, libraries, samples and tools required to develop applications for Microsoft Windows and .NET Framework. Platform SDK specializes in developing applications for Windows 2000, XP and Windows Server 2003. .NET Framework SDK is dedicated to developing applications for .NET Framework 1.1 and .NET Framework 2.0. Windows SDK is the successor of the two and supports developing applications for Windows XP and later, as well as .NET Framework 3.0 and later.
Borland C++ was a C and C++ IDE released by Borland for MS-DOS and Microsoft Windows. It was the successor to Turbo C++ and included a better debugger, the Turbo Debugger, which was written in protected mode DOS.
The Microsoft Windows operating system supports a form of shared libraries known as "dynamic-link libraries", which are code libraries that can be used by multiple processes while only one copy is loaded into memory. This article provides an overview of the core libraries that are included with every modern Windows installation, on top of which most Windows applications are built.
Visual Basic (VB), sometimes referred to as Classic Visual Basic, is a third-generation programming language based on BASIC, as well as an associated integrated development environment (IDE). Visual Basic was developed by Microsoft for Windows, and is known for supporting rapid application development (RAD) of graphical user interface (GUI) applications, event-driven programming, and both consumption and development of components via the Component Object Model (COM) technology.
Visual Studio is an integrated development environment (IDE) developed by Microsoft. It is used to develop computer programs including websites, web apps, web services and mobile apps. Visual Studio uses Microsoft software development platforms including Windows API, Windows Forms, Windows Presentation Foundation (WPF), Microsoft Store and Microsoft Silverlight. It can produce both native code and managed code.
Qt Creator is a cross-platform C++, JavaScript, Python and QML integrated development environment (IDE) which simplifies GUI application development. It is part of the SDK for the Qt GUI application development framework and uses the Qt API, which encapsulates host OS GUI function calls. It includes a visual debugger and an integrated WYSIWYG GUI layout and forms designer. The editor has features such as syntax highlighting and autocompletion. Qt Creator uses the C++ compiler from the GNU Compiler Collection on Linux. On Windows it can use MinGW or MSVC with the default install and can also use Microsoft Console Debugger when compiled from source code. Clang is also supported.
The .NET Framework is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows. It was the predominant implementation of the Common Language Infrastructure (CLI) until being superseded by the cross-platform .NET project. It includes a large class library called Framework Class Library (FCL) and provides language interoperability across several programming languages. Programs written for .NET Framework execute in a software environment named the Common Language Runtime (CLR). The CLR is an application virtual machine that provides services such as security, memory management, and exception handling. As such, computer code written using .NET Framework is called "managed code". FCL and CLR together constitute the .NET Framework.
Microsoft started development on the .NET Framework in the late 1990s originally under the name of Next Generation Windows Services (NGWS). By late 2001 the first beta versions of .NET Framework 1.0 were released. The first version of .NET Framework was released on 13 February 2002, bringing managed code to Windows NT 4.0, 98, 2000, ME and XP.
Mono is a free and open-source software framework that aims to run software made for the .NET Framework on Linux and other OSes. Originally by Ximian which was acquired by Novell, it was later developed by Xamarin which was acquired by Microsoft. In August 2024, Microsoft transferred ownership of Mono to WineHQ.
CodeXL was an open-source software development tool suite which included a GPU debugger, a GPU profiler, a CPU profiler, a graphics frame analyzer and a static shader/kernel analyzer.
The .NET platform is a free and open-source, managed computer software framework for Windows, Linux, and macOS operating systems. The project is mainly developed by Microsoft employees by way of the .NET Foundation and is released under an MIT License.
C++/WinRT is a C++ library for Microsoft's Windows Runtime platform, designed to provide access to modern Windows APIs. C++/WinRT is provided as a standard C++17 header file library, unlike C++/CX, which is an extension to C++ and requires a recent version of Microsoft Visual C++.
This alone is not a dispositive link, as Visual C++ 6.0, released in 1998, still has proponents mostly because it does not require the installation of Microsoft's .NET framework in order to run, as later versions of Visual C++ do.