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