C++ Historical Sources Archive
Paul McJones, editor
paul@mcjones.org
http://www.mcjones.org/dustydecks/
Abstract
This is a collection of design documents, source code, and other materials concerning the birth, development, standardization, and use of the C++ programming language.
Contents
- Chronology
- C with Classes (Cpre)
- Cfront releases
- Standardization documents
- GNU g++ releases
- Papers and articles about C++
- Libraries (general- and special-purpose) written in C++
- Applications written in C++
- Acknowledgments
Chronology
Sources: "C++ Timeline", D&E, page 4; HOPL-III paper.- 1979 April
- Work on C with Classes began
- 1979 October
- First C with Classes (Cpre) running
- 1983 August
- First C++ in use at Bell Labs
- 1984
- C++ named
- 1985 February
- Cfront Release E (first external C++ release)
- 1985 October
- Cfront Release 1.0 (first commercial release)
The C++ Programming Language
- 1986
- First commercial Cfront PC port (Cfront 1.1, Glockenspiel)
- 1987 February
- Cfront Release 1.2
- 1987 December
- First GNU C++ release (1.13)
- 1988
- First Oregon Software C++ release [announcement]; first Zortech C++ release
- 1989 June
- Cfront Release 2.0
- 1989
- The Annotated C++ Reference Manual; ANSI C++ committee (J16) founded (Washington, DC)
- 1990
- First ANSI X3J16 technical meeting (Somerset, NJ) [see group photograph, courtesy of Andrew Koenig]; templates accepted (Seattle, WA); exceptions accepted (Palo Alto, CA); first Borland C++ release
- 1991
- First ISO WG21 meeting (Lund, Sweden); Cfront Release 3.0 (including templates); The C++ Programming Language (2nd edition)
- 1992
- First IBM, DEC, and Microsoft C++ releases
- 1993
- Run-time type identification accepted (Portland, Oregon); namespaces and string (templatized by character type) accepted (Munich, Germany); A History of C++: 1979-1991 published at HOPL2
- 1994
- string (templatized by character type) (San Diego, California); the STL accepted (San Diego, CA and Waterloo, Canada)
- 1996
- export accepted (Stockholm, Sweden)
- 1997
- Final committee vote on the complete standard (Morristown, New Jersey)
- 1998
- ISO C++ standard ratified
- 2003
- Technical Corrigendum; work on C++0x started
- 2004
- Performance technical report; Library technical report (hash tables, regular expressions, smart pointers, etc.)
- 2005
- First votes on features for C++0x (Lillehammer, Norway); auto, static_assert, and rvalue references accepted in principle
- 2006
- First full committee (official) votes on features for C++0x (Berlin, Germany)
C with Classes (Cpre)
"In October of 1979 I had a pre-processor, called Cpre, that added Simula-like classes to C running and in March of 1980 this pre-processor had been refined to the point where it supported one real project and several experiments. My records show the pre-processor in use on 16 systems by then. ... An early description of C with Classes was published as a Bell Labs technical report in April 1980 [Stroustrup 1980] and later in SIGPLAN Notices. The SIGPLAN paper was in April 1982 followed by a more detailed Bell Labs technical report Adding Classes to the C Language: An Exercise in Language Evolution [Stroustrup 1982] that was later published in Software: Practice and Experience. These papers set a good example by describing only features that were fully implemented and had been used." [Stroustrup 1993]
Papers
- Bjarne Stroustrup. Classes: an abstract data type facility for the C language. Bell Laboratories Computer Science Technical Report CSTR−84, April 1980. Also published in: SIGPLAN Notices, Volume 17, Number 1 (January 1982), pages 42–51. PDF / ACM Digital Library
- Bjarne Stroustrup. Adding Classes to C: An Exercise in Language Evolution. Bell Laboratories Computer Science internal document. April 1982. Also published in Software Practice & Experience, Volume 13, 1983, pages 139−161. Wiley Online Library
Cfront releases
NOTICE
The source code in this section is posted with the permission of the copyright owner for historical research purposes only.Release E
Release E was the February 1985 "educational" release of Cfront. With the exception of parts of the makefile, Stroustrup believes that every word and every line of code of Release E was written by him. The first page of the source code has a handwritten diagram of the directory structure and a message to Stroustrup signed "SCD" (Steve Dewhurst).
Source Code
- Bjarne Stroustrup. master. Release E, AT&T Technologies, Inc., February 1985. PDF (302.5 kB) Includes README, master makefile, CC.
- Bjarne Stroustrup. cfront. Release E, AT&T Technologies, Inc., February 1985. PDF (10.1 MB) Includes makefile, alloc.c, cfront.h, dcl.c, dcl2.c, del.c, error.c, expand.c, expr.c, expr2.c, gram.y, lex.c, main.c, misc.c, norm.c, norm2.c, print.c, repr.c, simpl.c, size.c, size.h, table.c, token.h, typ.c, typ2.c, typedef.h, size_align.
- Bjarne Stroustrup. libraries. Release E, AT&T Technologies, Inc., February 1985. PDF (1.7 MB) Includes complex, new, stream, and task libraries.
- Bjarne Stroustrup. sscan. Release E, AT&T Technologies, Inc., February 1985. PDF (365.2 kB) Includes makefile, ldfacn.h, sscan.c, CCcrt0.s, and CCmcrt0.s.
- Mark Hopkins. Manual transcription with corrections and updates. The file named "Cover" includes notes from Hopkins. December 2022. github.com
This snapshot from 2016 is Commit #1.
Documentation
- C++. Release E, AT&T Bell Laboratories, November 1984. Loose leaf
documentation with Acco fastener.
- Table of contents. 2 pages. PDF (40.6 kB)
- Bjarne Stroustrup. A C++ Tutorial. September 10, 1984, 20 pages. PDF (1.3 MB)
- Bjarne Stroustrup. Data Abstraction in C++. Undated, 23 pages. [The HOPL2 paper cites a similarly named paper as: "Data Abstraction in C. Bell Labs Technical Journal, Vol. 63, No. 8, Oct. 1984, pp 1701--1732. (Written in the summer of 1983)".] PDF (1.6 MB)
- Bjarne Stroustrup. Operator Overloading in C++. Undated, 15 pages. [The HOPL2 paper cites a paper of this name as: "Proceedings of the IFIP WG2.4 Conference on System Implementation Languages: Experience & Assessment, Sept. 1984".] PDF (923.1 kB)
- Leonie V. Rose and Bjarne Stroustrup. Complex Arithmetic in C++. Undated, 13 pages. [The HOPL2 paper cites a paper of this name as: "Internal AT&T Bell Labs Technical Memorandum, Jan. 1984; reprinted in AT&T C++ Translator Release Notes, Nov. 1985".] PDF (530.5 kB)
- Bjarne Stroustrup. A Set of C++ Classes for Co-routine Style Programming. Undated, 19 pages. [The HOPL2 paper cites an earlier version of this paper: "A Set of C Classes for Co-routine Style Programming, Bell Laboratories Computer Science Technical Report CSTR-90, Nov. 1980".] PDF (1.3 MB)
- Bjarne Stroustrup. The C++ Programming Language - Reference Manual. Undated, ii+50+vi pages. [Apparently originally released without Contents or Index. It was preceded with a cover page and two pages, Appendices B and C -- the main document does not include appendices.] PDF (4.1 MB)
- Anonymous. C++ (Release E) Installation Guide. November 1984, 1 page. PDF (73.2 kB)
- Anonymous. CC - C++ compiler. man page, section 1, November 5, 1984, 2 pages. PDF (119.4 kB)
- Bjarne Stroustrup. The C++ Programming Language - Reference Manual. Computing Science Technical Report No. 108, AT&T Bell Laboratories, 1 November 1984, iii+50+6 pages. PDF at www.eah-jena.de/~kleine via archive.org
- Bjarne Stroustrup. Data Abstraction in C++.
Computing Science Technical Report No. 109, AT&T Bell Laboratories, 1 January 1984, 19 pages.
PDF at www.eah-jena.de/~kleine via archive.org
Appendix: Leonie V. Rose and Bjarne Stroustrup. Complex Arithmetic in C. Bell Laboratories. Undated (circa 1984), 15 pages.
- Bjarne Stroustrup. A C++ Tutorial. Computing Science Technical Report No. 113, AT&T Bell Laboratories, 10 September 1984, 20 pages. PDF at www.eah-jena.de/~kleine via archive.org
Papers
- B. Stroustrup. An Extensible I/O Facility for C++. Proceedings Summer 1985 USENIX Conference, June 1985, pages 57-70.
Online at scribd.com
This paper describes the original C++ streams library, designed by Stroustrup. Jerry Swartz extended that to the iostreams library.
Release 1.0
Cfront 1.0, in October 1985, was the first commercial release.
Source Code
- Release 1.0, AT&T Technologies, Inc. "cfront 10/10/85". Copy provided by Willem Wakker of ACE Associated Computer Experts (Amsterdam).
.tar.gz (433 kB)
unpacked
- README begins:
ident "@(#)cfront:README 1.4" This is the AT&T C++ Translator, Release 1
- Release 1.2, AT&T Technologies, Inc. "cfront 1.2.1 2/16/87". Compressed tar file provided by Poul-Henning Kamp. .tgz
This version has changes made by Kamp to adapt the code for a Pyramid computer. See incl.patch and src.patch, and note that for each patched file there is an ".orig" version.
- Release 1.2.2, AT&T Technologies, Inc. "cfront 1.2.2 6/10/87". Included as cmd/cfront in compressed tar file containing Research Unix Edition 9 source code. See statement by Alcatel-Lucent USA Inc. Compressed tar at tuhs.org
Documentation
- Release Notes. UNIX System V AT&T Translator, 1985, 36 pages. Abridged for MSDOS ADVANTAGE C++ by Lifeboat. Scan provided by Jonathan Caves, who notes: "... this was the rebadged 'American' release of Glockenspiel C++." PDF (2.5MB)
Release 2.0
AT&T released Cfront 2.0 in June 1989.
Source Code
- AT&T C++ Translator 2.00 06/30/89. Included as cmd/cfront/cfront2.00 in compressed tar file containing Research Unix Edition 10 source code. See statement by Alcatel-Lucent USA Inc. Compressed tar at tuhs.org
- AT&T C++ Translator 2.1.0+ 04/01/90. Included as cmd/cfront/ocfront in compressed tar file containing Research Unix Edition 10 source code. See statement by Alcatel-Lucent USA Inc. Compressed tar at tuhs.org
- AT&T C++ Translator 2.1++ 08/24/90. Included as cmd/cfront/cfront in compressed tar file containing Research Unix Edition 10 source code. See statement by Alcatel-Lucent USA Inc. Compressed tar at tuhs.org
Documentation
- Release Notes. Select Code 307-90, C++ Language System, Release 2.0, Unix System V, AT&T, 1989, 114 pages. Loose leaf documentation with Acco fastener. PDF (5.2 MB)
- Bjarne Stroustrup. Product Reference Manual. Select Code 307-146, C++ Language System, Release 2.0, Unix System V, AT&T, 1989, 158 pages. Loose leaf documentation with Acco fastener. PDF (8.0 MB)
- Library Manual. Select Code 307-145, C++ Language System, Release 2.0, Unix System V, AT&T, 1989, 226 pages. Loose leaf documentation with Acco fastener. PDF (10.4 MB)
- 1. Complex Arithmetic in C++. Based on paper by Leonnie V. Rose and Bjarne Stroustrup.
- 2. The Task Library. Based on these papers:
- Bjarne Stroustrup and Jonathan Shopiro. A Set of C++ Classes for Co-routine Style Programming, Proceedings of the USENIX C++ Workshop, November 1987.
- Jonathan Shopiro. Extending the C++ Class System for Real-Time Control.
- Stacey Keenan. A Porting Guide for the C++ Coroutine Library.
- 3. Iostream Examples. Based on paper by Jerry Schwarz.
- Appendix A. Manual pages.
- Selected Readings . Select Code 307-144, C++ Language System, Release 2.0, Unix System V, AT&T, 1989, 224 pages. Loose leaf documentation with Acco fastener. PDF (9.5 MB)
- 1. Evolution of C++: 1985 to 1989. Based on paper by Bjarne Stroustrup.
- 2. An Introduction to C++. Based on paper by Keith Gorlen.
- 3. An Overview of C++. Based on paper by Bjarne Stroustrup, published in ACM SIGPLAN Notices, October 1986, pages 7-18.
- 4. Object-Oriented Programming. Based on paper by Bjarne Stroustrup: What is Object-Oriented Programming?, published in IEEE Software magazine, May 1988, pages 10-20.
- 5. Multiple Inheritance. Based on paper by Bjarne Stroustrup: Multiple Inheritance for C++, published in Proceedings of the EUUUG Spring Conference, May 1987.
- 6. Type-Safe Linkage for C++. Based on paper by Bjarne Stroustrup, published in Computing Systems, Volume VI, Number 4, Fall 1988, pages 371-404.
- 7. Access Rules for C++. Based on a paper by Phil Brown.
- Appendix A. Manual pages for C++: CC, c++filt, and demangle.
Release 3.0
Lucent released Cfront 3.0 in 1991.
Bjarne Stroustrup notes, "A warning that Cfront 3 is pre-standard and emphatically not recommended for use or further development might be in place."
Source Code
- C++. Release 3.0.3, AT&T Bell Laboratories, May 1994.
- C++. Release 3, AT&T Bell Laboratories. Modified for Plan 9. .tgz at plan9.bell-labs.com via archive.org
See cfront/NOTES.
Standardization documents
- ISO IEC
JTC1/SC22/WG21 C++ Standards Committee Papers.
- Collected papers, 1992-2006. online at open-std.org
- Papers written or co-authored by Bjarne Stroustrup. online at www.stroustrup.com
GNU g++ releases
- See here.
Papers and articles about C++
- Tony Griggs. New C++ Language Extends C Programming Capabilities. Bell Labs News, Volume 24, Number 51, December 17, 1984, pages 1-2. PDF
- Bjarne Stroustrup. A History of C++: 1979-1991.
- In Proceedings of the the Second ACM SIGPLAN Conference on History of Programming Languages (Cambridge, Massachusetts, United States, April 20 - 23, 1993). ACM Digital Library
- PDF at stroustrup.com
- Also appears in: T. J. Bergin and R. G. Gibson, Eds. History of Programming languages---II. ACM Press, 1996.
- Bjarne Stroustrup.
Evolving a language in and for the real world: C++ 1991-2006.
- In Proceedings of the Third ACM SIGPLAN Conference on History of Programming Languages (San Diego, California, June 09 - 10, 2007). HOPL III. ACM Press, New York, NY, 4-1-4-59. ACM Digital Library
- Preprint, May 25, 2007. PDF at stroustrup.com
- Bjarne Stroustrup. Thriving in a crowded and changing world: C++ 2006–2020.
- In Proceedings ACM Programming Languages, HOPL IV, Article 70 (June 2020). ACM Digital Library
- PDF at stroustrup.com