The (highly unofficial) FIDONET OS2PROG C++ compiler pros and cons list ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ Borland C++ 2.0 for Intel OS/2 ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³Û ³ [-] OS/2 Developers' Toolkit (*NOTE*) [*] IDE ³Û ³ [*] PM Class libraries [ ] Workframe (*NOTE*)³Û ³ [*] Ships on CD-ROM (*NOTE*) [-] SOM support ³Û ³ [ ] DirectToSOM C++ ³Û ³ [ ] Intel 586 FDIV workaround ³Û ³ ³Û ³ No FIDONET address. The Internet address has stopped working. ³Û ³ ³Û ³ Borland International (U.K.) Ltd, Twyford, READING RG10 8BR ³Û ³ Telephone : +44 1734 321150 Fax : +44 1734 320017 ³Û ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ÄÄ NOTES ÄÄ WorkFrame support is provided (by BC_WF.DLL, TLINK_WF.DLL, and BORLAND.PRF), but it isn't documented at all. Borland has integrated the OS/2 Developer's Toolkit into its own toolset. However, it is the 2.0 version of the Toolkit, with some glaring errors in the documentation and (more importantly) the header files, that were corrected in Toolkit 2.1. Some tools from the Toolkit, such as NMAKE and LINK386, are omitted because Borland's own toolset provides equivalents. Other tools, such as the SOM compiler, are completely missing. Third party tools are now available for Borland C++ and OWL/PM, such as Professor OWL from March Software (demo versions widely available). ÄÄ PRO ÄÄ Quick development and fast compilation. Will run on an 8Mb machine. Supports 586. Upward compatibile with Borland C++ for DOS source (apart from recent changes to C++) and toolset (which Borland users from other platforms will find familiar). Neat and easy to use IDE, that integrates editor, compiler, linker, debugger, and API reference, and that allows you to compile and edit at the same time. Full syntax colouring in the editor, and the debugger uses colour. Good standalone PM debugger (Turbo Debugger GX), and standalone text-mode debugger (which can both debug PM and text mode apps). Comes with Borland's own very good PM Resource Workshop, including tools to migrate Windows resources to PM. 32-bit in-line assembler (BASM) and standalone assembler (TASM). Full source to all libraries available. Full run-time library source available (included in CD version). C++ compilation is very fast. Supports pre-compiled headers. Borland MAKE has the ability to batch up successive calls to the compiler from a makefile, reducing overhead, and also automatically tracks header dependencies. ÄÄ CON ÄÄ IDE uses MDI paradigm, eating screen space, and has trouble with some Super VGA display resolutions. The IDE also has trouble indexing the on-line documentation, and calling up the index can cause the user interface to go into navel gazing mode for several minutes. No support for writing 16-bit callable code and no 16-bit libraries (which rules out device drivers). Support for calling 16-bit code (thunking) has serious bugs in. The optimiser is mediocre, and you may have to write defensively to take its quirks into account. The code generator has some serious flaws (stack probes are not generated). There are a lot of non-standard items in the libraries and headers ("Borlandisms"). Poor support for POSIX.1 in the libraries. Resource workshop isn't as good as Borland *could* do. The tools are slightly idiosyncratic (MAKE has difficulty with macros that are environment variables). OWL for PM does not support any CUA91 controls (although writing your own is not hard). Poor technical support (bugs are rarely acknowledged, and some widely known ones still remain unfixed). ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ Watcom C++ 10.5 for Intel OS/2 ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³Û ³ [*] OS/2 Developer's Toolkit [*] IDE (*NOTE*)³Û ³ [ ] PM Class libraries [*] Workframe ³Û ³ [*] Ships on CD-ROM (*NOTE*) [*] SOM support (*NOTE*)³Û ³ [ ] DirectToSOM C++ ³Û ³ [*] Intel 586 FDIV workaround ³Û ³ ³Û ³ FIDONET 1:221/186.0. All Watcom patches are available from ³Û ³ their FIDONET site. File Request FILES from them for details. ³Û ³ Send mail to "sales". ³Û ³ ³Û ³ Watcom International Corp, 415 Philip Street, Waterloo, ³Û ³ Ontario N2L 3X2, CANADA. ³Û ³ Telephone : +1 519 886 3700 Fax : +1 519 747 4971 ³Û ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ÄÄ NOTES ÄÄ Some parts of the IDE are Windows programs (although the resource tools supplied in the OS/2 Developers' Toolkit may be substituted for them). The SOMObjects Developers Toolkit version 1.0 is bundled, and version 2.1 is available from Watcom. ÄÄ PRO ÄÄ Highly portable (DOS+Windows, extended DOS, Intel OS/2, Netware). Able to generate applications for multiple platforms from OS/2 with little or no source changes. Able to debug DOS and Windows applications running in separate sessions within OS/2. Has its own IDE similar to Workframe, connecting editor, compiler, linker, and on-line help, which is not a tightly integrated IDE (the editor used can be configured). All documentation is on-line, as are example demo programs for all standard library functions. Supports pre-compiled headers. Industrial strength optimiser, which is reasonably configurable. Develops for both 16 and 32 bit platforms. Supports 586. Supports customisable function calling conventions (via pragma aux). Add-on kit available from Watcom's FIDONET node for device driver development. 32-bit assembler (WASM). Excellent technical support (Watcom will ship patches to major bugs to registered users). ÄÄ CON ÄÄ The tools are counterintuitive to those coming from other environments. The linker is unusual and idiosyncratic, as it combines DEF file and LNK file in one (but with Watcom's own syntax), and can get pretty hairy when linking for a different platform to the host environment. Printed manuals are extra and will almost double the price of the product. The documentation is badly edited, repetitive, and in cases misleading. The macros and keywords that are available for "compatibility" tend to obscure the native features. At least three of the bundled toolkits, for which you pay, aren't of any relevance to OS/2 development. The SOMObjects Developers' Toolkit supplied is only for version 1 of SOM, whereas OS/2 WARP requires version 2 (installing version 1 SOM.DLL will disable Workplace Shell -- be warned!). The install program is not bright enough to realise when it is downgrading your SOM support. The technical support has been outsourced, and anything more than help for installing the program and compiling the sample code (which is free of charge) now costs a significant amount. The C++ runtime library is not available in DLL form. ÚÄÄÄ´ MetaWare High C++ 3.32 for Intel OS/2 and PowerPC OS/2 ÃÄÄÄ¿ ³ ³Û ³ [*] OS/2 Developer's Toolkit [ ] IDE ³Û ³ [ ] PM Class libraries [*] Workframe ³Û ³ [ ] Ships on CD-ROM [*] SOM support ³Û ³ [*] DirectToSOM C++ (SOM 2.1 and 3.0, and Distributed SOM) ³Û ³ [*] Intel 586 FDIV workaround ³Û ³ ³Û ³ No FIDONET address. Try techsales@metaware.com . ³Û ³ ³Û ³ MetaWare Inc., 2161 Delaware Avenue, Santa Cruz CA 95060 USA. ³Û ³ Telephone : +1 408 429 META (6382) ³Û ³ Fax : +1 408 429 WARE (9273) ³Û ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ÄÄ NOTES ÄÄ The OS/2 Developers' Toolkit 2.1 that is supplied supports SOM 1.x. DirectToSOM C++, however, supports SOM 2.1 and SOM 3.0 natively. The SOM.DLL supplied with High C++ is a later release than the one supplied with WARP, but the WARP version may be used as long as SOM 3.0 support is not required. ÄÄ PRO ÄÄ Highly portable (almost identical compilers are available for AIX, DOS+Windows, extended DOS, Intel OS/2, PowerPC OS/2, and UNIX System V). This is the only C++ compiler currently available for PowerPC OS/2 (see the DevCon CD-ROMs). Excellent POSIX.1 support (due to UNIX influence). Industrial strength optimiser, with every individual optimisation separately configurable. Supports 586. Supports customisable function calling conventions. Proposed ISO C++ features (namespaces, exception aware classes) not in any other current compiler on any platform. C++ language extensions include iterators, case ranges in switch statements, nested functions, pass-by-name. Supports per-thread variable declarations. Supports developing Workplace Shell objects with DTS C++ (all DTS C++ headers for WPS are provided, along with a chapter in the DirectToSOM Developers' Guide on WPS development). Ships with the excellent Rogue Wave Tools.h++ class libraries (with everything from strings to databases). Comes with example demo programs for all standard library functions. Excellent and detailed manuals. Excellent technical support (Metaware will ship patches to major bugs to registered users). ÄÄ CON ÄÄ Terrible text-mode debugger. No 16-bit support for Intel OS/2 whatsoever (Pre-thunked versions of VIO16/MOU16/KBD16 are supplied in the runtime library, though). Requires that you have the SOMObjects Developers' Toolkit for Interface Repository development work. Most expensive of all of the C++ compilers listed here. ÚÄÄÄÄÄÄÄÄÄÄÄÄ´ IBM VisualAge C++ 3.0 for Intel OS/2 ÃÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³Û ³ [*] OS/2 Developer's Toolkit [ ] IDE ³Û ³ [*] PM Class libraries [*] Workframe ³Û ³ [*] Ships on CD-ROM [*] SOM support ³Û ³ [*] DirectToSOM C++ (SOM 2.1 only) ³Û ³ [ ] Intel 586 FDIV workaround ³Û ³ ³Û ³ No FIDONET address. Try vacpp@vnet.ibm.com . ³Û ³ ³Û ³ IBM U.K. Ltd. Personal Systems Enquiry Centre, PO Box 32, ³Û ³ Alencon Link, Basingstoke RG21 1EJ. ³Û ³ Telephone : +44 1256 841818 Fax : +44 1256 28912 ³Û ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ( The previous version was called IBM CSet++ 2.1. ) ÄÄ NOTES ÄÄ ÄÄ PRO ÄÄ *The* standard for OS/2 development. An industrial strength optimiser, slightly lagging MetaWare and Watcom (which are the ackowledged industry leaders). Supports 586. Can call 16-bit code from 32-bit code and generate 32-bit code that is callable by 16-bit code. Excellent PM debugger (ICSDEBUG). Toolset is easy to learn for those upgrading from Microsoft compilers, and is well crafted. Has the ability to keep the compiler executables resident in memory across compiles, thereby reducing loading delays for multiple successive compiles. Supports pre-compiled headers. Good technical support (the usual IBM CSD system for updates and bugfixes). Taking a leaf from Borland's book, IBM now integrates the SOMObjects Developers Toolkit and the OS/2 Developers' Toolkit into the compiler instead of them being separate components. The on-line help has been improved, with additional "How Do I..." manuals giving answers to many frequently asked questions. Debug memory management and custom heaps allow fine control of memory usage within an application, including incremental dumping of heap usage as an application runs. ICSDEBUG knows about both debug memory management and DirectToSOM C++ objects. The DataBuilder and VisualBuilder tools bundled with the compiler assist in the construction of databases and graphical user interfaces to applications. LPEX, a programmable syntax colouring programmers' editor (yet another in the "E family" of editors from IBM) is also bundled. ÄÄ CON ÄÄ The price has gone up. IBM VisualAge C++ is now the second most expensive of the C++ compilers listed here. Demands enormous amounts of memory (16Mb of RAM is a working machine for a C++ compilation. The side of the box recommends 32Mb! VisualBuilder and the C++ compiler aren't happy side by side on the same box in less than 40Mb!). The memory resident feature will impact the swapfile heavily on low-memory machines, and is thus rendered virtually useless for them. Requires a device driver in CONFIG.SYS for the execution profiler. No cross-platform compatibility (CSet for AS/400 and PowerPC are "coming", but are due late 1995). POSIX.1 is poorly and badly supported. There is no runtime library support for 16-bit development (so device drivers are out here too). Those used to compilers with command lines influenced by UNIX (such as all of the others listed here), will find the compiler command line options counter-intuitive; they certainly aren't mnemonic at all. Library files now use a proprietary format rather than the Intel OMF library format used by all of the other commercial compilers listed here, meaning that they cannot be used with either other compilers or previous versions of IBM CSet++. Many bugs in the frozen code for version 3.00 mean that obtaining the 3.01 CSD is recommended (the new headers supplied with IBM VisualAge C++ 3.00 generate several compiler warnings that weren't in IBM CSet++ 2.xx, for example, and there are still problems with precompiled headers). The runtime library DLL is certainly *not* upwardsly compatible with IBM CSet++ 2.xx, as some function names have changed. There are several errors in the DirectToSOM C++ facility, such as incorrectly declaring acessor methods as "virtual", and no facility to automatically call "XNewClass" in dynamically located DLLs. DTS C++ does not support Distributed SOM. Combining DTS C++ with the object browser or precompiled headers causes the compiler to crash. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ EMX C++ 0.9a for Intel OS/2 ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³Û ³ [ ] OS/2 Developer's Toolkit (*NOTE*) [ ] IDE (*NOTE*)³Û ³ [ ] PM Class libraries [ ] Workframe (*NOTE*)³Û ³ [-] Ships on CD-ROM (*NOTE*) [ ] SOM support ³Û ³ [ ] DirectToSOM C++ ³Û ³ [ ] Intel 586 FDIV workaround ³Û ³ ³Û ³ No FIDONET address. ³Û ³ Try mattes@azu.informatik.uni-stuttgart.de . ³Û ³ ³Û ³ EMX C++ is distributed as "free" software. ³Û ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ÄÄ NOTES ÄÄ EMX C++ is not a commercial compiler, being distributed as "freeware" under terms similar to those of the Free Software Foundation. It's "ethos" is completely different to commercial compilers. You have to hunt for EMX. Most file sites are not always up to date, or carry the complete distribution. One of the CD-ROMs of the Hobbes OS/2 FTP site comes with EMX pre-installed (the other does not). Unfortunately, there is no author-supported site from which EMX can be File Requested or downloaded. The author only distributes via FTP from ftp.uni-stuttgart.de. Buying the OS/2 Developers' Toolkit is highly recommended for PM work, since it includes PM documentation, which EMX C++ lacks. The lack of an IDE or Workframe support are deliberate omissions on the part of the author. The EMX ethos is to use the command line, or the author's port of the emacs text editor. ÄÄ PRO ÄÄ Free (it's essentially the GNU compiler "rebadged"). Will develop OS/2 and extended DOS applications from the same source. The compiler itself is a port of GCC ("EMX" derives from the name of the DOS extender). Because of its roots, it has exceptional support for POSIX.1, even including stuff that doesn't actually fit the OS/2 model, such as fork() and . Lots of UNIX libraries should be easily portable to OS/2 using EMX C++, and many have been. Fair optimiser. Can call 16-bit code. Full source to all libraries is available. Full source for the compiler itself is available. The run-time library DLL is (upwardly) compatible between applications written with different versions of the compiler. ÄÄ CON ÄÄ Free (you get what you pay for, including the support). The FSF and the EMX author's "Copyleft" have some minor impact on commercial code. Installation of the whole compiler is not a trivial task, since it comes in lots of little bits and pieces. You are expected to be able to obtain and install all of the necessary tools which EMX C++ relies upon (such as TeX and emacs), for which you also have to hunt (they aren't distributed with it). No 586 support. No support for generating 16-bit callable code (which rules out device drivers). Calling 16-bit code requires "hand thunking" using a set of supplied macros. Development tools are as horrible as the UNIX originals, and are strictly command-line based. Tools frequently default to UNIX, not Intel/PC, standards and conventions, especially filename, object module, executable file, and command-line conventions (working from OS/2 programming reference books with EMX C++ is a challenge not recommended to the novice). "Native" EMX programs (i.e. those where you don't specifically request Intel/PC compatibility in the compile/link stages) all contain a stub to load the embedded UNIX translation layer at run-time, which makes application loading noticably slower. No PM or OS/2 support tools (help compiler, dialogue editor, message file generator, pack generator, et al.) are supplied. The supplied OS/2 header files generate spurious compiler warnings for legal code due to incorrectly defined constants, and use the wrong definitions (char/unsigned char mismatch) for some types. The DOS extender supplied (EMX.EXE) doesn't work under OS/2 because it uses VCPI (another "EMX compatible" DOS extender using DPMI is available, but it is yet another extra thing not bundled with the compiler that you have to go hunting for, and you then have to adjust everything to use it). No printed manuals at all. Some manuals are available in INF format, but this doesn't include the all-important compiler manuals. All of the GCC documentation is in TeX format, and not plain ASCII, requiring that you have TeX (or yet another non-bundled conversion tool) in order to make it legible. No OS/2 API documentation at all. ¯ JdeBP ® ¯ (c) Copyright 1993-1995 All Rights Reserved. ® ¯ FIDONET 2:440/4.0 JdeBP@donor2.demon.co.uk ®