blob: 93685fa3c9e97017b2a6feea429b17517cb9c4ac [file] [log] [blame]
std::allocator
- switch to mt_allocator with --enable-threads=posix.
- persistent allocator
- global/extern allocator
std::string
- Policy-based design 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
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
- provide testsuites for numerics.
- make check-abi needs to have full symbol checking. Scope the LSB
testsuite, see what's going on with the typeinfo etc. bits.
- 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.
- 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