Download Open Watcom 1.8
In the summer of 1965, a group of students from the University of Waterloo in Canada developed a Fortran compiler called WATFOR that ran on an IBM 7040 system. This compiler was written in WSL and was also ported to other systems such as the IBM 360 and the DEC PDP-11. After many developments, which this page can be read, it eventually evolved into Open Watcom. This open source compiler can convert source code in C, C++ and Fortran into an executable file on the DOS, OS/2 and Windows platforms. The developers released version 1.8 last week with the following announcement on the mailing list:
Open Watcom v1.8 released
Open Watcom v1.8 has been released. This new version includes significant enhancements to the C++ compiler, new Win32 API headers and libraries, and various other features. Please direct any questions to Open Watcom newsgroups.
List of changes in Open Watcom 1.8:
- The C compiler now performs stricter type checking on enumerated types. Previously, enums were treated as their underlying type (signed/unsigned char, int, etc.) for type checks.
- The C compiler now adds location information about enumerated symbols in appropriate diagnostics.
- The C compiler has been improved with respect to the handling of near/far pointers, especially when converting or comparing pointers and integers of different sizes.
- The C compiler now properly recognizes functions that do not return, such as longjmp(), and correctly diagnoses control flow issues such as unreachable code or missing return statements.
- The C compiler now supports a #pragma alias. This pragma emits alias records into the object file for processing by the linker.
- The C compiler now has larger capacity and can compile some complex source files that previously caused out of memory errors (E1064).
- The C compiler now always warns about unprototyped functions (W131). Previously, some forgivable instances of missing prototypes were undiagnosed by default, which caused users to write non-portable code usually by accident.
- Warning W139 (Divisor for modulo or division operation is zero) has been added to the C compiler. This warning is triggered whenever the right operand of an integer division or modulo operation is a constant expression with the value of zero.
- The handling of pragam aux is now correct in cases where code is emitted and a function body already exists for the corresponding symbolic name.
- Various fixes to the handling of the include_alias pragma have been made.
- The C and C++ compilers now have diagnostics for meaningless comparision of 64-bit and bit-field operands.
- The C and C++ compilers now have conversion tables from CP=1250,1252 (Latin-2.1 for Windows ANSI) to Unicode to support Windows programming.
- The C++ compiler now supports the explicit specification of function template arguments. For example: f().
- The C++ compiler now uses lazy instantiation for class templates and template members. Only the members actually used are instantiated.
- The C++ compiler now allows member templates to be defined outside their class.
- Numerous bugs in the C++ compiler have been fixed.
- The C++ compiler allows a class declaration with modifiers to have those modifiers propagate into the class definition.
- When -SH switch is used with the Fortran compiler, the default size of an integer constant is now INTEGER*2.
- The Fortran compiler no longer crashes when equivalencing common/global with automatics.
- Fortran processing for the text record EOL has been normalized. On UNIX systems write/seek uses LF and read uses LF or CRLF. On non-UNIX systems write/seek uses CRLF and read uses LF or CRLF.
- Various code generation bug fixes to both the 16-bit and 32-bit compilers have been made.
- The Win32 headers and libraries are now Open Watcom’s own internal version. The MinGW headers and libraries are no longer being used. The new headers and libraries provider greater compatibility with the Microsoft SDK and better support for Microsoft Vista.
- The version of Causeway in the official distribution is now version 4.03.
- The Linux run time libraries now have recvfrom() and sendto() implementations.
- A POSIX compatible fnmatch() function and a corresponding fnmatch.h header has been added.
- The _dos_getfileattr() function no longer crashes in large data models on 16-bit DOS and Windows.
- The C run time library now has implementations of the following functions to improve compatibility with other compilers: _chmod, _chsize, _creat, _dup2, _eof, _filelength, _isatty, _read, _sopen, _tell, _umask, _unlink, and _write.
- The date and time arguments to _dos_getftime() and _dos_setftime() are now using ‘unsigned int’ type instead of ‘unsigned short’. This change has been made to improve compatibility with other compilers.
- The segment argument used with _dos_allocmem(), _dos_freemem() and _dos_setblock() is now unsigned int instead of unsigned short. This change was made for compatibility with other compilers.
- The Fortran run time environment now works on Linux.
- The Linux Fortran run time libraries now have FSYSTEM and FSPAWN implementations.
- The Fortran run time now exposes the saved stack pointer for when crashes occur in the IO subsystems.
- The debugger’s options context menu now has an option to allow all child nodes to be expanded recursively.
- The debugger now uses the full size of the type when displaying hexadecimal values (for example 0x03 instead of 0x3).
- The debugger now has a new menu entry to change the display format of all values in an array (all hex or all decimal).
- The debugger now supports break on write rather than just break on change. The trap must support exact breakpoints for this to happen.
- The Windows debugger now properly handles quoted program names.
- The Windows debugger now has proper color support.
- The NetWare TCP server and trap have been updated for NW6.5SP7 with the latest libcpre.obj file.
- The DOS real-mode trap file (std.trp) now correctly displays high parts of 32-bit registers on 386+ CPUs. Previously, the high parts were always displayed as zeros.
- WLIB now has a new -pa option to set up library page size automaticaly to optimal size.
- WLIB now handles COFF import libraries more correctly.
- WCL now properly handles the -fd and -fm options without the file name specified.
- WASM now handles EXTERNDEF directives properly; an EXTDEF record is created only if the symbol is actually referenced.
- WASM now handles the auto-dependency filename properly.
- WASM now implicitly creates the __UNIX__ macro for the BSD target as it has for LINUX and QNX.
- The internal version numbers for WASM and WMAKE are now compatible with that used by the C and C++ compilers. Specifically the macro __WASM__ has the value 1280 for WASM and the macro __VERSION__ has the value 1280 for WMAKE.
- The 32-bit DOS WD and WPROF can now be used with DOS/4G 2.x. The DOS4GOPTIONS settings are no longer exported. Users may still override the defaults by supplying their own wd.ini and wprof.ini, respectively. These files must be in the appropriate format for the DOS/4G version used. Note that this does not affect DOS/4GW users.
- WLINK now handles offsets and groups larger than 64 KB for 32 bit code and 16 bit targets.
- WLINK now ignores fixup displacement when the target relocation is absolute. This is required for compatibility with object files generated by MASM 5.1.
- WLINK now properly handles the alignment of the last segment in a group if the last segment fragment is blank.
- WLINK can now use the WLINK_LNK environment variable to override the default directive file name (wlink.lnk). If the specified file isn’t found then the default file is used as usual.
- WLINK now properly emits segments overlapped by groups to output file.
- WLINK now properly handles imported symbols that are locally defined with the dllimport specifier in PE formatted files.
- WRC on Far-Eastern NT-based systems now honors the DBCS encoding specified on the command line.
- The text editor now supports syntax highlighting for resource files.
- The Fgrep dialog box in graphical editor now has a browse button to display the standard browse for folder dialog box on versions of Windows that support it.
- The ide2make utility has been added to the Open Watcom distribution. This utility converts IDE project files to make files.
- The exe2bin utility now performs properly if relocation items are unsorted.
- The installer now generates a batch file that automatically sets the environment variables used by the Open Watcom tools.
Version number | 1.8 |
Release status | Final |
Operating systems | Windows 2000, Windows XP, DOS, OS/2, Windows Server 2003, Windows Vista, Windows Server 2008 |
Website | Open Watcom |
Download | |
License type | Conditions (GNU/BSD/etc.) |