World Library  
Flag as Inappropriate
Email this Article

Portable C compiler

Article Id: WHEBN0006026339
Reproduction Date:

Title: Portable C compiler  
Author: World Heritage Encyclopedia
Language: English
Subject: C (programming language), Lint (software), IWarp, C programming language, C++ programming language
Publisher: World Heritage Encyclopedia

Portable C compiler

Portable C Compiler
Stable release 1.1.0 / December 10, 2014 (2014-12-10)
Written in C
Operating system Unix-like
Type C Compiler
License BSD License
Website .se.ltu.luddpcc

The Portable C Compiler (also known as pcc or sometimes pccm - portable C compiler machine) is an early compiler for the C programming language written by Stephen C. Johnson of Bell Labs in the mid-1970s,[1] based in part on ideas proposed by Alan Snyder in 1973,[2][3] and "distributed as the C compiler by Bell Labs... with the blessing of Dennis Ritchie."[4]

One of the first compilers that could easily be adapted to output code for different computer architectures, the compiler had a long life span. It debuted in Seventh Edition Unix and shipped with BSD Unix until the release of 4.4BSD in 1994, when it was replaced by the GNU C Compiler. It was very influential in its day, so much so that at the beginning of the 1980s, the majority of C compilers were based on it.[5] Anders Magnusson and Peter A Jonsson restarted development of pcc in 2007, rewriting it extensively to support the C99 standard.[6]


The keys to the success of pcc were its portability and improved diagnostic capabilities. The compiler was designed so that only a few of its source files were machine-dependent. It was relatively robust to syntax errors and performed more thorough validity checks than its contemporaries.

The first C compiler, written by Dennis Ritchie, used a recursive descent parser, incorporated specific knowledge about the PDP-11, and relied on an optional machine-specific optimizer to improve the assembly language code it generated. In contrast, Johnson's pccm was based on a yacc-generated parser and used a more general target machine model. Both compilers produced target-specific assembly language code which they then assembled to produce linkable object modules.

Later versions of PCC, known within Bell Labs as "QCC" and "RCC," supported other target architecture models.

The language that PCC implemented was an extended version of K&R C that Bjarne Stroustrup has called "Classic C", incorporating the void return type (for functions that don't return any value), enumerations and structure assignment.[4]

Current version

A new version of pcc, based on the original by Steve Johnson, is now maintained by Anders Magnusson.[6] The compiler is provided under the BSD licence and its development is funded by a non-profit organization called BSD Fund. According to Magnusson:

This new version was added to the NetBSD pkgsrc and OpenBSD source trees in September 2007,[8] and later into the main NetBSD source tree.[9] There had been some speculation that it might eventually be used to supplant the GNU C Compiler on BSD-based operating systems,[10] though FreeBSD[11][12] and NetBSD[13] are both looking to Clang as a potential replacement, and Theo de Raadt of OpenBSD asserts that pcc is not ready yet to be a gcc replacement, and the disposal of gcc is not top priority.[14] On December 29, 2009 pcc became capable of building a functional x86 OpenBSD kernel image.[15]

pcc version 1.0 was released on 1 April 2011.[16] As of this release, the compiler supports x86 and x64 processor architectures and runs on NetBSD, OpenBSD, FreeBSD, various Linux distributions, and Microsoft Windows.[17] Further development, including support for more architectures, and FORTRAN 77 and C++ front ends, is continuing.

PCC was removed from the OpenBSD source tree in 2012.[18] Development on it had stalled and no maintainer had stepped up to develop it into something that could make a practical alternative to GNU Compiler Collection.[19][20]

The latest version of pcc, namely 1.1.0, was released on 10 December 2014.[21]

See also


  1. ^
  2. ^
  3. ^
  4. ^ a b
  5. ^
  6. ^ a b
  7. ^
  8. ^
  9. ^
  10. ^
  11. ^
  12. ^
  13. ^
  14. ^
  15. ^
  16. ^
  17. ^
  18. ^
  19. ^
  20. ^
  21. ^

External links

  • Official website
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.

Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.