Home | History | Annotate | Download | only in abi
      1 ABI Changelog
      2 ==============
      3 This changelog contains information about ABI changes in libc++. Specifically
      4 the addition and deletion of symbols from the libc++ dylib.
      5 
      6 Each entry should start with the revision number followed by a description of
      7 the change. The entry should contain a summary of the ABI changes made,
      8 including what symbols were added, removed, or changed.
      9 
     10 To generate a summary use "sym_diff.py" diffing against the appropriate ABI list.
     11 Afterwards the ABI list should be updated to include the new changes.
     12 
     13 New entries should be added directly below the "Version" header.
     14 
     15 -----------
     16 Version 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 -----------
     52 Version 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 (a] 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