• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1ABI Changelog
2==============
3This changelog contains information about ABI changes in libc++. Specifically
4the addition and deletion of symbols from the libc++ dylib.
5
6Each entry should start with the revision number followed by a description of
7the change. The entry should contain a summary of the ABI changes made,
8including what symbols were added, removed, or changed.
9
10To generate a summary use "sym_diff.py" diffing against the appropriate ABI list.
11Afterwards the ABI list should be updated to include the new changes.
12
13New entries should be added directly below the "Version" header.
14
15-----------
16Version 5.0
17-----------
18
19* r296729 - Remove std::num_get template methods which should be inline
20
21  These functions should never have had visible definitions in the dylib but
22  since they were previously not specified with 'inline' they accidentally
23  got emitted. This change is non-ABI breaking because every "linkage unit"
24  must contain its own definition.
25
26  x86_64-linux-gnu
27  ----------------
28  SYMBOL REMOVED: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__do_get_signedIlEES4_S4_S4_RNS_8ios_baseERjRT_
29  SYMBOL REMOVED: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__do_get_signedIxEES4_S4_S4_RNS_8ios_baseERjRT_
30  SYMBOL REMOVED: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedIjEES4_S4_S4_RNS_8ios_baseERjRT_
31  SYMBOL REMOVED: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedImEES4_S4_S4_RNS_8ios_baseERjRT_
32  SYMBOL REMOVED: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedItEES4_S4_S4_RNS_8ios_baseERjRT_
33  SYMBOL REMOVED: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedIyEES4_S4_S4_RNS_8ios_baseERjRT_
34  SYMBOL REMOVED: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIdEES4_S4_S4_RNS_8ios_baseERjRT_
35  SYMBOL REMOVED: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIeEES4_S4_S4_RNS_8ios_baseERjRT_
36  SYMBOL REMOVED: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIfEES4_S4_S4_RNS_8ios_baseERjRT_
37  SYMBOL REMOVED: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__do_get_signedIlEES4_S4_S4_RNS_8ios_baseERjRT_
38  SYMBOL REMOVED: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__do_get_signedIxEES4_S4_S4_RNS_8ios_baseERjRT_
39  SYMBOL REMOVED: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedIjEES4_S4_S4_RNS_8ios_baseERjRT_
40  SYMBOL REMOVED: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedImEES4_S4_S4_RNS_8ios_baseERjRT_
41  SYMBOL REMOVED: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedItEES4_S4_S4_RNS_8ios_baseERjRT_
42  SYMBOL REMOVED: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedIyEES4_S4_S4_RNS_8ios_baseERjRT_
43  SYMBOL REMOVED: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIdEES4_S4_S4_RNS_8ios_baseERjRT_
44  SYMBOL REMOVED: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIeEES4_S4_S4_RNS_8ios_baseERjRT_
45  SYMBOL REMOVED: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIfEES4_S4_S4_RNS_8ios_baseERjRT_
46
47  x86_64-apple-darwin16.0
48  -----------------------
49  No changes
50
51-----------
52Version 4.0
53-----------
54
55* r290651 - Add _LIBCPP_ASSERT debug handling functions
56
57  All Platforms
58  -------------
59  Symbol added: _ZNSt3__124__libcpp_debug_exceptionC2ERKNS_19__libcpp_debug_infoE
60  Symbol added: _ZNSt3__124__libcpp_debug_exceptionD1Ev
61  Symbol added: _ZTINSt3__124__libcpp_debug_exceptionE
62  Symbol added: _ZNSt3__129__libcpp_throw_debug_functionERKNS_19__libcpp_debug_infoE
63  Symbol added: _ZNSt3__124__libcpp_debug_exceptionD2Ev
64  Symbol added: _ZNSt3__129__libcpp_abort_debug_functionERKNS_19__libcpp_debug_infoE
65  Symbol added: _ZNSt3__124__libcpp_debug_exceptionC2ERKS0_
66  Symbol added: _ZNSt3__124__libcpp_debug_exceptionC1Ev
67  Symbol added: _ZNSt3__124__libcpp_debug_exceptionC1ERKNS_19__libcpp_debug_infoE
68  Symbol added: _ZNSt3__124__libcpp_debug_exceptionC2Ev
69  Symbol added: _ZTSNSt3__124__libcpp_debug_exceptionE
70  Symbol added: _ZNSt3__123__libcpp_debug_functionE
71  Symbol added: _ZNKSt3__124__libcpp_debug_exception4whatEv
72  Symbol added: _ZNSt3__124__libcpp_debug_exceptionC1ERKS0_
73  Symbol added: _ZNSt3__124__libcpp_debug_exceptionD0Ev
74  Symbol added: _ZTVNSt3__124__libcpp_debug_exceptionE
75  Symbol added: _ZNSt3__127__libcpp_set_debug_functionEPFvRKNS_19__libcpp_debug_infoEE
76
77* r288547 - Implement C++17 <variant>
78
79  All Platforms
80  -------------
81  Symbol added: _ZTVSt18bad_variant_access
82  Symbol added: _ZTISt18bad_variant_access
83  Symbol added: _ZTSSt18bad_variant_access
84  Symbol added: _ZNKSt18bad_variant_access4whatEv
85
86* r285537 - Remove std::string::append template methods which should be inline
87
88  These functions should never have had visible definitions in the dylib but
89  since they were previously not specified with 'inline' they accidentally
90  got emitted. This change is non-ABI breaking because every "linkage unit"
91  must contain its own definition.
92
93  x86_64-linux-gnu
94  ----------------
95  SYMBOL REMOVED: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendIPcEENS_9enable_ifIXaasr21__is_forward_iteratorIT_EE5valuesr38__libcpp_string_gets_noexcept_iteratorIS9_EE5valueERS5_E4typeES9_S9_
96  SYMBOL REMOVED: _ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6appendIPwEENS_9enable_ifIXaasr21__is_forward_iteratorIT_EE5valuesr38__libcpp_string_gets_noexcept_iteratorIS9_EE5valueERS5_E4typeES9_S9_
97
98  x86_64-apple-darwin16.0
99  -----------------------
100  No changes
101
102* r285101 - Add -fvisibility-inlines-hidden when building libc++.
103
104  Although this change removes symbols, it should still be non-ABI breaking
105  since all of the definitions removed are inline functions. For this reason
106  removing these symbols is safe because every "linkage unit" which uses these
107  functions will contain their own definition.
108
109  x86_64-linux-gnu
110  ----------------
111  SYMBOL REMOVED: _ZNSt12bad_any_castD0Ev
112  SYMBOL REMOVED: _ZNSt12experimental15fundamentals_v112bad_any_castD0Ev
113  SYMBOL REMOVED: _ZNSt3__114__codecvt_utf8IDiED0Ev
114  SYMBOL REMOVED: _ZNSt3__114__codecvt_utf8IDsED0Ev
115  SYMBOL REMOVED: _ZNSt3__114__codecvt_utf8IwED0Ev
116  SYMBOL REMOVED: _ZNSt3__115__codecvt_utf16IDiLb0EED0Ev
117  SYMBOL REMOVED: _ZNSt3__115__codecvt_utf16IDiLb1EED0Ev
118  SYMBOL REMOVED: _ZNSt3__115__codecvt_utf16IDsLb0EED0Ev
119  SYMBOL REMOVED: _ZNSt3__115__codecvt_utf16IDsLb1EED0Ev
120  SYMBOL REMOVED: _ZNSt3__115__codecvt_utf16IwLb0EED0Ev
121  SYMBOL REMOVED: _ZNSt3__115__codecvt_utf16IwLb1EED0Ev
122  SYMBOL REMOVED: _ZNSt3__117__assoc_sub_stateD0Ev
123  SYMBOL REMOVED: _ZNSt3__117__assoc_sub_stateD2Ev
124  SYMBOL REMOVED: _ZNSt3__117__libcpp_sscanf_lEPKcP15__locale_structS1_z
125  SYMBOL REMOVED: _ZNSt3__119__libcpp_asprintf_lEPPcP15__locale_structPKcz
126  SYMBOL REMOVED: _ZNSt3__119__libcpp_snprintf_lEPcmP15__locale_structPKcz
127  SYMBOL REMOVED: _ZNSt3__120__codecvt_utf8_utf16IDiED0Ev
128  SYMBOL REMOVED: _ZNSt3__120__codecvt_utf8_utf16IDsED0Ev
129  SYMBOL REMOVED: _ZNSt3__120__codecvt_utf8_utf16IwED0Ev
130
131  x86_64-apple-darwin16.0
132  -----------------------
133  No Changes - inline symbols are already hidden
134
135
136* r284206 - Implement C++17 aligned allocation in <new>
137
138  x86_64-linux-gnu
139  ----------------
140  Symbol added: posix_memalign@GLIBC_2.2.5
141  Symbol added: _ZdaPvSt11align_val_t
142  Symbol added: _ZdlPvSt11align_val_t
143  Symbol added: _ZnamSt11align_val_t
144  Symbol added: _ZdaPvmSt11align_val_t
145  Symbol added: _ZdlPvmSt11align_val_t
146  Symbol added: _ZdlPvSt11align_val_tRKSt9nothrow_t
147  Symbol added: _ZnwmSt11align_val_tRKSt9nothrow_t
148  Symbol added: _ZnamSt11align_val_tRKSt9nothrow_t
149  Symbol added: _ZdaPvSt11align_val_tRKSt9nothrow_t
150  Symbol added: _ZnwmSt11align_val_t
151
152* r283980 - Implement C++17 <optional>
153
154  x86_64-linux-gnu
155  ----------------
156  Symbol added: _ZTISt19bad_optional_access
157  Symbol added: _ZNSt19bad_optional_accessD0Ev
158  Symbol added: _ZNSt19bad_optional_accessD1Ev
159  Symbol added: _ZNSt19bad_optional_accessD2Ev
160  Symbol added: _ZTVSt19bad_optional_access
161  Symbol added: _ZTSSt19bad_optional_access
162
163* r278310 - Implement C++17 <any>
164
165  x86_64-linux-gnu
166  ----------------
167  Symbol added: _ZNKSt12bad_any_cast4whatEv
168  Symbol added: _ZNSt12bad_any_castD0Ev
169  Symbol added: _ZTISt12bad_any_cast
170  Symbol added: _ZTSSt12bad_any_cast
171  Symbol added: _ZTVSt12bad_any_cast
172
173* r295398 - Remove basic_string::insert and basic_string::replace template methods
174    which should be inline.
175
176  These functions should never have had visible definitions in the dylib but
177  since they were previously not specified with 'inline' they accidentally
178  got emitted. This change is non-ABI breaking because every "linkage unit"
179  must contain its own definition.
180
181  x86_64-linux-gnu
182  ----------------
183  SYMBOL REMOVED: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6insertIPKcEENS_9enable_ifIXaasr21__is_forward_iteratorIT_EE5valuesr38__libcpp_string_gets_noexcept_iteratorISA_EE5valueENS_11__wrap_iterIPcEEE4typeENSB_IS8_EESA_SA_
184  SYMBOL REMOVED: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7replaceIPKcEENS_9enable_ifIXsr19__is_input_iteratorIT_EE5valueERS5_E4typeENS_11__wrap_iterIS8_EESF_SA_SA_
185  SYMBOL REMOVED: _ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6insertIPKwEENS_9enable_ifIXaasr21__is_forward_iteratorIT_EE5valuesr38__libcpp_string_gets_noexcept_iteratorISA_EE5valueENS_11__wrap_iterIPwEEE4typeENSB_IS8_EESA_SA_
186  SYMBOL REMOVED: _ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7replaceIPKwEENS_9enable_ifIXsr19__is_input_iteratorIT_EE5valueERS5_E4typeENS_11__wrap_iterIS8_EESF_SA_SA_
187