1 <?xml version=
"1.0" encoding=
"ISO-8859-1"?>
3 PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
4 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6 <html xmlns=
"http://www.w3.org/1999/xhtml" xml:
lang=
"en" lang=
"en">
8 <meta name=
"AUTHOR" content=
"bkoz@gcc.gnu.org (Benjamin Kosnik)" />
9 <meta name=
"KEYWORDS" content=
"C++, libstdc++, API, evolution, deprecate" />
10 <meta name=
"DESCRIPTION" content=
"API evolution and deprecation history" />
11 <meta name=
"GENERATOR" content=
"emacs and ten fingers" />
12 <title>API Evolution and Deprecation History
</title>
13 <link rel=
"StyleSheet" href=
"lib3styles.css" type=
"text/css" />
14 <link rel=
"Start" href=
"documentation.html" type=
"text/html"
15 title=
"GNU C++ Standard Library" />
16 <link rel=
"Copyright" href=
"17_intro/license.html" type=
"text/html" />
20 <h1 class=
"centered"><a name=
"top">API Evolution and Deprecation History
</a></h1>
22 <p class=
"fineprint"><em>
23 The latest version of this document is always available at
24 <a href=
"http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/api.html">
25 http://gcc.gnu.org/onlinedocs/libstdc++/
17_intro/api.html
</a>.
29 To the
<a href=
"http://gcc.gnu.org/libstdc++/">libstdc++ homepage
</a>.
32 <!-- ####################################################### -->
36 <a name=
"intro">API Evolution, Deprecation, and History of User Visible Changes
</a>
39 <p> A list of user-visible changes, by release version.
47 Extensions moved to
<code>include/ext
</code>.
51 Include files from the SGI/HP sources that pre-date the ISO standard
52 are added. These files are placed into
53 the
<code>include/backward
</code> directory and a deprecated warning
54 is added that notifies on inclusion (
<code>-Wno-deprecated
</code>
55 deactivates the warning.)
58 <p>Deprecated include
<backward/strstream
> added.
</p>
60 <p>Removal of include
<builtinbuf.h
>,
<indstream.h
>,
<parsestream.h
>,
<PlotFile.h
>,
<SFile.h
>,
<stdiostream.h
>, and
<stream.h
>.
</p>
68 Extensions from SGI/HP moved from
<code>namespace std
</code>
69 to
<code>namespace __gnu_cxx
</code>. As part of this, the following
71 added:
<ext/algorithm
>,
<ext/functional
>,
<ext/iterator
>,
<ext/memory
>, and
<ext/numeric
>.
75 Extensions to
<code>basic_filebuf
</code> introduced:
<code>__gnu_cxx::enc_filebuf
</code>, and
<code>__gnu_cxx::stdio_filebuf
</code>.
79 Extensions to tree data structures added in
<ext/rb_tree
>.
83 Removal of
<ext/tree
>, moved to
<backward/tree.h
>.
90 <p>Symbol versioning introduced for shared library.
</p>
92 <p>Removal of include
<backward/strstream.h
>.
</p>
97 <p>Allocator changes. Change
<code>__malloc_alloc
</code> to
<code>malloc_allocator
</code> and
<code>__new_alloc
</code> to
<code>new_allocator
</code>.
</p>
99 <p>Error handling in iostreams cleaned up, made consistent.
</p>
103 <a name=
"3.4">3.4</a>
109 <p> Extensions for generic characters and
<code>char_traits
</code> added in
<ext/pod_char_traits.h
>.
113 Support for
<code>wchar_t
</code> specializations of
<code>basic_filebuf
</code> enhanced to support
<code>UTF-
8</code> and
<code>Unicode
</code>, depending on host. More hosts support basic
<code>wchar_t
</code> functionality.
117 Support for
<code>char_traits
</code> beyond builtin types.
121 Conformant
<code>allocator
</code> class and usage in containers. As
122 part of this, the following extensions are
123 added:
<ext/bitmap_allocator.h
>,
<ext/debug_allocator.h
>,
<ext/mt_allocator.h
>,
<ext/malloc_allocator.h
>,
<ext/new_allocator.h
>,
<ext/pool_allocator.h
>.
128 Debug mode first appears.
136 Macro guard for libstdc++ changed, from _GLIBCPP_ to _GLIBCXX_.
140 Extension
<ext/stdio_sync_filebuf.h
> added.
144 Extension
<ext/demangle.h
> added.
149 <a name=
"4.0">4.0</a>
152 TR1 features first appear.
156 Extension allocator
<ext/array_allocator.h
> added.
160 Extension
<code>codecvt
</code> specializations moved to
<ext/codecvt_specializations.h
>.
164 Removal of
<ext/demangle.h
>.
169 <a name=
"4.1">4.1</a>
173 Removal of
<cassert
> from all standard headers: now has to be explicitly included for
<code>std::assert
</code> calls.
176 <p> Extensions for policy-based data structures first added. New includes,
177 types, namespace
<code>pb_assoc
</code>.
182 <p> Extensions for typelists added in
<ext/typelist.h
>.
185 <p> Extension for policy-based
<code>basic_string
</code> first added:
<code>__gnu_cxx::__versa_string
</code> in
<ext/vstring.h
>.
189 <a name=
"4.2">4.2</a>
192 <p> Default visibility attributes applied to
<code>namespace std
</code>. Support for
<code>-fvisibility
</code>.
195 <p>TR1
<random
>,
<complex
>, and C compatibility headers added.
</p>
197 <p> Extensions for concurrent programming consolidated
198 into
<ext/concurrence.h
> and
<ext/atomicity.h
>,
199 including change of namespace to
<code>__gnu_cxx
</code> in some
201 include
<code>_Lock_policy
</code>,
<code>__concurrence_lock_error
</code>,
<code>__concurrence_unlock_error
</code>,
<code>__mutex
</code>,
<code>__scoped_lock
</code>.
</p>
203 <p> Extensions for type traits consolidated
204 into
<ext/type_traits.h
>. Additional traits are added
205 (
<code>__conditional_type
</code>,
<code>__enable_if
</code>, others.)
208 <p> Extensions for policy-based data structures revised. New includes,
209 types, namespace moved to
<code>__pb_ds
</code>.
212 <p> Extensions for debug mode modified: now nested in
<code>namespace
213 std::__debug
</code> and extensions in
<code>namespace
214 __gnu_cxx::__debug
</code>.
</p>
216 <p> Extensions added:
<ext/typelist.h
>
217 and
<ext/throw_allocator.h
>.
221 <a name=
"4.3">4.3</a>
225 C++
0X features first appear.
228 <p>TR1
<regex
> and
<cmath
>'s mathematical special function added.
</p>
231 Backward include edit.
234 <li> Removed:
<algobase.h
> <algo.h
> <alloc.h
> <bvector.h
> <complex.h
>
235 defalloc.h
> <deque.h
> <fstream.h
> <function.h
> <hash_map.h
> <hash_set.h
>
236 hashtable.h
> <heap.h
> <iomanip.h
> <iostream.h
> <istream.h
> <iterator.h
>
237 list.h
> <map.h
> <multimap.h
> <multiset.h
> <new.h
> <ostream.h
> <pair.h
> <queue.h
> <rope.h
> <set.h
> <slist.h
> <stack.h
> <streambuf.h
> <stream.h
> <tempbuf.h
>
238 <tree.h
> <vector.h
>
240 <li> Added:
<hash_map
> and
<hash_set
></li>
241 <li> Added in C++
0x:
<auto_ptr.h
> and
<binders.h
></li>
245 Header dependency streamlining.
249 <li><algorithm
> no longer includes
<climits
>,
<cstring
>, or
<iosfwd
> </li>
250 <li><bitset
> no longer includes
<istream
> or
<ostream
>, adds
<iosfwd
> </li>
251 <li><functional
> no longer includes
<cstddef
></li>
252 <li><iomanip
> no longer includes
<istream
>,
<istream
>, or
<functional
>, adds
<ioswd
> </li>
253 <li><numeric
> no longer includes
<iterator
></li>
254 <li><string
> no longer includes
<algorithm
> or
<memory
></li>
256 <li><valarray
> no longer includes
<numeric
> or
<cstdlib
></li>
257 <li><tr1/hashtable
> no longer includes
<memory
> or
<functional
></li>
258 <li><tr1/memory
> no longer includes
<algorithm
></li>
259 <li><tr1/random
> no longer includes
<algorithm
> or
<fstream
></li>
263 Debug mode for
<unordered_map
> and
<unordered_set
>.
267 Parallel mode first appears.
270 <p>Variadic template implementations of items in
<tuple
> and
274 <p>Default
<code>what
</code> implementations give more elaborate
275 exception strings for
<code>bad_cast
</code>,
276 <code>bad_typeid
</code>,
<code>bad_exception
</code>, and
277 <code>bad_alloc
</code>.
281 PCH binary files no longer installed. Instead, the source files are installed.
285 Namespace pb_ds moved to __gnu_pb_ds.