TIP: Click on subject to list as thread! ANSI
echo: os2prog
to: All
from: Jonathan de Boyne Pollard
date: 1997-02-28 18:17:36
subject: `Which C++ Compiler ... ?`

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                                 ³Û
    ³  [*] RTTI and full C++ casting         [ ] Namespaces          ³Û
    ³                                                                ³Û
    ³ 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 ÄÄ

   Borland went through a bad patch in 1994 (when I noted that the
   Internet mail address stopped working).  It concentrated its efforts on
   two products at the time, effectively stopping support of Borland C++
   2.0 for OS/2, amongst others.  Prior to that, there had been a long
   history of poor technical support.  Bugs were rarely acknowledged, and
   many widely known ones (such as the infamous bug in the code generator
   that means that it doesn't generate stack probes, making multithreaded
   code a very risky proposition).  In 1997, Borland finally admitted what
   we had all known for two years:  they weren't doing anything.  They
   tried to blame lack of a market for OS/2 C++ compilers, but the truth
   is that most people had heard so much bad press about Borland C++ for
   OS/2 that they had bought something else.  Borland didn't want to admit
   that people weren't buying the compiler for the simple reason that it
   was bad.

   This C++ compiler is now effectively dead.  One wonders how many of the
   other products and programmer tools that Borland used to make are
   continuing solely on inertia, and public ignorance of the fact that,
   even though it won't admit to it quite as candidly as it has in this
   case, Borland isn't maintaining them.

   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 MKMSGF and 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 1003.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++ 11.0 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                                 ³Û
    ³  [*] RTTI and full C++ casting         [*] Namespaces          ³Û
    ³                                                                ³Û
    ³ No FIDONET address.  The status of Internet support (watcom.on ³Û
    ³ .ca) is not clear.  Support is available from PowerSoft, (who  ³Û
    ³ now own the company).                                          ³Û
    ³                                                                ³Û
    ³ 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).  Support for new C++
   keywords `mutable', `bool', and `explicit'.

                                ÄÄ 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                                 ³Û
    ³  [*] RTTI and full C++ casting         [*] Namespaces          ³Û
    ³                                                                ³Û
    ³ No FIDONET address.  Try techsales{at}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 1003.1 support (due to UNIX
   influence).  Industrial strength optimiser, with every individual
   optimisation separately configurable.  Supports 586.  Supports
   customisable function calling conventions.  Several C++ language
   extensions not in any other current compiler on any platform, such as
   iterators, case ranges in switch statements, nested functions,
   pass-by-name, and optimised conditional #include.  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                                 ³Û
    ³  [ ] RTTI and full C++ casting         [ ] Namespaces          ³Û
    ³                                                                ³Û
    ³ No FIDONET address.  Try vacpp{at}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 1003.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.06 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.9c 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                                 ³Û
    ³  [*] RTTI and full C++ casting         [-] Namespaces          ³Û
    ³                                                                ³Û
    ³ No FIDONET address.                                            ³Û
    ³ Try mattes{at}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 1003.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.  Debug memory management provides heap
   consistency checking at run-time.  A PM front-end to the GNU debugger
   is provided.

                                ÄÄ 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 (Pre-thunked versions of a few 16-bit system APIs are supplied
   in emxwrap.dll, though).  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-1996 All Rights Reserved. ®
   ¯ FIDONET 2:440/4.0                      JdeBP{at}donor2.demon.co.uk ®

--- FleetStreet 1.16 NR
* Origin: JdeBP's point, using Squish (2:440/4.3)
SEEN-BY: 50/99 54/99 270/101 620/243 625/160 711/401 413 430 934 712/311 407
SEEN-BY: 712/505 506 517 623 624 704 713/317 800/1
@PATH: 440/4 141/209 270/101 712/624 711/934

SOURCE: echomail via fidonet.ozzmosis.com

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.