# Compiler Support Kermit 95 should build with all released 32bit or better versions of Microsoft Visual C++ as well as 32bit versions of Open Watcom 1.9. For the best security, always use the most recent compiler you can. Support for older compilers remains for those wishing to build Kermit 95 for vintage Windows systems, the security situation of which is well known. The table below outlines which compilers you can use to target which versions of Windows, and what features you loose (or gain) in the process. The "Tested Often" column indicates which compilers are tested regularly either automatically by github or through occasional manual builds. These compilers are highly likely to work. ARM64 and Itanium are built automatically by github actions but this project lacks the required hardware to actually test these builds. If you discover any issues please log a bug. The Dialer is currently known to build fine with Visual C++ 2.0-7.0 (2002) and Open Watcom 1.9. Visual C++ 6.0 SP6 is the recommended compiler as newer versions lack ctl3d32 - without this the application tends to look a little like something from Windows 3.1. Compilers newer than 2002 may work but OpenZinc is known to be incompatible with Visual C++ 14.x. The highly optional k95cinit.exe utility requires Visual C++ 1.5 to be built.
| Compiler | Arch | Minimum Windows Target | Free? | Tested Often | PTY | SSH | NTLM Auth | TAPI | Dialer | Notes |
|---|---|---|---|---|---|---|---|---|---|---|
| Visual C++ 2022 | x86-64, x86 | Windows Vista SP2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | |
| ARM64 | Windows 10 | |||||||||
| ARM32 | Windows RT 8.0 | ❌ | ||||||||
| Visual C++ 2019 | x86-64, x86 | Windows XP SP3 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | |
| ARM64 | Windows 10 | ❌ | ||||||||
| ARM32 | Windows RT 8.0 | ✅ | ||||||||
| Visual C++ 2017 | x86-64, x86 | Windows XP SP3 | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | |
| ARM64 | Windows 10 | ❌ | ||||||||
| ARM32 | Windows RT 8.0 | ❌ | ||||||||
| Visual C++ 2015 | x86, x86-64 | Windows XP | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | |
| ARM64 | Windows 10 | ❌ | ||||||||
| ARM32 | Windows RT 8.0 | ❌ | ||||||||
| Visual C++ 2013 | x86-64, x86 | Windows XP | ✅ | ❌ | ❌ | ❔ | ✅ | ✅ | ❔ | Rarely tested but should work |
| Visual C++ 2012 | x86-64, x86 | Windows XP | ✅ | ❌ | ❌ | ❔ | ✅ | ✅ | ❔ | Rarely tested but should work |
| Visual C++ 2010 | x86-64, x86 | Windows XP | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ❔ | Free Platform SDK 7.1 includes this compiler and works fine. |
| IA64 | ✅ | |||||||||
| Visual C++ 2008 | x86, x86-64 | Windows 2000 | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ❔ | Rarely tested but should work |
| IA64 | ||||||||||
| Visual C++ 2005 | x86-64, x86 | Windows NT 4, Windows 98 | ✅* | ❌ | ❌ | ❌ | ✅ | ✅ | ❔ | Express Edition + Server 2003 Platform SDK is free. |
| IA64 | ✅ | |||||||||
| Visual C++ 2003 | x86 | Windows NT 4, Windows 95 | ✅* | ✅ | ❌ | ❌ | ✅ | ✅ | ❔ | Visual C++ 2003 Toolkit + Server 2003 Platform SDK is free. Static CRT only. Can not build dialer (no lib.exe) |
| Visual C++ 2002 Professional | x86 | Windows NT 4, Windows 95 | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | |
| January 2000 Platform SDK | Alpha 64bit (AXP64) | 64bit Windows 2000 for DEC Alpha | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ❔ | Code builds fine. Finding a 64bit version of Windows for the DEC Alpha to run it on is another matter entirely. |
| Visual C++ 6.0 Professional | x86 | Windows NT 3.51, Windows 95 | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | Service Pack 6 tested |
| Alpha | Windows NT 3.51? | Service Pack 1 | ||||||||
| Visual C++ 5.0 (Visual Studio 97) Professional | x86 | Windows NT 3.51, Windows 95 | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | |
| Alpha | Windows NT 3.51? | ❌ | ❔ | ❔ | Untested | |||||
| Visual C++ 4.x Professional Edition | x86 | Windows NT 3.51, Windows 95, Win32s 1.25 | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | |
| Visual C++ 4.x RISC Edition | MIPS | Windows NT 3.51? | ❌ | TAPI support does not build (compiler bug?) | ||||||
| PowerPC | ✅ | No debug logging support due to TOC size limit. | ||||||||
| Alpha | ✅ | |||||||||
| Visual C++ 2.x | x86 | Windows NT 3.1, Win32s 1.2 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | No toolbar or some GUI dialogs, window resizing scales font doesn't currently work well. Dialer builds refuses to start on NT 3.50 (see bug [#136](https://github.com/davidrg/ckwin/issues/136)) and would likely have some non-functional TAPI/modem-dialing stuff may be visible if it did. Targets NT 3.50 and 3.10 by default. To target NT 3.50 only (no runtime checks for NT 3.50-only APIs), set set CKT_NT35=no before building. K95 still has known issues when actually running on NT 3.1. |
| Visual C++ 2.x RISC Edition for Alpha/MIPS | MIPS | Windows NT 3.1? | ❌ | ❔ | RISC Edition is Untested | |||||
| Alpha | ||||||||||
| Visual C++ 1.5x | x86-16 | Windows 3.x | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | This compiler is supported for building the k95cinit.exe utility only. |
| Visual C++ 1.0 32-bit Edition | x86 | Windows NT 3.1, Win32s 1.1 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | Compiler works but there are unresolved issues running on NT 3.1 |
| Open Watcom 1.9 | x86 | Windows NT 3.51, Windows 95 | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | To target NT 3.50, set CKT_NT35=yes before building. Can not target NT 3.1 (it builds fine with set CKT_NT31=yes but the resulting binary gives "Unexpected error: 11" on NT 3.1) |
| Open Watcom 2.0 | x86 | Windows NT 3.51, Windows 95 | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ❔ | 2022-08-01 build tested, targeting 32bit win32 |
| MinGW | x86 | ❔ | ✅ | ✅ | ❌ | ❔ | ✅ | ✅ | ❌ | Limited support for development purposes. |