# 1.38.1

  * CVE-2026-46644 `idn_to_ascii()`/`idn_to_utf8()`: reject `xn--` labels whose Punycode payload decodes to ASCII-only
  * Fix `grapheme_str_split()` on PCRE 8
  * Fix `mb_str_split()` newline handling in the Php74 polyfill
  * Fix `grapheme_levenshtein()` delegation in the Intl/Grapheme polyfill
  * Make `mb_*` polyfills match the native `string` return type on PHP 8+
  * Fix missing `CURLOPT_ISSUERCERT_BLOB` and `CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256` constants
  * Fix definition of MySQL PDO constants

# 1.38.0

  * Add polyfill for `normalizer_get_raw_decomposition()`
  * Add missing `IntlMessageFormatter::parseMessage()` method
  * Sync currencies metadata with `symfony/intl` data
  * Mark `UUID_TYPE_DCE` and `UUID_TYPE_NAME` as deprecated on PHP 8.5+
  * Validate `MessageFormatter` patterns at configuration time
  * Accept null in `mb_*` polyfills
  * Fall back to plain `iconv()` when `//IGNORE` is unsupported (e.g. on musl)
  * Improve type declarations of some mbstring polyfills
  * Make `mb_convert_encoding($s, $y, 'HTML-ENTITIES')` match native output
  * Update `IntlDateFormatter::__construct()` parameters
  * Fix `grapheme_strrev()` to return false on invalid UTF-8
  * Fix grapheme cluster splitting on PCRE < 10.44
  * Fix `mb_strlen()` for invalid UTF-8 input
  * Fix `mb_rtrim()` missing unicode-awareness
  * Fix `mb_str_pad()` invalid encoding error reporting
  * Fix `str_increment()` for numeric strings beyond `PHP_INT_MAX`
  * Fix `ldap_exop_sync()` polyfill on PHP < 8.3
  * Fix `ReflectionConstant` stub to declare its `$persistent` property
  * Fix detection of `PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT` when PHP is built without it

# 1.37.0

  * Add polyfill for `grapheme_strrev()`
  * Compat with deepclone v0.6.0
  * Fix `locale_is_right_to_left()` registration in polyfill-php85
  * Fix `grapheme_levenshtein()` registration in polyfill-php85

# 1.36.0

  * Polyfill deepclone v0.3.0

# 1.35.0

  * Add polyfill for `deepclone_hydrate()`
  * Add polyfill for `ARRAY_FILTER_USE_VALUE` constant
  * Add polyfill for the `SortDirection` enum
  * Fix cache poisoning in `DeepClone` polyfill

# 1.34.0

  * Add polyfill for the `symfony/deepclone` extension
  * Add polyfill for `clamp()`
  * Add polyfill for `bcround()`, `bcceil()` and `bcfloor()`
  * Add polyfill for `grapheme_levenshtein()`
  * Add polyfill for `#[DelayedTargetValidation]`
  * Add polyfill for `Filter\FilterException` and `Filter\FilterFailedException`
  * Add polyfill for `IntlListFormatter` to ICU polyfill
  * Add polyfill for `locale_is_right_to_left()`
  * Add polyfill for PDO driver specific subclasses
  * Fix PHP 8.5 deprecations
  * Fix ctype deprecations on PHP 8.1+
  * Fix PHP 7.2 compatibility of the `#[Deprecated]` polyfill
  * Fix mbstring polyfill must not raise value errors on PHP 7
  * Fix `bcdiv()` handling of `DivisionByZeroError`

# 1.33.0

  * Add polyfill for `ReflectionConstant`
  * Add polyfill for `bcdivmod()`
  * Add polyfill for `grapheme_str_split()`
  * Add polyfills for `array_first()` and `array_last()`
  * Fix `json_validate()` with properties containing a NUL byte

# 1.32.0

  * Remove the PHP 7.2 polyfill
  * Polyfill `#[\NoDiscard]`
  * Polyfill `fpow`
  * Polyfill `get_error_handler()` and `get_exception_handler()`
  * Fix `mb_rtrim` for UTF-8 text
  * Fix Curl constants being redefined in PHP 8.4 polyfill

# 1.31.0

  * Bump minimum PHP version to 7.2
  * Polyfill `mb_trim`, `mb_ltrim` and `mb_rtrim`
  * Polyfill `CURL_HTTP_VERSION_3(ONLY)` constants

# 1.30.0

  * Polyfill `array_find`, `array_find_key`, `array_any` and `array_all`
  * Polyfill `mb_ucfirst` and `mb_lcfirst`
  * Fix `mb_convert_encoding` to accept an array of strings
  * Update nullable types for PHP 8.4

# 1.29.0

  * Fix the `ini_parse_quantity()` polyfill
  * Add `str_increment` and `str_decrement` functions
  * Add `SQLite3Exception` class

# 1.28.0

  * Polyfill `ldap_exop_sync()`
  * Polyfill `ldap_connect_wallet()`
  * Polyfill `stream_context_set_options()`
  * Polyfill `odbc_connection_string_is_quoted()`
  * Polyfill `odbc_connection_string_should_quote()`
  * Polyfill `odbc_connection_string_quote()`
  * Polyfill `ini_parse_quantity()`
  * Polyfill `mb_str_pad()`
  * Polyfill `#[\Override]` attribute
  * Use full case folding when using `MB_CASE_FOLD`
  * Add `CURLStringFile` class introduced in PHP 8.1 (but only if PHP >= 7.4 is used)
  * Add `Date*Exception/Error` classes introduced in PHP 8.3 for the Date/Time extension

# 1.27.0

  * Add PHP 8.3 polyfill for `json_validate()`
  * Add polyfill for PHP 8.2's `Random` interfaces, exceptions and `Secure` engine
  * Fix `IntlDateFormatter::formatObject()` signature

# 1.26.0

  * Add PHP 8.2 polyfill with SensitiveParameter, SensitiveParameterValue and AllowDynamicProperties
  * Fix QQQQQ date format
  * Fix passing null to `preg_split()`, throwing a deprecation on PHP 8.1

# 1.25.0

  * Add `PhpToken` to the PHP 8.0 polyfill when the tokenizer extension is enabled
  * Fix `str_ends_with()` when needle is longer than haystack

# 1.24.0

  * Indicates that polyfills provides corresponding extensions
  * Add `IntlDateFormatter::RELATIVE_*` constants
  * Mimic deprecation from PHP 8.1 in IntlDateFormatter
  * Optimize `array_is_list`
  * Workaround buggy PCRE versions
  * Fix `iconv_mime_decode()` while using mbstring extension
  * Fix deprecations on PHP 8.1
  * Fix Intl Grapheme `PCRE_VERSION` comparison when version has a timestamp
  * Fix throwing from `mb_substitute_character` on PHP >= 8

# 1.23.1

  * Allow null in str_*() functions
  * Fix `grapheme_str(r)ipos()`

# 1.23.0

  * added `CURLStringFile` to the PHP 8.1 polyfill
  * added `enum_exists()` to the PHP 8.1 polyfill
  * added `MYSQLI_REFRESH_REPLICA` constant to PHP 8.1 polyfill
  * added `ReturnTypeWillChange` to PHP 8.1 polyfill
  * updated Unicode maps to v13
  * removed `INTL_IDNA_VARIANT_2003` on PHP 8
  * fixed return value of `mb_parse_str()`
  * fixed `IntlDateFormatter::format()` on 32b platforms
  * fixed `mb_chr()` in the PHP 7.2 polyfill
  * fixed `mb_strrchr()`, `mb_detect_order()`, `iconv_substr()`, `grapheme_substr()` on PHP 8

# 1.22.1

  * always accept null values on PHP 8, as native functions do

# 1.22.0

  * added PHP 8.1 polyfill
  * fixed signatures on PHP 8
  * fixed behaviors on PHP 8
  * synced values of `Normalizer::*` consts

# 1.21.0

  * made symfony/polyfill-intl-icu independent of symfony/intl
  * made polyfills for PHP <= 7.1 independent of symfony/polyfill
  * optimize grapheme polyfill

# 1.20.0

  * Bump minimum PHP version to 7.1

# 1.19.0

  * Add a polyfill for the `Attribute` class
  * Fix the name of arguments for PHP 8
  * Improve performances of `array_key_last()`
  * Fix polyfill for `mb_strrchr()`
  * Skip loading `Stringable` on PHP 8
  * Fix passing `$length=null` to `grapheme_substr()`
  * Fix `iconv_substr()` and `grapheme_substr()` on PHP 8
  * Fix using any IDNA constants

# 1.18.1

  * Don't force labels containing URL delimiters to stay in their Unicode form when using `idn_to_ascii()`

# 1.18.0

  * improve polyfill-idn to make it compliant with latest Unicode specs
  * added `UnhandledMatchError` to the PHP 8 polyfill

# 1.17.1

  * fix accuracy of `Normalizer::isNormalized()`

# 1.17.0

  * added `get_resource_id()` to the PHP 8 polyfill
  * fix declaring extra constants when `intl` is loaded

# 1.16.0

  * added `str_starts_with()` and `str_ends_with()` to the PHP 8 polyfill
  * added polyfill for `PHP_FLOAT_*` constants
  * fixed `spl_object_id()` on 32-bit systems
  * fixed `idn_to_ascii()` not failing on leading or trailing hyphen-minus

# 1.15.0

  * added interface `Stringable` to the PHP 8 polyfill
  * added `get_debug_type()` to the PHP 8 polyfill
  * added `str_contains()` to the PHP 8 polyfill
  * added `preg_last_error_msg()` to the PHP 8 polyfill
  * added support for UUID V3 and V5
  * added support for UUID on 32-bit systems
  * fixed support for preloading

# 1.14.0

  * added PHP 8.0 polyfill

# 1.13.2

  * use correct block size for SHA1 in `hash_pbkdf2()` polyfill
  * fixed `mb_str_split()` ignoring new-line characters
  * updated Unicode maps

# 1.13.1

  * fixed issues with the uuid polyfill

# 1.13.0

  * added polyfills for `uuid_*` functions
  * optimized `mb_str_split()`
  * fixed handling negative offsets for grapheme and mbstring functions

# 1.12.0

  * added PHP 7.4 polyfill

# 1.11.0

  * fixed support for IDN with trailing dot
  * added missing polyfill for `JsonException`

# 1.10.0

  * added polyfill for `idn_to_ascii()` and `idn_to_utf8()`
  * added polyfill for intl's `MessageFormatter`
  * prevented DoS via long passwords when using `hash_pbkdf2()` polyfill
  * duplicated `mb_ord()`, `mb_chr()` and `mb_scrub()` polyfills in the `php72` one

# 1.9.0

  * added polyfill for `hrtime()`
  * added polyfills for `array_key_first()` and `array_key_last()`
  * fixed infinite loop in `iconv()` polyfill when using translit mode
  * fixed converting to title case with mbstring polyfill

# 1.8.0

  * added PHP 7.3 polyfill
  * added polyfills for `ctype_*` functions

# 1.7.0

  * added logic to new stream functions on Windows (sapi_windows_vt100_support)
  * added polyfills for mb_*_numericentity
  * made translit/ignore flags order-insensitive

# 1.6.0

  * add `SessionUpdateTimestampHandlerInterface` in PHP 7.0 polyfill
  * fixed loading of Apcu polyfill when Zend Server's Data Cache is used

# 1.5.0

  * added polyfill for spl_object_id()
  * fixed apcu function when apc ones are polyfilled with Zend Server's Data Cache
  * added `PHP_OS_FAMILY` polyfill

# 1.4.0

  * added PHP 7.2 polyfill

# 1.3.1

  * added missing validation to mb_convert_case()
  * added missing PHP_INT_MIN constant
  * fixed iconv_substr(): Detected an illegal character in input string
  * provided APCUIterator for APCu 4.x users

# 1.3.0

  * added polyfill for `is_iterable()`
  * added polyfills for `mb_chr()`, `mb_ord()` and `mb_scrub()`
  * added support for PHP 7.1
  * silenced `iconv_strlen()` in `mb_strlen()` polyfill
  * bypassed iconv for some charsets in mb_strlen
  * fixed `mb_convert_variables()` poylfill

# 1.2.0

  * bug #61 Normalizer::decompose() should reorder "recursive" combining chars (nicolas-grekas)
  * bug #59 Normalizer::recompose() should reset the last combining class on ASCII (nicolas-grekas)
  * bug #59 Normalizer::isNormalized() should fail with Normalizer::NONE (nicolas-grekas)
  * bug #59 Normalizer::isNormalized() and ::normalize() should check for multibyte string function overload (nicolas-grekas)
  * feature #44/#53 allow paragonie/random_compat 2.0 (ickbinhier)
  * feature #51 Use plain PHP for data maps to benefit from OPcache on PHP 5.6+ (nicolas-grekas)
  * bug #49 Fix hex2bin return null (fuhry, binwiederhier)

# 1.1.1

  * bug #40 [Apcu] Load APCUIterator only when APCIterator exists (nicolas-grekas)
  * bug #37 [Iconv] Fix wrong use in bootstrap.php (tucksaun)
  * bug #31 Fix class_uses polyfill (WouterJ)

# 1.1.0

  * feature #22 [APCu] A new polyfill for the legacy APC users (nicolas-grekas)
  * bug #28 [Php70] Workaround https://bugs.php.net/63206 (nicolas-grekas)

# 1.0.1

  * bug #14 ldap_escape does not encode leading/trailing spaces. (ChadSikorra)
  * bug #17 Fix #16 - gzopen() / gzopen64() - 32 bit builds of Ubuntu 14.04 (fisharebest)

# 1.0.0

  * Hello symfony/polyfill
