# ICU4C API Comparison: ICU 70 with ICU 71

## Removed from ICU 70

File | API | ICU 70 | ICU 71
--- | --- | --- | ---

(jump back to top)

## Deprecated or Obsoleted in ICU 71

File | API | ICU 70 | ICU 71
--- | --- | --- | ---
numberformatter.h | const char* icu::number::FormattedNumber::getGender(UErrorCode&) const | Internal ICU 69 | Deprecated
ucnv.h | UConverter* ucnv_safeClone(const UConverter*, void*, int32_t*, UErrorCode*) | Stable ICU 2.0 | Deprecated ICU 71
ucol.h | UCollator* ucol_safeClone(const UCollator*, void*, int32_t*, UErrorCode*) | Stable ICU 2.0 | Deprecated ICU 71

(jump back to top)

## Changed in ICU 71 (old, new)

File | API | ICU 70 | ICU 71
--- | --- | --- | ---
basictz.h | void icu::BasicTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const | Draft→Stable ICU 69
measunit.h | MeasureUnit icu::MeasureUnit::withPrefix(UMeasurePrefix, UErrorCode&) const | Draft→Stable ICU 69
measunit.h | UMeasurePrefix icu::MeasureUnit::getPrefix(UErrorCode&) const | Draft→Stable ICU 69
measunit.h | `static` MeasureUnit icu::MeasureUnit::getMilligramOfglucosePerDeciliter() | Draft→Stable ICU 69
measunit.h | `static` MeasureUnit* icu::MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode&) | Draft→Stable ICU 69
numberformatter.h | Precision icu::number::FractionPrecision::withSignificantDigits(int32_t, int32_t, UNumberRoundingPriority) const | Draft→Stable ICU 69
numberformatter.h | Precision icu::number::Precision::trailingZeroDisplay(UNumberTrailingZeroDisplay) const | Draft→Stable ICU 69
numberformatter.h | const char* icu::number::FormattedNumber::getGender(UErrorCode&) const | Internal ICU 69 | Deprecated
rbtz.h | void icu::RuleBasedTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const | Draft→Stable ICU 69
simpletz.h | void icu::SimpleTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const | Draft→Stable ICU 69
ubrk.h | UBreakIterator* ubrk_clone(const UBreakIterator*, UErrorCode*) | Draft→Stable ICU 69
ucal.h | `enum` UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_FORMER | Draft→Stable ICU 69
ucal.h | `enum` UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_LATTER | Draft→Stable ICU 69
ucal.h | `enum` UTimeZoneLocalOption::UCAL_TZ_LOCAL_FORMER | Draft→Stable ICU 69
ucal.h | `enum` UTimeZoneLocalOption::UCAL_TZ_LOCAL_LATTER | Draft→Stable ICU 69
ucal.h | `enum` UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_FORMER | Draft→Stable ICU 69
ucal.h | `enum` UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_LATTER | Draft→Stable ICU 69
ucal.h | void ucal_getTimeZoneOffsetFromLocal(const UCalendar*, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t*, int32_t*, UErrorCode*) | Draft→Stable ICU 69
ucnv.h | UConverter* ucnv_safeClone(const UConverter*, void*, int32_t*, UErrorCode*) | Stable ICU 2.0 | Deprecated ICU 71
ucol.h | UCollator* ucol_safeClone(const UCollator*, void*, int32_t*, UErrorCode*) | Stable ICU 2.0 | Deprecated ICU 71
uniset.h | UnicodeSet& icu::UnicodeSet::retain(const UnicodeString&) | Draft→Stable ICU 69
unum.h | `enum` UNumberFormatRoundingMode::UNUM_ROUND_HALF_CEILING | Draft→Stable ICU 69
unum.h | `enum` UNumberFormatRoundingMode::UNUM_ROUND_HALF_FLOOR | Draft→Stable ICU 69
unum.h | `enum` UNumberFormatRoundingMode::UNUM_ROUND_HALF_ODD | Draft→Stable ICU 69
unumberformatter.h | `enum` UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_RELAXED | Draft→Stable ICU 69
unumberformatter.h | `enum` UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_STRICT | Draft→Stable ICU 69
unumberformatter.h | `enum` UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_NEGATIVE | Draft→Stable ICU 69
unumberformatter.h | `enum` UNumberSignDisplay::UNUM_SIGN_NEGATIVE | Draft→Stable ICU 69
unumberformatter.h | `enum` UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_AUTO | Draft→Stable ICU 69
unumberformatter.h | `enum` UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_HIDE_IF_WHOLE | Draft→Stable ICU 69
uset.h | void uset_complementAllCodePoints(USet*, const UChar*, int32_t) | Draft→Stable ICU 69
uset.h | void uset_complementRange(USet*, UChar32, UChar32) | Draft→Stable ICU 69
uset.h | void uset_complementString(USet*, const UChar*, int32_t) | Draft→Stable ICU 69
uset.h | void uset_removeAllCodePoints(USet*, const UChar*, int32_t) | Draft→Stable ICU 69
uset.h | void uset_retainAllCodePoints(USet*, const UChar*, int32_t) | Draft→Stable ICU 69
uset.h | void uset_retainString(USet*, const UChar*, int32_t) | Draft→Stable ICU 69
vtzone.h | void icu::VTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const | Draft→Stable ICU 69

(jump back to top)

## Promoted to stable in ICU 71

File | API | ICU 70 | ICU 71
--- | --- | --- | ---
basictz.h | void icu::BasicTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const | Draft→Stable ICU 69
measunit.h | MeasureUnit icu::MeasureUnit::withPrefix(UMeasurePrefix, UErrorCode&) const | Draft→Stable ICU 69
measunit.h | UMeasurePrefix icu::MeasureUnit::getPrefix(UErrorCode&) const | Draft→Stable ICU 69
measunit.h | `static` MeasureUnit icu::MeasureUnit::getMilligramOfglucosePerDeciliter() | Draft→Stable ICU 69
measunit.h | `static` MeasureUnit* icu::MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode&) | Draft→Stable ICU 69
numberformatter.h | Precision icu::number::FractionPrecision::withSignificantDigits(int32_t, int32_t, UNumberRoundingPriority) const | Draft→Stable ICU 69
numberformatter.h | Precision icu::number::Precision::trailingZeroDisplay(UNumberTrailingZeroDisplay) const | Draft→Stable ICU 69
rbtz.h | void icu::RuleBasedTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const | Draft→Stable ICU 69
simpletz.h | void icu::SimpleTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const | Draft→Stable ICU 69
ubrk.h | UBreakIterator* ubrk_clone(const UBreakIterator*, UErrorCode*) | Draft→Stable ICU 69
ucal.h | `enum` UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_FORMER | Draft→Stable ICU 69
ucal.h | `enum` UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_LATTER | Draft→Stable ICU 69
ucal.h | `enum` UTimeZoneLocalOption::UCAL_TZ_LOCAL_FORMER | Draft→Stable ICU 69
ucal.h | `enum` UTimeZoneLocalOption::UCAL_TZ_LOCAL_LATTER | Draft→Stable ICU 69
ucal.h | `enum` UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_FORMER | Draft→Stable ICU 69
ucal.h | `enum` UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_LATTER | Draft→Stable ICU 69
ucal.h | void ucal_getTimeZoneOffsetFromLocal(const UCalendar*, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t*, int32_t*, UErrorCode*) | Draft→Stable ICU 69
ucnv.h | UConverter* ucnv_clone(const UConverter*, UErrorCode*) | (missing) | Stable ICU 71 | (Born Stable)
ucol.h | UCollator* ucol_clone(const UCollator*, UErrorCode*) | (missing) | Stable ICU 71 | (Born Stable)
uniset.h | UnicodeSet& icu::UnicodeSet::retain(const UnicodeString&) | Draft→Stable ICU 69
unum.h | `enum` UNumberFormatRoundingMode::UNUM_ROUND_HALF_CEILING | Draft→Stable ICU 69
unum.h | `enum` UNumberFormatRoundingMode::UNUM_ROUND_HALF_FLOOR | Draft→Stable ICU 69
unum.h | `enum` UNumberFormatRoundingMode::UNUM_ROUND_HALF_ODD | Draft→Stable ICU 69
unumberformatter.h | `enum` UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_RELAXED | Draft→Stable ICU 69
unumberformatter.h | `enum` UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_STRICT | Draft→Stable ICU 69
unumberformatter.h | `enum` UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_NEGATIVE | Draft→Stable ICU 69
unumberformatter.h | `enum` UNumberSignDisplay::UNUM_SIGN_NEGATIVE | Draft→Stable ICU 69
unumberformatter.h | `enum` UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_AUTO | Draft→Stable ICU 69
unumberformatter.h | `enum` UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_HIDE_IF_WHOLE | Draft→Stable ICU 69
uset.h | void uset_complementAllCodePoints(USet*, const UChar*, int32_t) | Draft→Stable ICU 69
uset.h | void uset_complementRange(USet*, UChar32, UChar32) | Draft→Stable ICU 69
uset.h | void uset_complementString(USet*, const UChar*, int32_t) | Draft→Stable ICU 69
uset.h | void uset_removeAllCodePoints(USet*, const UChar*, int32_t) | Draft→Stable ICU 69
uset.h | void uset_retainAllCodePoints(USet*, const UChar*, int32_t) | Draft→Stable ICU 69
uset.h | void uset_retainString(USet*, const UChar*, int32_t) | Draft→Stable ICU 69
vtzone.h | void icu::VTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const | Draft→Stable ICU 69

(jump back to top)

## Added in ICU 71

File | API | ICU 70 | ICU 71
--- | --- | --- | ---
dtptngen.h | const UnicodeString& icu::DateTimePatternGenerator::getDateTimeFormat(UDateFormatStyle, UErrorCode&) const | (missing) | Draft ICU 71
dtptngen.h | void icu::DateTimePatternGenerator::setDateTimeFormat(UDateFormatStyle, const UnicodeString&, UErrorCode&) | (missing) | Draft ICU 71
numberformatter.h | NounClass icu::number::FormattedNumber::getNounClass(UErrorCode&) const | (missing) | Draft ICU 71
numberformatter.h | `static` IncrementPrecision icu::number::Precision::incrementExact(uint64_t, int16_t) | (missing) | Draft ICU 71
ucnv.h | UConverter* ucnv_clone(const UConverter*, UErrorCode*) | (missing) | Stable ICU 71 | (Born Stable)
ucol.h | UCollator* ucol_clone(const UCollator*, UErrorCode*) | (missing) | Stable ICU 71 | (Born Stable)
udatpg.h | const UChar* udatpg_getDateTimeFormatForStyle(const UDateTimePatternGenerator*, UDateFormatStyle, int32_t*, UErrorCode*) | (missing) | Draft ICU 71
udatpg.h | void udatpg_setDateTimeFormatForStyle(UDateTimePatternGenerator*, UDateFormatStyle, const UChar*, int32_t, UErrorCode*) | (missing) | Draft ICU 71
unum.h | `enum` UNumberFormatFields::UNUM_APPROXIMATELY_SIGN_FIELD | (missing) | Draft ICU 71

(jump back to top)

## Other existing drafts in ICU 71

File | API | ICU 70 | ICU 71
--- | --- | --- | ---
measfmt.h | void icu::MeasureFormat::parseObject(const UnicodeString&, Formattable&, ParsePosition&) const | Draft ICU 53
measunit.h | `static` MeasureUnit icu::MeasureUnit::getItem() | Draft ICU 70
measunit.h | `static` MeasureUnit icu::MeasureUnit::getKilowattHourPer100Kilometer() | Draft ICU 70
measunit.h | `static` MeasureUnit* icu::MeasureUnit::createItem(UErrorCode&) | Draft ICU 70
measunit.h | `static` MeasureUnit* icu::MeasureUnit::createKilowattHourPer100Kilometer(UErrorCode&) | Draft ICU 70
numberrangeformatter.h | icu::number::FormattedNumberRange::FormattedNumberRange() | Draft ICU 70
uchar.h | bool u_stringHasBinaryProperty(const UChar*, int32_t, UProperty) | Draft ICU 70
uchar.h | `enum` UProperty::UCHAR_BASIC_EMOJI | Draft ICU 70
uchar.h | `enum` UProperty::UCHAR_EMOJI_KEYCAP_SEQUENCE | Draft ICU 70
uchar.h | `enum` UProperty::UCHAR_RGI_EMOJI_FLAG_SEQUENCE | Draft ICU 70
uchar.h | `enum` UProperty::UCHAR_RGI_EMOJI_MODIFIER_SEQUENCE | Draft ICU 70
uchar.h | `enum` UProperty::UCHAR_RGI_EMOJI_TAG_SEQUENCE | Draft ICU 70
uchar.h | `enum` UProperty::UCHAR_RGI_EMOJI_ZWJ_SEQUENCE | Draft ICU 70
uchar.h | `enum` UProperty::UCHAR_RGI_EMOJI | Draft ICU 70
udat.h | `enum` UDateFormatSymbolType::UDAT_NARROW_QUARTERS | Draft ICU 70
udat.h | `enum` UDateFormatSymbolType::UDAT_STANDALONE_NARROW_QUARTERS | Draft ICU 70
uformattedvalue.h | `enum` UFieldCategory::UFIELD_CATEGORY_NUMBER_RANGE_SPAN | Draft ICU 69
uniset.h | bool icu::UnicodeSet::hasStrings() const | Draft ICU 70
uregex.h | `enum` URegexpFlag::UREGEX_CANON_EQ | Draft ICU 2.4
uset.h | bool uset_hasStrings(const USet*) | Draft ICU 70
uset.h | int32_t uset_getRangeCount(const USet*) | Draft ICU 70
usetiter.h | UnicodeSetIterator& icu::UnicodeSetIterator::skipToStrings() | Draft ICU 70

(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 Thu Mar 10 11:12:56 PST 2022
Copyright © 2017 and later: Unicode, Inc. and others.
License & terms of use: http://www.unicode.org/copyright.html