软件保存小组:C++历史收藏
Software Preservation Group: C++ History Collection

原始链接: https://softwarepreservation.computerhistory.org/c_plus_plus/

## C++ 历史资料库:摘要 该资料库由 Paul McJones 整理,记录了 C++ 编程语言从 1979 年诞生到 2006 年的历史,并更新至 2026 年。它包含设计文档、关键版本源代码和相关出版物。 开发始于 1979 年的“C with Classes”,并于 1983 年演变为 C++。 早期商业发布于 1985 年(Cfront Release 1.0)和 1986 年。该资料库详细介绍了标准化过程,始于 1989 年的 ANSI 委员会 (J16),最终于 1998 年获得 ISO C++ 标准的批准。 重要里程碑包括模板、异常、运行时类型识别、命名空间和标准模板库 (STL) 的接受。 该系列资料包括 Cfront 1.0、1.2 和 2.0 版本等的源代码,以及大量的文档,包括由 Bjarne Stroustrup 主要撰写的教程和参考手册。 它还包括详细描述语言演变和设计理念的历史论文,包括 Stroustrup 的《C++ 历史:1979-1991》。该资料库承认了提供源代码和更正的个人所做的贡献。

对不起。
相关文章

原文
C++ historical sources archive

Software Preservation Group of the Computer History Museum

Paul McJones, editor
[email protected]
http://www.mcjones.org/dustydecks/

Last updated 13 January 2026

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

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)
Come Meet the Author
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
Somerset meeting group portrait
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 1980a] 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

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.
  • c. 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. December 2022. github.com

    This snapshot from 2016 is Commit #1.

  • Bjarne Stroustrup. cfront snapshot. Release E, AT&T Technologies, Inc., March. 1985. V8/usr/src/cmd/cfront at tuhs.org

Documentation

  • C++. Release E, AT&T Bell Laboratories, November 1984. Loose leaf documentation with Acco fastener.
  • Bjarne Stroustrup. The C++ Programming Language - Reference Manual. Computing Science Technical Report No. 108, AT&T Bell Laboratories.
  • 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. PDF

    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

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

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

  • ISO IEC JTC1/SC22/WG21 C++ Standards Committee Papers.

GNU g++ releases

Papers and articles about C++

Acknowledgments

Bjarne Stroustrup; Chuck Allison (timeline correction); Jonathan Caves (Cfront 1.0 release notes); Noel Hunt (Pi debugger for blit); Poul-Henning Kamp (Cfront 1.2); Warren Toomey and The Unix Heritage Society (Cfront 1.2.2 and 2.x source from Research Unix Editions 9 and 10); Willem Wakker and ACE Associated Computer Experts, Amsterdam (Cfront 1.0 source), Mark Hopkins (transcription of Release E).
联系我们 contact @ memedata.com