PackageTrack
Sign in Get early access

symfony/polyfill

Symfony polyfills backporting features to lower PHP versions

v1.41.0 4.8M downloads/mo #2947 most downloaded on Packagist symfony/polyfill

What this package is like to depend on

Last release 26 days ago

28 Jul 2026

Release timing varies

gaps range from 2 weeks to 10 months

Nearly every release is documented

notes for 52 of 52 stable releases

Nothing withdrawn

no release was ever pulled

11 years old

52 releases · first in 2015

10 releases in the last 12 months

see the full history below

Release timeline

52 releases · Nov 2015 to Jul 2026
2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 52
  1. v1.41.0 28 Jul 2026
    Release notes

    Changelog (v1.40.0...v1.41.0)

    Open source →
    Release notes
    • Add polyfill for the Io\Poll API and StreamPollHandle
      • Throw ValueError on PHP 7 for json_validate(), str_increment(), str_decrement(), grapheme_str_split() and grapheme_levenshtein()
      • Reject out-of-range offsets in the grapheme_str[ri]?pos() family
      • Align the Php74 mb_str_split() polyfill with Mbstring and native
    Open source →
  2. v1.40.0 12 Jun 2026
    Release notes

    Changelog (v1.39.0...v1.40.0)

    • bug #635 [DeepClone] Suggest the extension when refusing a named callable, and decode its global-function references (@nicolas-grekas)
    • feature #634 [DeepClone] Gate closures over named callables behind an allow_named_closures option (@nicolas-grekas)
    Open source →
    Release notes
    • Gate deepcloning closures over named callables behind an $allow_named_closures option
      • Suggest ext-deepclone when refusing a named callable, and decode its global-function references
    Open source →
  3. v1.39.0 10 Jun 2026
    Release notes

    Changelog (v1.38.2...v1.39.0)

    • feature #630 [DeepClone] Support closures declared in constant expressions (@nicolas-grekas)
    • bug #632 [DeepClone] Fix round-tripping short-lived Random\Randomizer instances on PHP 8.2 (@nicolas-grekas)
    • bug #631 [DeepClone] Reject from_array payloads that would build an uninitialized object (@nicolas-grekas)
    Open source →
    Release notes
    • Support closures declared in constant expressions
      • Fix round-tripping short-lived Random\Randomizer instances on PHP 8.2
      • Reject deepclone_from_array() payloads that would build an uninitialized object
    Open source →
  4. v1.38.2 08 Jun 2026
    Release notes

    Changelog (v1.38.1...v1.38.2)

    Open source →
    Release notes
    • Fix round-tripping objects whose __serialize() nests another object
      • Fix round-tripping and hydrating BcMath\Number
      • Reject malformed deepclone_from_array() input without warnings
      • Fix cloning objects with numeric property names
      • Fix issues with mb_scrub()
      • Fix issues with mb_str_pad()
    Open source →
  5. v1.38.1 26 May 2026
    Release notes

    Changelog (v1.38.0...v1.38.1)

    Open source →
    Release notes
    • 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
    Open source →
  6. v1.38.0 25 May 2026
    Release notes

    Changelog (v1.37.0...v1.38.0)

    Open source →
    Release notes
    • 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
    Open source →
  7. v1.37.0 26 Apr 2026
    Release notes

    Changelog (v1.36.0...v1.37.0)

    • feature #578 [RFC] Add grapheme_strrev function php 8.6 (@PhilDaiguille)
    • bug #580 Fix grapheme_levenshtein() registration in polyfill-php85 (@xabbuh)
    • bug #581 do not register the locale_is_right_to_left() function without the intl extension (@xabbuh)
    • bug #584 [DeepClone] Drop SPL "\0" special key from deepclone_hydrate() (@nicolas-grekas)
    • bug #577 [DeepClone] Cap IS_LONG objectMeta count at 1M (@nicolas-grekas)
    • feature #576 [DeepClone] Drop scoped mode — mangled-only is now the only shape (@nicolas-grekas)
    • feature #574 [DeepClone] Add DEEPCLONE_HYDRATE_PRESERVE_REFS flag + hot-path perf (@nicolas-grekas)
    Open source →
    Release notes
    • 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
    Open source →
  8. v1.36.0 15 Apr 2026
    Release notes

    Changelog (v1.35.0...v1.36.0)

    • feature #573 [DeepClone] Mirror ext v0.3.0: $flags parameter + forgiving-hydrate behaviors (@nicolas-grekas)
    • bug #572 [DeepClone] Fix PHP warning for __sleep()-listed uninitialized declared properties (@nicolas-grekas)
    Open source →
    Release notes
    • Polyfill deepclone v0.3.0
    Open source →
  9. v1.35.0 14 Apr 2026
    Release notes

    Changelog (v1.34.0...v1.35.0)

    • bug #571 [DeepClone] Fix cache poisoning causing spurious NotInstantiableException (@nicolas-grekas)
    • feature #569 [PHP 8.6] Add SortDirection enum for PHP 8.1+ (@Ayesh)
    • feature #566 [PHP 8.6] Add ARRAY_FILTER_USE_VALUE constant (@Ayesh)
    • feature #568 [DeepClone] Add deepclone_hydrate() polyfill (@nicolas-grekas)
    Open source →
    Release notes
    • 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
    Open source →
  10. v1.34.0 10 Apr 2026
    Release notes

    Changelog (v1.33.0...v1.34.0)

    Open source →
    Release notes
    • 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
    Open source →
  11. v1.33.0 19 Aug 2025
    Release notes
    • 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
    Open source →
  12. v1.32.0 02 May 2025
    Release notes
    • 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
    Open source →
  13. v1.31.0 09 Sep 2024
    Release notes
    • Bump minimum PHP version to 7.2
      • Polyfill mb_trim, mb_ltrim and mb_rtrim
      • Polyfill CURL_HTTP_VERSION_3(ONLY) constants
    Open source →
  14. v1.30.0 19 Jun 2024
    Release notes
    • 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
    Open source →
  15. v1.29.0 29 Jan 2024
    Release notes
    • Fix the ini_parse_quantity() polyfill
      • Add str_increment and str_decrement functions
      • Add SQLite3Exception class
    Open source →
  16. v1.28.0 25 Aug 2023
    Release notes
    • 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
    Open source →
  17. v1.27.0 10 Nov 2022
    Release notes
    • 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
    Open source →
  18. v1.26.0 02 Jun 2022
    Release notes
    • 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
    Open source →
  19. v1.25.0 04 Mar 2022
    Release notes
    • Add PhpToken to the PHP 8.0 polyfill when the tokenizer extension is enabled
      • Fix str_ends_with() when needle is longer than haystack
    Open source →
  20. v1.24.0 04 Jan 2022
    Release notes
    • 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
    Open source →
  21. v1.23.1 29 Jul 2021
    Release notes
    • Allow null in str_*() functions
      • Fix grapheme_str(r)ipos()
    Open source →
  22. v1.23.0 27 May 2021
    Release notes
    • 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
    Open source →
  23. v1.22.1 15 Feb 2021
    Release notes
    • always accept null values on PHP 8, as native functions do
    Open source →
  24. v1.22.0 07 Jan 2021
    Release notes
    • added PHP 8.1 polyfill
      • fixed signatures on PHP 8
      • fixed behaviors on PHP 8
      • synced values of Normalizer::* consts
    Open source →
  25. v1.20.0 24 Oct 2020
    Release notes
    • Bump minimum PHP version to 7.1
    Open source →
  26. v1.19.0 23 Oct 2020
    Release notes
    • 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
    Open source →
  27. v1.18.1 04 Aug 2020
    Release notes
    • Don't force labels containing URL delimiters to stay in their Unicode form when using idn_to_ascii()
    Open source →
  28. v1.18.0 14 Jul 2020
    Release notes
    • improve polyfill-idn to make it compliant with latest Unicode specs
      • added UnhandledMatchError to the PHP 8 polyfill
    Open source →
  29. v1.17.1 20 Jun 2020
    Release notes
    • fix accuracy of Normalizer::isNormalized()
    Open source →
  30. v1.17.0 12 May 2020
    Release notes
    • added get_resource_id() to the PHP 8 polyfill
      • fix declaring extra constants when intl is loaded
    Open source →
  31. v1.16.0 08 May 2020
    Release notes
    • 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
    Open source →
  32. v1.15.0 25 Mar 2020
    Release notes
    • 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
    Open source →
  33. v1.14.0 13 Feb 2020
    Release notes
    • added PHP 8.0 polyfill
    Open source →
  34. v1.13.2 13 Jan 2020
    Release notes
    • use correct block size for SHA1 in hash_pbkdf2() polyfill
      • fixed mb_str_split() ignoring new-line characters
      • updated Unicode maps
    Open source →
  35. v1.13.1 30 Nov 2019
    Release notes
    • fixed issues with the uuid polyfill
    Open source →
  36. v1.13.0 27 Nov 2019
    Release notes
    • added polyfills for uuid_* functions
      • optimized mb_str_split()
      • fixed handling negative offsets for grapheme and mbstring functions
    Open source →
  37. v1.12.0 06 Aug 2019
    Release notes
    • added PHP 7.4 polyfill
    Open source →
  38. v1.11.0 22 Mar 2019
    Release notes
    • fixed support for IDN with trailing dot
      • added missing polyfill for JsonException
    Open source →
  39. v1.10.0 31 Oct 2018
    Release notes
    • 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
    Open source →
  40. v1.9.0 06 Aug 2018
    Release notes
    • 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
    Open source →
  41. v1.8.0 01 May 2018
    Release notes
    • added PHP 7.3 polyfill
      • added polyfills for ctype_* functions
    Open source →
  42. v1.7.0 31 Jan 2018
    Release notes
    • added logic to new stream functions on Windows (sapi_windows_vt100_support)
      • added polyfills for mb_*_numericentity
      • made translit/ignore flags order-insensitive
    Open source →
  43. v1.6.0 11 Oct 2017
    Release notes
    • add SessionUpdateTimestampHandlerInterface in PHP 7.0 polyfill
      • fixed loading of Apcu polyfill when Zend Server's Data Cache is used
    Open source →
  44. v1.5.0 16 Aug 2017
    Release notes
    • 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
    Open source →
  45. v1.4.0 09 Jun 2017
    Release notes
    • added PHP 7.2 polyfill
    Open source →
  46. v1.3.1 09 Jun 2017
    Release notes
    • 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
    Open source →
  47. v1.3.0 14 Nov 2016
    Release notes
    • 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
    Open source →
  48. v1.2.0 18 May 2016
    Release notes
    • 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)
    Open source →
  49. v1.1.1 03 Mar 2016
    Release notes
    • 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)
    Open source →
  50. v1.1.0 25 Jan 2016
    Release notes
    • feature #22 [APCu] A new polyfill for the legacy APC users (nicolas-grekas)
      • bug #28 [Php70] Workaround https://bugs.php.net/63206 (nicolas-grekas)
    Open source →
  51. v1.0.1 18 Dec 2015
    Release notes
    • 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)
    Open source →
  52. v1.0.0 04 Nov 2015
    Release notes
    • Hello symfony/polyfill
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive