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