~ubuntu-branches/ubuntu/trusty/c++-annotations/trusty

« back to all changes in this revision

Viewing changes to yo/whatsnew.yo.old

  • Committer: Package Import Robot
  • Author(s): Frank B. Brokken
  • Date: 2012-01-20 11:53:17 UTC
  • mfrom: (1.1.18)
  • Revision ID: package-import@ubuntu.com-20120120115317-v4wiq9sttx72fabk
Tags: 9.1.0-1
New upstream release (covering C++11 to a large extend)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
    it() Version 7.3.0 adds a section about overloading operators outside of
 
2
the common context of classes (section ref(EnumOverload)).
 
3
    it() Version 7.2.0 describes the implementation of polymorphism for
 
4
classes inheriting from multiple base classes defining virtual member
 
5
functions (section ref(howpolymorphism)) and adds two new sections in the
 
6
concrete examples chapter: Section ref(PROXY) discusses the problem how to
 
7
distinguish em(lvalues) from em(rvalues) with tt(operator[]()), section
 
8
ref(BISONSEM) discusses in the context of the Bisonc++ parser generator how to
 
9
use polymorphism instead of a union to define different types of semantic
 
10
values. As usual, several typos were repaired and various other improvements
 
11
were made.
 
12
    it() Version 7.1.0 adds a description of the tt(type_info::before())
 
13
member (cf. section ref(TYPEID)). Furthermore, several typographical
 
14
corrections were made.
 
15
    it() Version 7.0.1. was released shortly after releasing version 7.0.0, as
 
16
the result of very extensive feedback received by Eric S. Raymond (esr at
 
17
thyrsus dot com) and Edward Welbourne (eddy at chaos dot org dot
 
18
uk). Considering the extent of the received feedback, it's appropriate to
 
19
mention explicitly the sub-sub-release here. Many textual changes were made
 
20
and section ref(STRINGMEMBERS) was completely reorganized.
 
21
    it() Version 7.0.0 comes with a new chapter discussing advanced template
 
22
applications. Moreover, the general terminology used with templates has
 
23
evolved. `Templates' are now considered a core concept, which is reflected by
 
24
the use of `templates' as a noun, rather than an adjective. So, from now on it
 
25
is `class template' rather than `template class'. The addition of another
 
26
chapter, together with the addition of several new sections to existing
 
27
chapters as well as various rewrites of existing sections made it appropriate
 
28
to upgrade to the next major release. The newly added chapter does not aim at
 
29
concrete examples of templates. Instead it discusses possibilities of
 
30
templates beyond the basic function and class templates. In addition to this
 
31
new chapter, several new sections were added: section ref(LOCAL) introduces
 
32
em(local classes); section ref(PLACEMENT) discusses the em(placement new
 
33
operator); section ref(ACCESSPROMOTION) discusses how to make available some
 
34
members of privately inherited classes and section ref(NONDEFINIT) discusses
 
35
how objects created by tt(new[]) can be initialized by non-default
 
36
constructors. In addition to all this, Elwin Dijck (e dot dijck at gmail dot
 
37
com), one of the students of the 2006-2007 edition of the bf(C++) course, did
 
38
a em(magnificent) job by converting em(all) images to vector graphics (in the
 
39
process prompting me to start using vector graphics as well :-). Thanks, Elwin
 
40
for a job well done!
 
41
    it() Version 6.5.0 changed tt(unsigned) into tt(size_t) where appropriate,
 
42
and explicitly mentioned tt(int)-derived types like tt(int16_t). In-class
 
43
member function definitions were moved out of (below) their class definitions
 
44
as tt(inline) defined members. A paragraphs about implementing pure virtual
 
45
member functions was added. Various bugs and compilation errors were fixed.
 
46
    it() Version 6.4.0 added a new section (ref(RETURNNESTED)) further
 
47
discussing the use of the tt(template) keyword to distinguish types nested
 
48
under class templates from template members. Furthermore, emi(Sergio Bacchi)
 
49
tt( s dot bacchi at gmail dot com) did an impressive job when translating the
 
50
Annotations into Portuguese. His translation (which may lag a distribution or
 
51
two behind the latest verstion of the Annotations) may also be retrieved
 
52
from the tt(contributions/) subdirectory in the
 
53
tt(c++-annotations_X.Y.Z.tar.gz) archive at+nl()
 
54
lurl(http://sourceforge.net/projects/cppannotations/)
 
55
    it() Version 6.3.0 added new sections about anonymous objects (section
 
56
ref(ANONYMOUS)) and type resolution with class templates (section
 
57
ref(TYPERES)). Also the description of the template parameter deduction
 
58
algorithm was rewritten (cf. section ref(PARDEDUCT)) and numerous
 
59
modifications required because of the compiler's closer adherence to the
 
60
bf(C++) standard were realized, among which exception rethrowing from
 
61
constructor and destructor function try blocks. Also, all textual corrections
 
62
received from readers since version 6.2.4 were processed.
 
63
    it() In version 6.2.4 many textual improvements were realized. I received
 
64
extensive lists of typos and suggestions for clarifications of the text, in
 
65
particular from Nathan Johnson and from Jakob van Bethlehem. Equally valuable
 
66
were suggestions I received from various other readers of the bf(C++)
 
67
annotations: all were processed in this release. The bf(C++) content matter of
 
68
this release was not substantially modified, compared to version 6.2.2.
 
69
    it() Version 6.2.2 offers improved implementations of the configurable
 
70
class templates (removed in 8.1.0, superseded by lambda functions).
 
71
    it() Version 6.2.0 was released as an Annual Update, by the end of May,
 
72
2005. Apart from the usual typo corrections several new sections
 
73
were added and some were removed: in the Exception chapter (ref(EXCEPTIONS)) a
 
74
section was added covering the standard exceptions and their meanings; in the
 
75
chapter covering static members (ref(StaticDataFun)) a section was added
 
76
discussing tt(static const) data members; and the final chapter
 
77
(ref(CONCRETE)) covers configurable class templates using em(local context
 
78
structs) (replacing the previous tt(ForEach, UnaryPredicate) and
 
79
tt(BinaryPredicate) classes). Furthermore, the final section (covering a
 
80
bf(C++) parser generator) now uses bf(bisonc++), rather than the old
 
81
(and somewhat outdated) bf(bison++) program.
 
82
    it() Version 6.1.0 was released shortly after releasing 6.0.0. Following
 
83
suggestions received from nemail(Leo Razoumov)(LEOR@winmain.rutgers.edu) and
 
84
Paulo Tribolet, and after receiving many, many useful suggestions and
 
85
extensive help from Leo, navigatable tt(.pdf) files are from now on
 
86
distributed with the bf(C++) Annotations. Also, some sections were slightly
 
87
adapted. COMMENT(e.g., section ref(FOREACHWRAPPER).)
 
88
    it() Version 6.0.0 was released after a full update of the text, removing
 
89
many inconsistencies and typos. Since the update effected the Annotation's
 
90
full text an upgrade to a new major version seemed appropriate.  Several new
 
91
sections were added: overloading binary operators (section
 
92
ref(OVERLOADBINARY)); throwing exceptions in constructors and destructors
 
93
(section ref(CONSEXCEPTIONS)); function tt(try)-blocks (section ref(FUNTRY));
 
94
calling conventions of static and global functions (section
 
95
ref(CALLINGCONVENTION)) and virtual constructors (section ref(VIRTCONS)). The
 
96
chapter on templates was completely rewritten and split into two separate
 
97
chapters: chapter ref(TEMPLATES) discusses the syntax and use of template
 
98
em(functions); chapter ref(TEMPCLASS) discusses template em(classes). Various
 
99
concrete examples were modified; new examples were included as well (chapter
 
100
ref(CONCRETE)).
 
101
    it() In version 5.2.4 the description of the em(random_shuffle) generic
 
102
algorithm (section ref(SHUFFLE)) was modified.
 
103
    it() In version 5.2.3 section ref(LOCALVARS) on local variables was
 
104
extended and section ref(FunctionOverloading) on function overloading was
 
105
modified by explicitly discussing the effects of the bf(const) modifier with
 
106
overloaded functions. Also, the description of the tt(compare()) function in
 
107
chapter ref(String) contained an error, which was repaired.
 
108
    it() In version 5.2.2 a leftover in section ref(EXPLICIT)
 
109
from a former version was removed and the corresponding text was
 
110
updated. Also, some minor typos were corrected.
 
111
    it() In version 5.2.1 various typos were repaired, and some paragraphs
 
112
were further clarified. Furthermore, a section was added to the em(template)
 
113
chapter (chapter ref(TEMPLATES)), about creating several tt(iterator)
 
114
types. This topic was further elaborated in chapter ref(CONCRETE), where the
 
115
section about the construction of a reverse iterator (section
 
116
ref(CONCRETEITER)) was completely rewritten.  In the same chapter, a
 
117
em(universal text to anything convertor) is discussed (section ref(A2X)).
 
118
    Also, tt(LaTeX), tt(PostScript) and tt(PDF) versions fitting the
 
119
emi(US-letter)
 
120
    hi(letter (US paper size)) paper size are now available as
 
121
hi(cplusplusus) tt(cplusplus)bf(us) versions: tt(cplusplusus.latex,
 
122
cplusplusus.ps) and tt(cplusplus.pdf). The em(A4-paper) size is of course
 
123
kept, and remains to be available in the tt(cplusplus.latex, cplusplus.ps) and
 
124
tt(cpluspl.pdf) files.
 
125
    COMMENT(
 
126
    IFDEF(html)(nl()Finally, readers might be interested in reading the new
 
127
section ref(FREELECTURES), where the concept of emi(free lectures) is
 
128
introduced.)()
 
129
    )
 
130
    it() Version 5.2.0 was released after adding a section about
 
131
the
 
132
tt(mutable) keyword (section ref(MUTABLE)), and after thoroughly changing the
 
133
discussion of the tt(Fork()) abstract base class (section ref(FORK)). All
 
134
examples should now be up-to-date with respect to the use of the tt(std)
 
135
namespace.
 
136
    it() However, in the meantime the Gnu
 
137
            g++ compiler version 3.2 was hi(http://www.gnu.org)
 
138
released+footnote(tlurl(http://www.gnu.org)). In this version extensions to
 
139
the abstract containers (see chapter ref(CONTAINERS)) like the hash_map were
 
140
placed in a separate namespace, ti(__gnu_cxx). This namespace should be used
 
141
when using these containers. However, this may break compilations of sources
 
142
with tt(g++), version 3.0. In that case, a compilation can be performed
 
143
conditionally to the 3.2 and the 3.0 compiler version, defining tt(__gnu_cxx)
 
144
for the 3.2 version. Alternatively, the em(dirty trick)
 
145
        verb(
 
146
    #define __gnu_cxx std
 
147
        )
 
148
    can be placed just before header files in which the tt(__gnu_cxx)
 
149
namespace is used. This might eventually result in name-collisions, and it's a
 
150
dirty trick by any standards, so please don't tell anybody I wrote this down.
 
151
    it() Version 5.1.1 was released after modifying the sections related to
 
152
the tt(fork()) system call in chapter ref(CONCRETE). Under the i(ANSI/ISO)
 
153
standard many of the previously available extensions (like ti(procbuf), and
 
154
ti(vform)) applied to streams were discontinued. Starting with version
 
155
5.1.1. ways of constructing these facilities under the ANSI/ISO standard are
 
156
discussed in the bf(C++) Annotations. I consider the involved subject
 
157
sufficiently complex to warrant the upgrade to a new subversion.
 
158
    it() With the advent of the Gnu tt(g++) compiler version 3.00, a more
 
159
strict implementation of the ANSI/ISO bf(C++) standard became
 
160
available. This resulted in version 5.1.0 of the Annotations, appearing
 
161
shortly after version 5.0.0. In version 5.1.0 chapter ref(IOStreams) was
 
162
modified and several cosmetic changes took place (e.g., removing tt(class)
 
163
from template type parameter lists, see chapter ref(TEMPLATES)). Intermediate
 
164
versions (like 5.0.0a, 5.0.0b) were not further documented, but were mere
 
165
intermediate releases while approaching version 5.1.0. Code
 
166
examples will gradually be adapted to the new release of the compiler.
 
167
    quote(
 
168
        In the meantime the reader should be prepared to insert
 
169
        tt(using namespace std;)
 
170
    in many code examples, just beyond the ti(#include)
 
171
        preprocessor directives as a temporary measure to make the
 
172
    example accepted by the compiler.
 
173
    )
 
174
    it() New insights develop all the time, resulting in version 5.0.0 of the
 
175
Annotations. In this version a lot of old code was cleaned up and typos were
 
176
repaired. According to current standard, em(namespaces) are required in
 
177
bf(C++) programs, so they are introduced now very early (in section
 
178
ref(INTRONAME)) in the Annotations. A new section about using external
 
179
programs was added to the Annotations (and removed again in version 5.1.0),
 
180
and the new tt(stringstream) class, replacing the tt(strstream) class is now
 
181
covered too (sections ref(OSTRINGSTREAM) and ref(ISTRINGSTREAM)). Actually,
 
182
the chapter on input and output was completely rewritten. Furthermore, the
 
183
operators tt(new) and tt(delete) are now discussed in chapter ref(MEMORY),
 
184
where they fit better than in a chapter on classes, where they previously were
 
185
discussed. Chapters were moved, split and reordered, so that subjects could
 
186
generally be introduced without forward references. Finally, the tt(html),
 
187
PostScript and pdf versions of the bf(C++) Annotations now contain an
 
188
index (sigh of relief ?)  All in, considering the volume and nature of the
 
189
modifications, it seemed right to upgrade to a full major version. So here it
 
190
is.
 
191
 
 
192
Considering the volume of the Annotations, I'm sure there will be
 
193
typos found every now and then. Please do not hesitate to send me mail
 
194
containing any mistakes you find or corrections you would like to suggest.
 
195
    it() In release tt(4.4.1b) the pagesize in the LaTeX file was defined to
 
196
be tt(din A4). In countries where other pagesizes are standard the default
 
197
pagesize might be a better choice. In that case, remove the
 
198
tt(a4paper,twoside) option from tt(cplusplus.tex) (or tt(cplusplus.yo) if you
 
199
have tt(yodl) installed), and reconstruct the Annotations from the
 
200
em(TeX)-file or tt(Yodl)-files.
 
201
 
 
202
The Annotations mailing lists was stopped at release tt(4.4.1d). From this
 
203
point on only minor modifications were expected, which are not anymore
 
204
generally announced.
 
205
 
 
206
At some point, I considered version tt(4.4.1) to be the final version of the
 
207
bf(C++) Annotations. However, a section on special I/O functions was added to
 
208
cover unformatted I/O, and the section about the tt(string) datatype had its
 
209
layout improved and was, due to its volume, given a chapter of its own
 
210
(chapter ref(String)). All this eventually resulted in version tt(4.4.2).
 
211
 
 
212
Version tt(4.4.1) again contains new material, and reflects the
 
213
    hi(ftp://research.att.com/dist/c++std/WP/)
 
214
url(ANSI/ISO)(ftp://research.att.com/dist/c++std/WP/) standard (well, I try to
 
215
have it reflect the ANSI/ISO standard). In version 4.4.1. several new
 
216
sections and chapters were added, among which a chapter about the
 
217
    em(Standard Template Library) (STL) and em(generic algorithms).
 
218
 
 
219
Version tt(4.4.0) (and subletters) was a mere construction version and was
 
220
never made available.
 
221
 
 
222
The version tt(4.3.1a) is a precursor of tt(4.3.2). In tt(4.3.1a) most of the
 
223
typos I've received since the last update have been processed. In version
 
224
tt(4.3.2) extra attention was paid to the syntax for function addresses and
 
225
pointers to member functions.
 
226
 
 
227
The decision to upgrade from version 4.2.* to 4.3.* was made after realizing
 
228
that the lexical scanner function tt(yylex()) can be defined in the
 
229
scanner class that is derived from tt(yyFlexLexer). Under this approach
 
230
the tt(yylex()) function can access the members of the class derived from
 
231
tt(yyFlexLexer) as well as the public and protected members of
 
232
tt(yyFlexLexer). The result of all this is a clean implementation of the rules
 
233
defined in the tt(flex++) specification file.
 
234
 
 
235
The upgrade from version 4.1.* to 4.2.* was the result of the inclusion of
 
236
section ref(BOOL) about the bf(bool) data type in chapter
 
237
ref(FirstImpression). The distinction between differences between bf(C) and
 
238
bf(C++) and extensions of the bf(C) programming languages is (albeit a bit
 
239
fuzzy) reflected in the introduction chapter and the chapter on first
 
240
impressions of bf(C++): The link(introduction chapter)(IntroC)
 
241
covers some differences between bf(C) and bf(C++), whereas the chapter about
 
242
link(first impressions)(FirstImpression) of bf(C++) covers some extensions of
 
243
the bf(C) programming language as found in bf(C++).
 
244
 
 
245
Major version 4 is a major rewrite of the previous
 
246
version 3.4.14. The document was rewritten from SGML to
 
247
Yodl and many
 
248
new sections were added. All sections got a tune-up. The distribution basis,
 
249
however, hasn't changed: see link(the introduction)(IntroC).
 
250
 
 
251
Modifications in versions 1.*.*, 2.*.*, and 3.*.* (replace the stars by any
 
252
applicable number) were not logged.
 
253
 
 
254
Subreleases like tt(4.4.2a) etc. contain bugfixes and typographical
 
255
corrections.