Comeau C/C++

Last updated
Comeau C/C++
Stable release
4.3.3
Preview release
4.3.10.1 beta2 / October 6, 2008;15 years ago (2008-10-06)
Written in C/C++
Operating system Microsoft Windows, Linux, Mac OS X, Solaris
Type Compiler
License proprietary
Website www.comeaucomputing.com [ dead link ]

Comeau C/C++ is a compiler for C and C++ produced by Comeau Computing. Comeau C/C++ was once described as the most standards-conformant C++ compiler. [1] In 2006-2008 it was described as the only mainstream C++ compiler to fully support the export keyword for exported templates. [2] [3]

Contents

Design

The compiler supports several dialects of both the C and C++ languages. It comes with its own version of the Standard C++ library, libcomo, that is based upon the Standard C++ library from Silicon Graphics, but can also be used with the Dinkumware Standard C library. [1] [4]

The compiler is based upon the Edison Design Group C++ frontend, also utilized in the Intel C++ Compiler. Rather than produce an executable directly, Comeau C/C++ outputs C code and requires a separate C compiler in order to produce the final program. The Comeau C/C++ can employ several back ends. [1] [5]

Standards compliance

Comeau Computing is a founding member of the C++ committee. Comeau Computing's CEO, Greg Comeau, provided one of the early ports of cfront to the PC. [4] [6]

Distribution

A limited-function version of the compiler, which allows one to compile source code and view any resulting error messages, but not to produce executable programs, is available from the company's web site. [4]

The compiler is available for both Unix and Microsoft Windows platforms. Comeau also offers custom ports to other platforms, albeit that this is substantially more expensive than buying existent versions of the compiler. [1]

Status

The compiler was updated October 6, 2008 featuring version 4.3.10.1 Beta 2.[ citation needed ]

As of September 2017, version 4.3.10.1 remains in Beta. The company website appears to have been sold to an unrelated blogger.

Related Research Articles

C is a general-purpose computer programming language. It was created in the 1970s by Dennis Ritchie, and remains very widely used and influential. By design, C's features cleanly reflect the capabilities of the targeted CPUs. It has found lasting use in operating systems, device drivers, and protocol stacks, but its use in application software has been decreasing. C is commonly used on computer architectures that range from the largest supercomputers to the smallest microcontrollers and embedded systems.

<span class="mw-page-title-main">Fortran</span> General-purpose programming language

Fortran is a third generation, compiled, imperative programming language that is especially suited to numeric computation and scientific computing.

Pascal is an imperative and procedural programming language, designed by Niklaus Wirth as a small, efficient language intended to encourage good programming practices using structured programming and data structuring. It is named after French mathematician, philosopher and physicist Blaise Pascal.

Turbo Pascal is a software development system that includes a compiler and an integrated development environment (IDE) for the programming language Pascal running on the operating systems CP/M, CP/M-86, and DOS. It was originally developed by Anders Hejlsberg at Borland, and was notable for its very fast compiling. Turbo Pascal, and the later but similar Turbo C, made Borland a leader in PC-based development tools.

Java and C++ are two prominent object-oriented programming languages. By many language popularity metrics, the two languages have dominated object-oriented and high-performance software development for much of the 21st century, and are often directly compared and contrasted. Java's syntax was based on C/C++.

<span class="mw-page-title-main">C++</span> General-purpose programming language

C++ is a high-level, general-purpose programming language created by Danish computer scientist Bjarne Stroustrup. First released in 1985 as an extension of the C programming language, it has since expanded significantly over time; as of 1997, C++ has object-oriented, generic, and functional features, in addition to facilities for low-level memory manipulation for making things like microcomputers or to make operating systems like Linux or Windows. It is almost always implemented as a compiled language, and many vendors provide C++ compilers, including the Free Software Foundation, LLVM, Microsoft, Intel, Embarcadero, Oracle, and IBM.

Generic programming is a style of computer programming in which algorithms are written in terms of data types to-be-specified-later that are then instantiated when needed for specific types provided as parameters. This approach, pioneered by the ML programming language in 1973, permits writing common functions or types that differ only in the set of types on which they operate when used, thus reducing duplicate code.

In software engineering, porting is the process of adapting software for the purpose of achieving some form of execution in a computing environment that is different from the one that a given program was originally designed for. The term is also used when software/hardware is changed to make them usable in different environments.

The Glasgow Haskell Compiler (GHC) is a native or machine code compiler for the functional programming language Haskell. It provides a cross-platform software environment for writing and testing Haskell code and supports many extensions, libraries, and optimisations that streamline the process of generating and executing code. GHC is the most commonly used Haskell compiler. It is free and open-source software released under a BSD license. The lead developers are Simon Peyton Jones and Simon Marlow.

<span class="mw-page-title-main">C99</span> C programming language standard, 1999 revision

C99 is an informal name for ISO/IEC 9899:1999, a past version of the C programming language 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.

Managed Extensions for C++ or Managed C++ is a deprecated set of language extensions for C++, including grammatical and syntactic extensions, keywords and attributes, to bring the C++ syntax and language to the .NET Framework. These extensions were created by Microsoft to allow C++ code to be targeted to the Common Language Runtime (CLR) in the form of managed code, as well as continue to interoperate with native code.

A dynamic-link library (DLL) is a shared library in the Microsoft Windows or OS/2 operating system.

<span class="mw-page-title-main">Beta BASIC</span> BASIC interpreter for the Sinclair Research ZX Spectrum microcomputer

Beta BASIC is a BASIC interpreter for the Sinclair Research ZX Spectrum microcomputer, written by Dr Andrew Wright in 1983 and sold by his one-man software house BetaSoft. BetaSoft also produced a regular newsletter/magazine, BetaNews.

C++11 is a version of the ISO/IEC 14882 standard for the C++ programming language. C++11 replaced the prior version of the C++ standard, called C++03, and was later replaced by C++14. The name follows the tradition of naming language versions by the publication year of the specification, though it was formerly named C++0x because it was expected to be published before 2010.

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.

<span class="mw-page-title-main">OpenCL</span> Open standard for programming heterogenous computing systems, such as CPUs or GPUs

OpenCL is a framework for writing programs that execute across heterogeneous platforms consisting of central processing units (CPUs), graphics processing units (GPUs), digital signal processors (DSPs), field-programmable gate arrays (FPGAs) and other processors or hardware accelerators. OpenCL specifies programming languages for programming these devices and application programming interfaces (APIs) to control the platform and execute programs on the compute devices. OpenCL provides a standard interface for parallel computing using task- and data-based parallelism.

<span class="mw-page-title-main">Rexx</span> Command/scripting/programming language

Rexx is a programming language that can be interpreted or compiled. It was developed at IBM by Mike Cowlishaw. It is a structured, high-level programming language designed for ease of learning and reading. Proprietary and open source Rexx interpreters exist for a wide range of computing platforms; compilers exist for IBM mainframe computers.

The Edison Design Group (EDG) is a company that makes compiler front ends for C++ and formerly Java and Fortran. Their front ends are widely used in commercially available compilers and code analysis tools. Users include the Intel C++ compiler, Microsoft Visual C++ (IntelliSense), NVIDIA CUDA Compiler, SGI MIPSpro, The Portland Group, and Comeau C++. They are widely known for having the first, and likely only, front end to implement the unused until C++20 export keyword of C++.

Charm is a computer programming language devised in the early 1990s with similarities to the RTL/2, Pascal and C languages in addition to containing some unique features of its own. The Charm language is defined by a context-free grammar amenable to being processed by recursive descent parser as described in seminal books on compiler design.

The following outline is provided as an overview of and topical guide to C++:

References

  1. 1 2 3 4 D. Ryan Stephens; Christopher Diggins; Jonathan Turkanis; Jeff Cogswell (2006). C++ Cookbook. O'Reilly. p. 8. ISBN   978-0-596-00761-4.
  2. Mark S. Joshi (2008). C++ Design Patterns and Derivatives Pricing. Cambridge University Press. p. 263. ISBN   978-0-521-72162-2.
  3. Marshall Cline (2006). "35: How does the C++ keyword export help with template linker errors?". C++ FAQ Lite. Archived from the original on 2008-12-16. Retrieved 2007-11-29.
  4. 1 2 3 Harvey M. Deitel; Paul J. Deitel (2007). C. Corso completo di programmazione (in Italian). translator I. Scagnetto. Apogeo Editore. p. 537. ISBN   978-88-503-2633-4.
  5. David Abrahams and Aleksey Gurtovoy (2005). C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond. Addison-Wesley. p. 155. ISBN   978-0-321-22725-6.
  6. Stanley B. Lippman (1997). C++ Gems. Cambridge University Press. pp. x. ISBN   978-0-13-570581-0.