# ICU4C API Comparison: ICU 76 with ICU 77 > _Note_ Markdown format of this document is new for ICU 65. - [Removed from ICU 76](#removed) - [Deprecated or Obsoleted in ICU 77](#deprecated) - [Changed in ICU 77](#changed) - [Promoted to stable in ICU 77](#promoted) - [Added in ICU 77](#added) - [Other existing drafts in ICU 77](#other) - [Signature Simplifications](#simplifications) ## Removed Removed from ICU 76 | File | API | ICU 76 | ICU 77 | |---|---|---|---| | messageformat2_data_model.h | Builder& icu::message2::MFDataModel::Builder::addSelector(Expression&&, UErrorCode&) | InternalICU 75 | (missing) | resbund.h | const Locale icu::ResourceBundle::getLocale(ULocDataLocaleType, UErrorCode&) const | StableICU 2.8 | (missing) | timezone.h | static const UnicodeString icu::TimeZone::getEquivalentID(const UnicodeString&, int32_t) | StableICU 2.0 | (missing) | uset.h | UnicodeString U_HEADER_ONLY_NAMESPACE::USetElementIterator::operator* () const | DraftICU 76 | (missing) ## Deprecated Deprecated or Obsoleted in ICU 77 | File | API | ICU 76 | ICU 77 | |---|---|---|---| ## Changed Changed in ICU 77 (old, new) | File | API | ICU 76 | ICU 77 | |---|---|---|---| | numberformatter.h | UnlocalizedNumberFormatter icu::number::LocalizedNumberFormatter::withoutLocale() && | Draft→StableICU 75 | numberformatter.h | UnlocalizedNumberFormatter icu::number::LocalizedNumberFormatter::withoutLocale() const & | Draft→StableICU 75 | numberrangeformatter.h | UnlocalizedNumberRangeFormatter icu::number::LocalizedNumberRangeFormatter::withoutLocale() && | Draft→StableICU 75 | numberrangeformatter.h | UnlocalizedNumberRangeFormatter icu::number::LocalizedNumberRangeFormatter::withoutLocale() const & | Draft→StableICU 75 | simplenumberformatter.h | void icu::number::SimpleNumber::setMaximumIntegerDigits(uint32_t, UErrorCode&) | Draft→StableICU 75 | uchar.h | bool u_hasIDType(UChar32, UIdentifierType) | Draft→StableICU 75 | uchar.h | enum UIdentifierStatus::U_ID_STATUS_ALLOWED | Draft→StableICU 75 | uchar.h | enum UIdentifierStatus::U_ID_STATUS_RESTRICTED | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_DEFAULT_IGNORABLE | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_DEPRECATED | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_EXCLUSION | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_INCLUSION | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_LIMITED_USE | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_NOT_CHARACTER | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_NOT_NFKC | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_NOT_XID | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_OBSOLETE | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_RECOMMENDED | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_TECHNICAL | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_UNCOMMON_USE | Draft→StableICU 75 | uchar.h | enum UProperty::UCHAR_IDENTIFIER_STATUS | Draft→StableICU 75 | uchar.h | enum UProperty::UCHAR_IDENTIFIER_TYPE | Draft→StableICU 75 | uchar.h | int32_t u_getIDTypes(UChar32, UIdentifierType*, int32_t, UErrorCode*) | Draft→StableICU 75 | uniset.h | U_HEADER_NESTED_NAMESPACE::USetElementIterator icu::UnicodeSet::begin() const | DraftICU 76 | DraftICU 77 | uniset.h | U_HEADER_NESTED_NAMESPACE::USetElementIterator icu::UnicodeSet::end() const | DraftICU 76 | DraftICU 77 | uset.h | USetElementIterator & U_HEADER_ONLY_NAMESPACE::USetElementIterator::operator++() | DraftICU 76 | DraftICU 77 | uset.h | USetElementIterator U_HEADER_ONLY_NAMESPACE::USetElementIterator::operator++(int) | DraftICU 76 | DraftICU 77 | uset.h | USetElementIterator U_HEADER_ONLY_NAMESPACE::USetElements::begin() const | DraftICU 76 | DraftICU 77 | uset.h | USetElementIterator U_HEADER_ONLY_NAMESPACE::USetElements::end() const | DraftICU 76 | DraftICU 77 | uset.h | U_HEADER_ONLY_NAMESPACE::USetElementIterator::USetElementIterator(const USetElementIterator&)=default | DraftICU 76 | DraftICU 77 | uset.h | U_HEADER_ONLY_NAMESPACE::USetElements::USetElements(const USet*) | DraftICU 76 | DraftICU 77 | uset.h | U_HEADER_ONLY_NAMESPACE::USetElements::USetElements(const USetElements&)=default | DraftICU 76 | DraftICU 77 | uset.h | bool U_HEADER_ONLY_NAMESPACE::USetElementIterator::operator!=(const USetElementIterator&) const | DraftICU 76 | DraftICU 77 | uset.h | bool U_HEADER_ONLY_NAMESPACE::USetElementIterator::operator==(const USetElementIterator&) const | DraftICU 76 | DraftICU 77 | usimplenumberformatter.h | void usnum_setMaximumIntegerDigits(USimpleNumber*, int32_t, UErrorCode*) | Draft→StableICU 75 ## Promoted Promoted to stable in ICU 77 | File | API | ICU 76 | ICU 77 | |---|---|---|---| | numberformatter.h | UnlocalizedNumberFormatter icu::number::LocalizedNumberFormatter::withoutLocale() && | Draft→StableICU 75 | numberformatter.h | UnlocalizedNumberFormatter icu::number::LocalizedNumberFormatter::withoutLocale() const & | Draft→StableICU 75 | numberrangeformatter.h | UnlocalizedNumberRangeFormatter icu::number::LocalizedNumberRangeFormatter::withoutLocale() && | Draft→StableICU 75 | numberrangeformatter.h | UnlocalizedNumberRangeFormatter icu::number::LocalizedNumberRangeFormatter::withoutLocale() const & | Draft→StableICU 75 | resbund.h | Locale icu::ResourceBundle::getLocale(ULocDataLocaleType, UErrorCode&) const | (missing) | StableICU 2.8 | simplenumberformatter.h | void icu::number::SimpleNumber::setMaximumIntegerDigits(uint32_t, UErrorCode&) | Draft→StableICU 75 | timezone.h | static UnicodeString icu::TimeZone::getEquivalentID(const UnicodeString&, int32_t) | (missing) | StableICU 2.0 | uchar.h | bool u_hasIDType(UChar32, UIdentifierType) | Draft→StableICU 75 | uchar.h | enum UIdentifierStatus::U_ID_STATUS_ALLOWED | Draft→StableICU 75 | uchar.h | enum UIdentifierStatus::U_ID_STATUS_RESTRICTED | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_DEFAULT_IGNORABLE | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_DEPRECATED | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_EXCLUSION | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_INCLUSION | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_LIMITED_USE | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_NOT_CHARACTER | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_NOT_NFKC | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_NOT_XID | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_OBSOLETE | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_RECOMMENDED | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_TECHNICAL | Draft→StableICU 75 | uchar.h | enum UIdentifierType::U_ID_TYPE_UNCOMMON_USE | Draft→StableICU 75 | uchar.h | enum UProperty::UCHAR_IDENTIFIER_STATUS | Draft→StableICU 75 | uchar.h | enum UProperty::UCHAR_IDENTIFIER_TYPE | Draft→StableICU 75 | uchar.h | int32_t u_getIDTypes(UChar32, UIdentifierType*, int32_t, UErrorCode*) | Draft→StableICU 75 | usimplenumberformatter.h | void usnum_setMaximumIntegerDigits(USimpleNumber*, int32_t, UErrorCode*) | Draft→StableICU 75 ## Added 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) | DraftICU 77 | measunit.h | static MeasureUnit icu::MeasureUnit::getPortionPer1E9() | (missing) | DraftICU 77 | measunit.h | static MeasureUnit* icu::MeasureUnit::createPortionPer1E9(UErrorCode&) | (missing) | DraftICU 77 | measunit.h | uint64_t icu::MeasureUnit::getConstantDenominator(UErrorCode&) const | (missing) | DraftICU 77 | messageformat2_data_model.h | Builder& icu::message2::MFDataModel::Builder::addSelector(VariableName&&, UErrorCode&) | (missing) | InternalICU 75 | resbund.h | Locale icu::ResourceBundle::getLocale(ULocDataLocaleType, UErrorCode&) const | (missing) | StableICU 2.8 | timezone.h | static UnicodeString icu::TimeZone::getEquivalentID(const UnicodeString&, int32_t) | (missing) | StableICU 2.0 | uset.h | std::u16string U_HEADER_ONLY_NAMESPACE::USetElementIterator::operator* () const | (missing) | DraftICU 77 | utypes.h | enum UErrorCode::U_MF_BAD_OPTION | (missing) | InternalICU 77 ## Other Other existing drafts in ICU 77 | File | API | ICU 76 | ICU 77 | |---|---|---|---| | coll.h | auto icu::Collator::equal_to() const | DraftICU 76 | | coll.h | auto icu::Collator::greater() const | DraftICU 76 | | coll.h | auto icu::Collator::greater_equal() const | DraftICU 76 | | coll.h | auto icu::Collator::less() const | DraftICU 76 | | coll.h | auto icu::Collator::less_equal() const | DraftICU 76 | | coll.h | auto icu::Collator::not_equal_to() const | DraftICU 76 | | measfmt.h | void icu::MeasureFormat::parseObject(const UnicodeString&, Formattable&, ParsePosition&) const | DraftICU 53 | | measunit.h | static MeasureUnit icu::MeasureUnit::getLightSpeed() | DraftICU 76 | | measunit.h | static MeasureUnit icu::MeasureUnit::getNight() | DraftICU 76 | | measunit.h | static MeasureUnit* icu::MeasureUnit::createLightSpeed(UErrorCode&) | DraftICU 76 | | measunit.h | static MeasureUnit* icu::MeasureUnit::createNight(UErrorCode&) | DraftICU 76 | | uchar.h | enum UIndicConjunctBreak::U_INCB_CONSONANT | DraftICU 76 | | uchar.h | enum UIndicConjunctBreak::U_INCB_EXTEND | DraftICU 76 | | uchar.h | enum UIndicConjunctBreak::U_INCB_LINKER | DraftICU 76 | | uchar.h | enum UIndicConjunctBreak::U_INCB_NONE | DraftICU 76 | | uchar.h | enum UProperty::UCHAR_INDIC_CONJUNCT_BREAK | DraftICU 76 | | uchar.h | enum UProperty::UCHAR_MODIFIER_COMBINING_MARK | DraftICU 76 | | uniset.h | U_HEADER_NESTED_NAMESPACE::USetCodePoints icu::UnicodeSet::codePoints() const | DraftICU 76 | | uniset.h | U_HEADER_NESTED_NAMESPACE::USetRanges icu::UnicodeSet::ranges() const | DraftICU 76 | | uniset.h | U_HEADER_NESTED_NAMESPACE::USetStrings icu::UnicodeSet::strings() const | DraftICU 76 | | unistr.h | UNISTR_FROM_STRING_EXPLICIT icu::UnicodeString::UnicodeString(const S&) | DraftICU 76 | | unistr.h | UnicodeString& icu::UnicodeString::append(const S&) | DraftICU 76 | | unistr.h | UnicodeString& icu::UnicodeString::operator+=(const S&) | DraftICU 76 | | unistr.h | UnicodeString& icu::UnicodeString::operator=(const S&) | DraftICU 76 | | unistr.h | bool icu::UnicodeString::operator!=(const S&) const | DraftICU 76 | | unistr.h | bool icu::UnicodeString::operator==(const S&) const | DraftICU 76 | | unistr.h | icu::UnicodeString::operator std::u16string_view() const | DraftICU 76 | | unistr.h | icu::UnicodeString::operator std::wstring_view() const | DraftICU 76 | | unistr.h | static UnicodeString icu::UnicodeString::readOnlyAlias(const S&) | DraftICU 76 | | unistr.h | static UnicodeString icu::UnicodeString::readOnlyAlias(const UnicodeString&) | DraftICU 76 | | uregex.h | enum URegexpFlag::UREGEX_CANON_EQ | DraftICU 2.4 | | uset.h | CodePointRange U_HEADER_ONLY_NAMESPACE::USetRangeIterator::operator* () const | DraftICU 76 | | uset.h | USetCodePointIterator & U_HEADER_ONLY_NAMESPACE::USetCodePointIterator::operator++() | DraftICU 76 | | uset.h | USetCodePointIterator U_HEADER_ONLY_NAMESPACE::USetCodePointIterator::operator++(int) | DraftICU 76 | | uset.h | USetCodePointIterator U_HEADER_ONLY_NAMESPACE::USetCodePoints::begin() const | DraftICU 76 | | uset.h | USetCodePointIterator U_HEADER_ONLY_NAMESPACE::USetCodePoints::end() const | DraftICU 76 | | uset.h | USetRangeIterator & U_HEADER_ONLY_NAMESPACE::USetRangeIterator::operator++() | DraftICU 76 | | uset.h | USetRangeIterator U_HEADER_ONLY_NAMESPACE::USetRangeIterator::operator++(int) | DraftICU 76 | | uset.h | USetRangeIterator U_HEADER_ONLY_NAMESPACE::USetRanges::begin() const | DraftICU 76 | | uset.h | USetRangeIterator U_HEADER_ONLY_NAMESPACE::USetRanges::end() const | DraftICU 76 | | uset.h | USetStringIterator & U_HEADER_ONLY_NAMESPACE::USetStringIterator::operator++() | DraftICU 76 | | uset.h | USetStringIterator U_HEADER_ONLY_NAMESPACE::USetStringIterator::operator++(int) | DraftICU 76 | | uset.h | USetStringIterator U_HEADER_ONLY_NAMESPACE::USetStrings::begin() const | DraftICU 76 | | uset.h | USetStringIterator U_HEADER_ONLY_NAMESPACE::USetStrings::end() const | DraftICU 76 | | uset.h | U_HEADER_ONLY_NAMESPACE::USetCodePointIterator::USetCodePointIterator(const USetCodePointIterator&)=default | DraftICU 76 | | uset.h | U_HEADER_ONLY_NAMESPACE::USetCodePoints::USetCodePoints(const USet*) | DraftICU 76 | | uset.h | U_HEADER_ONLY_NAMESPACE::USetCodePoints::USetCodePoints(const USetCodePoints&)=default | DraftICU 76 | | uset.h | U_HEADER_ONLY_NAMESPACE::USetRangeIterator::USetRangeIterator(const USetRangeIterator&)=default | DraftICU 76 | | uset.h | U_HEADER_ONLY_NAMESPACE::USetRanges::USetRanges(const USet*) | DraftICU 76 | | uset.h | U_HEADER_ONLY_NAMESPACE::USetRanges::USetRanges(const USetRanges&)=default | DraftICU 76 | | uset.h | U_HEADER_ONLY_NAMESPACE::USetStringIterator::USetStringIterator(const USetStringIterator&)=default | DraftICU 76 | | uset.h | U_HEADER_ONLY_NAMESPACE::USetStrings::USetStrings(const USet*) | DraftICU 76 | | uset.h | U_HEADER_ONLY_NAMESPACE::USetStrings::USetStrings(const USetStrings&)=default | DraftICU 76 | | uset.h | bool U_HEADER_ONLY_NAMESPACE::USetCodePointIterator::operator!=(const USetCodePointIterator&) const | DraftICU 76 | | uset.h | bool U_HEADER_ONLY_NAMESPACE::USetCodePointIterator::operator==(const USetCodePointIterator&) const | DraftICU 76 | | uset.h | bool U_HEADER_ONLY_NAMESPACE::USetRangeIterator::operator!=(const USetRangeIterator&) const | DraftICU 76 | | uset.h | bool U_HEADER_ONLY_NAMESPACE::USetRangeIterator::operator==(const USetRangeIterator&) const | DraftICU 76 | | uset.h | bool U_HEADER_ONLY_NAMESPACE::USetStringIterator::operator!=(const USetStringIterator&) const | DraftICU 76 | | uset.h | bool U_HEADER_ONLY_NAMESPACE::USetStringIterator::operator==(const USetStringIterator&) const | DraftICU 76 | | uset.h | UChar32 U_HEADER_ONLY_NAMESPACE::USetCodePointIterator::operator* () const | DraftICU 76 | | uset.h | const UChar* uset_getString(const USet*, int32_t, int32_t*) | DraftICU 76 | | uset.h | int32_t uset_getStringCount(const USet*) | DraftICU 76 | | uset.h | std::u16string_view U_HEADER_ONLY_NAMESPACE::USetStringIterator::operator* () const | DraftICU 76 | ## 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. ## Colophon Contents generated by StableAPI tool on Wed Feb 19 16:10:28 PST 2025 Copyright © 2019 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html