# ICU4C API Comparison: ICU 76 with ICU 77

## Removed from ICU 76

File | API | ICU 76 | ICU 77
--- | --- | --- | ---
messageformat2_data_model.h | Builder& icu::message2::MFDataModel::Builder::addSelector(Expression&&, UErrorCode&) | Internal ICU 75 | (missing)
resbund.h | const Locale icu::ResourceBundle::getLocale(ULocDataLocaleType, UErrorCode&) const | Stable ICU 2.8 | (missing)
timezone.h | `static` const UnicodeString icu::TimeZone::getEquivalentID(const UnicodeString&, int32_t) | Stable ICU 2.0 | (missing)
uset.h | UnicodeString U_HEADER_ONLY_NAMESPACE::USetElementIterator::operator* () const | Draft ICU 76 | (missing)

(jump back to top)

## Deprecated or Obsoleted in ICU 77

File | API | ICU 76 | ICU 77
--- | --- | --- | ---

(jump back to top)

## Changed in ICU 77 (old, new)

File | API | ICU 76 | ICU 77
--- | --- | --- | ---
numberformatter.h | UnlocalizedNumberFormatter icu::number::LocalizedNumberFormatter::withoutLocale() && | Draft→Stable ICU 75
numberformatter.h | UnlocalizedNumberFormatter icu::number::LocalizedNumberFormatter::withoutLocale() const & | Draft→Stable ICU 75
numberrangeformatter.h | UnlocalizedNumberRangeFormatter icu::number::LocalizedNumberRangeFormatter::withoutLocale() && | Draft→Stable ICU 75
numberrangeformatter.h | UnlocalizedNumberRangeFormatter icu::number::LocalizedNumberRangeFormatter::withoutLocale() const & | Draft→Stable ICU 75
simplenumberformatter.h | void icu::number::SimpleNumber::setMaximumIntegerDigits(uint32_t, UErrorCode&) | Draft→Stable ICU 75
uchar.h | bool u_hasIDType(UChar32, UIdentifierType) | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierStatus::U_ID_STATUS_ALLOWED | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierStatus::U_ID_STATUS_RESTRICTED | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_DEFAULT_IGNORABLE | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_DEPRECATED | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_EXCLUSION | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_INCLUSION | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_LIMITED_USE | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_NOT_CHARACTER | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_NOT_NFKC | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_NOT_XID | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_OBSOLETE | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_RECOMMENDED | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_TECHNICAL | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_UNCOMMON_USE | Draft→Stable ICU 75
uchar.h | `enum` UProperty::UCHAR_IDENTIFIER_STATUS | Draft→Stable ICU 75
uchar.h | `enum` UProperty::UCHAR_IDENTIFIER_TYPE | Draft→Stable ICU 75
uchar.h | int32_t u_getIDTypes(UChar32, UIdentifierType*, int32_t, UErrorCode*) | Draft→Stable ICU 75
uniset.h | U_HEADER_NESTED_NAMESPACE::USetElementIterator icu::UnicodeSet::begin() const | Draft ICU 76 | Draft ICU 77
uniset.h | U_HEADER_NESTED_NAMESPACE::USetElementIterator icu::UnicodeSet::end() const | Draft ICU 76 | Draft ICU 77
uset.h | USetElementIterator & U_HEADER_ONLY_NAMESPACE::USetElementIterator::operator++() | Draft ICU 76 | Draft ICU 77
uset.h | USetElementIterator U_HEADER_ONLY_NAMESPACE::USetElementIterator::operator++(int) | Draft ICU 76 | Draft ICU 77
uset.h | USetElementIterator U_HEADER_ONLY_NAMESPACE::USetElements::begin() const | Draft ICU 76 | Draft ICU 77
uset.h | USetElementIterator U_HEADER_ONLY_NAMESPACE::USetElements::end() const | Draft ICU 76 | Draft ICU 77
uset.h | U_HEADER_ONLY_NAMESPACE::USetElementIterator::USetElementIterator(const USetElementIterator&)=default | Draft ICU 76 | Draft ICU 77
uset.h | U_HEADER_ONLY_NAMESPACE::USetElements::USetElements(const USet*) | Draft ICU 76 | Draft ICU 77
uset.h | U_HEADER_ONLY_NAMESPACE::USetElements::USetElements(const USetElements&)=default | Draft ICU 76 | Draft ICU 77
uset.h | bool U_HEADER_ONLY_NAMESPACE::USetElementIterator::operator!=(const USetElementIterator&) const | Draft ICU 76 | Draft ICU 77
uset.h | bool U_HEADER_ONLY_NAMESPACE::USetElementIterator::operator==(const USetElementIterator&) const | Draft ICU 76 | Draft ICU 77
usimplenumberformatter.h | void usnum_setMaximumIntegerDigits(USimpleNumber*, int32_t, UErrorCode*) | Draft→Stable ICU 75

(jump back to top)

## Promoted to stable in ICU 77

File | API | ICU 76 | ICU 77
--- | --- | --- | ---
numberformatter.h | UnlocalizedNumberFormatter icu::number::LocalizedNumberFormatter::withoutLocale() && | Draft→Stable ICU 75
numberformatter.h | UnlocalizedNumberFormatter icu::number::LocalizedNumberFormatter::withoutLocale() const & | Draft→Stable ICU 75
numberrangeformatter.h | UnlocalizedNumberRangeFormatter icu::number::LocalizedNumberRangeFormatter::withoutLocale() && | Draft→Stable ICU 75
numberrangeformatter.h | UnlocalizedNumberRangeFormatter icu::number::LocalizedNumberRangeFormatter::withoutLocale() const & | Draft→Stable ICU 75
resbund.h | Locale icu::ResourceBundle::getLocale(ULocDataLocaleType, UErrorCode&) const | (missing) | Stable ICU 2.8
simplenumberformatter.h | void icu::number::SimpleNumber::setMaximumIntegerDigits(uint32_t, UErrorCode&) | Draft→Stable ICU 75
timezone.h | `static` UnicodeString icu::TimeZone::getEquivalentID(const UnicodeString&, int32_t) | (missing) | Stable ICU 2.0
uchar.h | bool u_hasIDType(UChar32, UIdentifierType) | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierStatus::U_ID_STATUS_ALLOWED | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierStatus::U_ID_STATUS_RESTRICTED | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_DEFAULT_IGNORABLE | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_DEPRECATED | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_EXCLUSION | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_INCLUSION | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_LIMITED_USE | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_NOT_CHARACTER | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_NOT_NFKC | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_NOT_XID | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_OBSOLETE | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_RECOMMENDED | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_TECHNICAL | Draft→Stable ICU 75
uchar.h | `enum` UIdentifierType::U_ID_TYPE_UNCOMMON_USE | Draft→Stable ICU 75
uchar.h | `enum` UProperty::UCHAR_IDENTIFIER_STATUS | Draft→Stable ICU 75
uchar.h | `enum` UProperty::UCHAR_IDENTIFIER_TYPE | Draft→Stable ICU 75
uchar.h | int32_t u_getIDTypes(UChar32, UIdentifierType*, int32_t, UErrorCode*) | Draft→Stable ICU 75
usimplenumberformatter.h | void usnum_setMaximumIntegerDigits(USimpleNumber*, int32_t, UErrorCode*) | Draft→Stable ICU 75

(jump back to top)

## Added in ICU 77

File | API | ICU 76 | ICU 77
--- | --- | --- | ---
locid.h | `static` Locale icu::Locale::createFromName(StringPiece) | (missing) | Internal
measunit.h | MeasureUnit icu::MeasureUnit::withConstantDenominator(uint64_t, UErrorCode&) const | (missing) | Draft ICU 77
measunit.h | `static` MeasureUnit icu::MeasureUnit::getPortionPer1E9() | (missing) | Draft ICU 77
measunit.h | `static` MeasureUnit* icu::MeasureUnit::createPortionPer1E9(UErrorCode&) | (missing) | Draft ICU 77
measunit.h | uint64_t icu::MeasureUnit::getConstantDenominator(UErrorCode&) const | (missing) | Draft ICU 77
messageformat2_data_model.h | Builder& icu::message2::MFDataModel::Builder::addSelector(VariableName&&, UErrorCode&) | (missing) | Internal ICU 75
resbund.h | Locale icu::ResourceBundle::getLocale(ULocDataLocaleType, UErrorCode&) const | (missing) | Stable ICU 2.8
timezone.h | `static` UnicodeString icu::TimeZone::getEquivalentID(const UnicodeString&, int32_t) | (missing) | Stable ICU 2.0
uset.h | std::u16string U_HEADER_ONLY_NAMESPACE::USetElementIterator::operator* () const | (missing) | Draft ICU 77
utypes.h | `enum` UErrorCode::U_MF_BAD_OPTION | (missing) | Internal ICU 77

(jump back to top)

## Other existing drafts in ICU 77

File | API | ICU 76 | ICU 77
--- | --- | --- | ---
coll.h | auto icu::Collator::equal_to() const | Draft ICU 76
coll.h | auto icu::Collator::greater() const | Draft ICU 76
coll.h | auto icu::Collator::greater_equal() const | Draft ICU 76
coll.h | auto icu::Collator::less() const | Draft ICU 76
coll.h | auto icu::Collator::less_equal() const | Draft ICU 76
coll.h | auto icu::Collator::not_equal_to() const | Draft ICU 76
measfmt.h | void icu::MeasureFormat::parseObject(const UnicodeString&, Formattable&, ParsePosition&) const | Draft ICU 53
measunit.h | `static` MeasureUnit icu::MeasureUnit::getLightSpeed() | Draft ICU 76
measunit.h | `static` MeasureUnit icu::MeasureUnit::getNight() | Draft ICU 76
measunit.h | `static` MeasureUnit* icu::MeasureUnit::createLightSpeed(UErrorCode&) | Draft ICU 76
measunit.h | `static` MeasureUnit* icu::MeasureUnit::createNight(UErrorCode&) | Draft ICU 76
uchar.h | `enum` UIndicConjunctBreak::U_INCB_CONSONANT | Draft ICU 76
uchar.h | `enum` UIndicConjunctBreak::U_INCB_EXTEND | Draft ICU 76
uchar.h | `enum` UIndicConjunctBreak::U_INCB_LINKER | Draft ICU 76
uchar.h | `enum` UIndicConjunctBreak::U_INCB_NONE | Draft ICU 76
uchar.h | `enum` UProperty::UCHAR_INDIC_CONJUNCT_BREAK | Draft ICU 76
uchar.h | `enum` UProperty::UCHAR_MODIFIER_COMBINING_MARK | Draft ICU 76
uniset.h | U_HEADER_NESTED_NAMESPACE::USetCodePoints icu::UnicodeSet::codePoints() const | Draft ICU 76
uniset.h | U_HEADER_NESTED_NAMESPACE::USetRanges icu::UnicodeSet::ranges() const | Draft ICU 76
uniset.h | U_HEADER_NESTED_NAMESPACE::USetStrings icu::UnicodeSet::strings() const | Draft ICU 76
unistr.h | UNISTR_FROM_STRING_EXPLICIT icu::UnicodeString::UnicodeString(const S&) | Draft ICU 76
unistr.h | UnicodeString& icu::UnicodeString::append(const S&) | Draft ICU 76
unistr.h | UnicodeString& icu::UnicodeString::operator+=(const S&) | Draft ICU 76
unistr.h | UnicodeString& icu::UnicodeString::operator=(const S&) | Draft ICU 76
unistr.h | bool icu::UnicodeString::operator!=(const S&) const | Draft ICU 76
unistr.h | bool icu::UnicodeString::operator==(const S&) const | Draft ICU 76
unistr.h | icu::UnicodeString::operator std::u16string_view() const | Draft ICU 76
unistr.h | icu::UnicodeString::operator std::wstring_view() const | Draft ICU 76
unistr.h | `static` UnicodeString icu::UnicodeString::readOnlyAlias(const S&) | Draft ICU 76
unistr.h | `static` UnicodeString icu::UnicodeString::readOnlyAlias(const UnicodeString&) | Draft ICU 76
uregex.h | `enum` URegexpFlag::UREGEX_CANON_EQ | Draft ICU 2.4
uset.h | CodePointRange U_HEADER_ONLY_NAMESPACE::USetRangeIterator::operator* () const | Draft ICU 76
uset.h | USetCodePointIterator & U_HEADER_ONLY_NAMESPACE::USetCodePointIterator::operator++() | Draft ICU 76
uset.h | USetCodePointIterator U_HEADER_ONLY_NAMESPACE::USetCodePointIterator::operator++(int) | Draft ICU 76
uset.h | USetCodePointIterator U_HEADER_ONLY_NAMESPACE::USetCodePoints::begin() const | Draft ICU 76
uset.h | USetCodePointIterator U_HEADER_ONLY_NAMESPACE::USetCodePoints::end() const | Draft ICU 76
uset.h | USetRangeIterator & U_HEADER_ONLY_NAMESPACE::USetRangeIterator::operator++() | Draft ICU 76
uset.h | USetRangeIterator U_HEADER_ONLY_NAMESPACE::USetRangeIterator::operator++(int) | Draft ICU 76
uset.h | USetRangeIterator U_HEADER_ONLY_NAMESPACE::USetRanges::begin() const | Draft ICU 76
uset.h | USetRangeIterator U_HEADER_ONLY_NAMESPACE::USetRanges::end() const | Draft ICU 76
uset.h | USetStringIterator & U_HEADER_ONLY_NAMESPACE::USetStringIterator::operator++() | Draft ICU 76
uset.h | USetStringIterator U_HEADER_ONLY_NAMESPACE::USetStringIterator::operator++(int) | Draft ICU 76
uset.h | USetStringIterator U_HEADER_ONLY_NAMESPACE::USetStrings::begin() const | Draft ICU 76
uset.h | USetStringIterator U_HEADER_ONLY_NAMESPACE::USetStrings::end() const | Draft ICU 76
uset.h | U_HEADER_ONLY_NAMESPACE::USetCodePointIterator::USetCodePointIterator(const USetCodePointIterator&)=default | Draft ICU 76
uset.h | U_HEADER_ONLY_NAMESPACE::USetCodePoints::USetCodePoints(const USet*) | Draft ICU 76
uset.h | U_HEADER_ONLY_NAMESPACE::USetCodePoints::USetCodePoints(const USetCodePoints&)=default | Draft ICU 76
uset.h | U_HEADER_ONLY_NAMESPACE::USetRangeIterator::USetRangeIterator(const USetRangeIterator&)=default | Draft ICU 76
uset.h | U_HEADER_ONLY_NAMESPACE::USetRanges::USetRanges(const USet*) | Draft ICU 76
uset.h | U_HEADER_ONLY_NAMESPACE::USetRanges::USetRanges(const USetRanges&)=default | Draft ICU 76
uset.h | U_HEADER_ONLY_NAMESPACE::USetStringIterator::USetStringIterator(const USetStringIterator&)=default | Draft ICU 76
uset.h | U_HEADER_ONLY_NAMESPACE::USetStrings::USetStrings(const USet*) | Draft ICU 76
uset.h | U_HEADER_ONLY_NAMESPACE::USetStrings::USetStrings(const USetStrings&)=default | Draft ICU 76
uset.h | bool U_HEADER_ONLY_NAMESPACE::USetCodePointIterator::operator!=(const USetCodePointIterator&) const | Draft ICU 76
uset.h | bool U_HEADER_ONLY_NAMESPACE::USetCodePointIterator::operator==(const USetCodePointIterator&) const | Draft ICU 76
uset.h | bool U_HEADER_ONLY_NAMESPACE::USetRangeIterator::operator!=(const USetRangeIterator&) const | Draft ICU 76
uset.h | bool U_HEADER_ONLY_NAMESPACE::USetRangeIterator::operator==(const USetRangeIterator&) const | Draft ICU 76
uset.h | bool U_HEADER_ONLY_NAMESPACE::USetStringIterator::operator!=(const USetStringIterator&) const | Draft ICU 76
uset.h | bool U_HEADER_ONLY_NAMESPACE::USetStringIterator::operator==(const USetStringIterator&) const | Draft ICU 76
uset.h | UChar32 U_HEADER_ONLY_NAMESPACE::USetCodePointIterator::operator* () const | Draft ICU 76
uset.h | const UChar* uset_getString(const USet*, int32_t, int32_t*) | Draft ICU 76
uset.h | int32_t uset_getStringCount(const USet*) | Draft ICU 76
uset.h | std::u16string_view U_HEADER_ONLY_NAMESPACE::USetStringIterator::operator* () const | Draft ICU 76

(jump back to top)

## Signature Simplifications

This section shows cases where the signature was "simplified" for the sake of comparison. The simplified form is in bold, followed by all possible variations in "original" form.

(jump back to top)

Contents generated by StableAPI tool on Wed Feb 19 16:09:53 PST 2025
Copyright © 2017 and later: Unicode, Inc. and others.
License & terms of use: http://www.unicode.org/copyright.html