1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
|
std::allocator
- switch to mt_allocator with --enable-threads=posix.
- Try to figure out a way to switch allocators in a more elegant
manner, and make the default allocator configurable.
- persistent allocator
- global/extern allocator
std::string
- re-design for multi-paradigm, meta string class solution incorporating COW
vs. deep copy issues, MT scalability
See Andrei Alexandrescu, June 2001, C/C++ Users Journal
"Generic<Programming>: A Policy-Based basic_string Implementation"
http://www.cuj.com/documents/s=7994/cujcexp1906alexandr/
- operator!= and utility/rel_ops operators need to be made safe with
string and vector iterator classes. basic_string::reverse_iterator may
be implemented incorrectly, or need things like
operator==(__normal_iterator, const char*&), and swap(vector)
- 'do the right thing' ctor fixing needs to be done for string. This
is still subject to some debate on the library issues list, so I
suggest punting till the dust clears.
- fix template members of basic_string<> to overload iterators and
non-iterators properly. (This is the infamous hack as in vector<> etc
23.1.1 para 10.)
std::locale
- implement __convert_to_v and __convert_from_v without "C" library
functions and and LANG environment variable dependencies.
- use localedata to implement generic named (non-MT-safe) locales?
Figure out a way to use ICU data, like libjava? Re-package and use
the glibc localedata, even if we aren't on linux? Need a generic
locale model that does something besides the "C" locale.
- make locale::classic() separate from named locale code. This will
improve the static linkage situation, but will require new
initialization code. In particular, we need lazy-initialization of
locale::classic(), and maybe the has_facet/use_facet functions for all
the required facets. The end goal is a self-contained
locale_init.cc, or one with transitive closure without the locale
instantiations (locale-inst.cc) or the named locale bits
(localename.cc).
- Jerry(?)/Paolo(?) work on __float_to_char.
- minimize ctype convertion in data facets, see numpunct/num_put/num_get
- finish caching data facets and using the caches
std::basic_filebuf, 27_io
- wfilebuf, get variable-encoding working and tested, including
positioning and seeking. (I think this may be done now)
- wfilebuf testsuite (getting there...)
- look ahead for unbuffered io, so know when multiple putc's can be
coalesced.
- unlocked __basic_file + new mutext class
- optimized the sentries for istream/ostream
- v2 vs. v3 speed
- add optimization hooks (esp. whitespace eating) to streambuf
- add _M_begin() and _M_end() to streambuf
- add algorithm specializations for [io]streambuf_iterator (copy find etc.)
testsuite
- valgrind hooks into make check so can tell memory leakage
Some commentary on the valgrind users list
- add hooks for qmtest for visual diffs
- automatic testing of interactive tests
- diffing generated output files
- make check-abi needs to have full symbol checking. Scope the LSB
testsuite, see what's going on with the typeinfo etc. bits.
- provide testsuites for numerics.
- try to do a better job of ABI testing, with instantiations of all
standard-specified types checked, not just exported symbols.
g++/binutils
- compression for wide versions of basic types, not just narrow
threads
- create MT abstraction layer for atomicity to pthreads.
- solution for threads + C++.
- audit for places where __builtin_expect can be used.
- relocations, work on getting these down
- issues with __builtin_memcpy and std::copy from Jerry Quinn
http://gcc.gnu.org/ml/libstdc++/2003-02/msg00056.html
http://gcc.gnu.org/ml/libstdc++/2003-02/msg00302.html
http://gcc.gnu.org/ml/gcc/2003-10/msg01305.html
- fix dependency tracking for includes (.h, .tcc) during build process.
- coordinate with "C" library people the "C" compatibility headers.
- Think about naming all member data and member functions consistently
as per
funtions: _M_verb_adverb
data: _M_noun_adjective
- A C++STYLE guide that deals with nested namespaces, and that
everybody can live with.
- exception specifications need to be reviewed for all parts of the
library support and utility areas, particularly <new>. Part of this is
a standards issue, where the 27_io bugs/standard is really in an odd
spot.
- C-related issues WRT to io and filepos, mbstate_t. Seeking in wide
streams. May need to define operators for mbstate_t so that
'mbstate_t& == mbstate_t' is something that can be done.
- scoping/linking issues WRT to C structs need to be worked out. See
Nathan's commentary on cantrip, http://www.cantrip.org/cheaders.html
- auto_ptr: seems to be some disagreement on what is
standards-conformant behavior, specially on conversion operators.
- looks like deque::get_allocator not standards conformant or deque
allocator non-standard.
- list::assignment operator needs const_cast
- a cleaner division between pointers-to-value_type and true iterators
needs to be drawn throughout the entire STL implementation.
- priority_queue conversions may be non-conformant
- Protect valarray::result_type (not Standard) and make it work with
the various helper classes.
- Make sure `valarray<bool> & == _Expr<_BinClos<logical_or,_ValArray,_ValArray,double,double>,bool>'
is defined
- All of the Library working group closed issues need to be
addressed. Some of them proposed resolutions are already in the v-3
sources, with macro-guards. Also, same with the TR.
- add deprecated features from Annex D
- add #ifdef wrappers for all of them, including in each
C <xxx.h> header
- replace typedef'd non-deprecated types with more type-safe equivalents.
- add feature-test macros for non-standard extensions
- add MT support for locale, string, istream, ostream
- need to think about doing a .texi or DocBook manual, instead of all
these HTML pages. In addition, it would be nice to have a full manual,
instead of a lot of ad-hoc pages. Weaknesses include numerics, locale,
and io.
- add FAQ entries -- improve the install instructions
- add HOWTO entries
- do more doxygen manpages
|