# changelogs

function_name: trigger_error
version: 8.0.0
change:
The function now throws a ValueError if an invalid
       error_level is specified. Previously, it returned false.


function_name: output_add_rewrite_var
version: 7.1.0
change:
As of PHP 7.1.0, a dedicated output buffer is used,
        url_rewriter.tags
        is used solely for output functions and
        url_rewriter.hosts is available.
        Prior to PHP 7.1.0, rewrite variables set by output_add_rewrite_var
        shared an output buffer with transparent session id support
        (see session.trans_sid_tags).


function_name: output_reset_rewrite_vars
version: 7.1.0
change:
Before PHP 7.1.0, rewrite vars set by output_add_rewrite_var
        use the same Session module trans sid output buffer. Since PHP 7.1.0,
        dedicated output buffer is used and output_reset_rewrite_vars
        only removes rewrite vars defined by output_add_rewrite_var.


function_name: assert_options
version: 8.0.0
change:
If option is not a valid option,
        a ValueError is now thrown.
        Previously false was returned.


function_name: assert
version: 8.0.0
change:
assert will no longer evaluate string arguments, instead they will be
         treated like any other argument. assert($a == $b) should be used instead of
         assert('$a == $b'). The assert.quiet_eval php.ini directive and
         the ASSERT_QUIET_EVAL constant have also been removed, as they would no longer
         have any effect.


function_name: assert
version: 8.0.0
change:
If description is an instance of
        Throwable, the object is thrown if the assertion
        fails, regardless of the value of
        assert.exception.


function_name: assert
version: 8.0.0
change:
If description is an instance of
        Throwable, no user callback is called even
        if it set.


function_name: assert
version: 8.0.0
change:
Declaring a function called assert() inside a namespace is
        no longer allowed, and issues E_COMPILE_ERROR.


function_name: assert
version: 7.3.0
change:
Declaring a function called assert() inside a namespace
        became deprecated. Such declaration now emits an E_DEPRECATED.


function_name: assert
version: 7.2.0
change:
Usage of a string as the assertion
        became deprecated. It now emits an E_DEPRECATED
        notice when both assert.active
        and zend.assertions are set
        to 1.


function_name: gc_status
version: 8.3.0
change:
gc_status now returns the following additional fields:
        "running", "protected",
        "full", "buffer_size",
        "application_time", "collector_time",
        "destructor_time", and "free_time".


function_name: ini_set
version: 8.1.0
change:
value now accepts any scalar type (including null).
       Previously, only string values were accepted.


function_name: uopz_flags
version: PECL uopz 5.0.0
change:
The flags parameter is now optional. Formerly,
       ZEND_ACC_FETCH had to be passed to use uopz_flags
       as getter.


function_name: uopz_set_mock
version: uopz 6.0.0
change:
Mocking static members is no longer supported by this function.
       uopz_redefine and uopz_set_return,
       or Componere can be used instead.


function_name: bzdecompress
version: 8.0.0
change:
The type of use_less_memory has been changed from
       int to bool. Previously, the default value was
       0.


function_name: Phar.setStub
version: 8.3.0
change:
Calling Phar::setStub with a
       resource and a length
       is now deprecated. Such calls should be replaced by:
       $phar->setStub(stream_get_contents($resource));


function_name: RarArchive.close
version: PECL rar 2.0.0
change:
The RAR entries returned by RarArchive::getEntry
        and RarArchive::getEntries are now invalidated when
        calling this method. This means that all instance methods called for
        such entries and not guaranteed to succeed.


function_name: RarEntry.getPackedSize
version: PECL rar 2.0.0
change:
This method now returns correct values of packed sizes bigger than 2 GiB
        on platforms with 64-bit ints and never
        returns negative values on other platforms.


function_name: RarEntry.getUnpackedSize
version: PECL rar 2.0.0
change:
This method now returns correct values of unpacked sizes bigger than
        2 GiB on platforms with 64-bit ints and never
        returns negative values on other platforms.


function_name: deflate_init
version: 8.0.0
change:
On success, this function returns a DeflateContext instance now;
       previously, a resource was returned.


function_name: inflate_init
version: 8.0.0
change:
On success, this function returns an InflateContext instance now;
       previously, a resource was returned.


function_name: hash_algos
version: 7.1.0
change:
Support for sha512/224, sha512/256, sha3-224, sha3-256, sha3-384 and
        sha3-512 has been added.


function_name: hash_hkdf
version: 8.0.0
change:
Now throws a ValueError exception on error.
        Previously, false was returned and an E_WARNING
        message was emitted.


function_name: hash_hmac_file
version: 8.0.0
change:
Now throws a ValueError exception if
        algo is unknown or is a non-cryptographic hash
        function; previously, false was returned instead.


function_name: hash_hmac_file
version: 7.2.0
change:
Usage of non-cryptographic hash functions (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) was disabled.


function_name: hash_hmac
version: 8.0.0
change:
Now throws a ValueError exception if
        algo is unknown or is a
        non-cryptographic hash function; previously, false was returned instead.


function_name: hash_init
version: 8.0.0
change:
Now throws an ValueError exception if the
        algo is unknown or is a non-cryptographic hash
        function, or if key is empty. Previously,
        false was returned and an E_WARNING message was
        emitted.


function_name: hash_init
version: 7.2.0
change:
Usage of non-cryptographic hash functions (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) with HASH_HMAC was disabled.


function_name: hash
version: 8.0.0
change:
hash now throws a ValueError exception
        if algo is unknown; previously, false was returned instead.


function_name: openssl_cms_encrypt
version: 8.1.0
change:
The default cipher algorithm (cipher_algo) is now
       AES-128-CBC (OPENSSL_CIPHER_AES_128_CBC). Previously,
       PKCS7/CMS was used (OPENSSL_CIPHER_RC2_40).


function_name: openssl_csr_export_to_file
version: 8.0.0
change:
csr accepts an OpenSSLCertificateSigningRequest instance now;
       previously, a resource of type OpenSSL X.509 CSR was accepted.


function_name: openssl_csr_get_public_key
version: 8.0.0
change:
On success, this function returns an OpenSSLAsymmetricKey instance now;
       previously, a resource of type OpenSSL key was returned.


function_name: openssl_csr_new
version: 8.0.0
change:
On success, this function returns an OpenSSLCertificateSigningRequest instance now;
       previously, a resource of type OpenSSL X.509 CSR was returned.


function_name: openssl_csr_new
version: 8.0.0
change:
private_key accepts an OpenSSLAsymmetricKey instance now;
       previously, a resource of type OpenSSL key was accepted.


function_name: openssl_csr_sign
version: 8.0.0
change:
On success, this function returns an OpenSSLCertificate instance now;
       previously, a resource of type OpenSSL X.509 was returned.


function_name: openssl_csr_sign
version: 8.0.0
change:
ca_certificate accepts an OpenSSLCertificate instance now;
       previously, a resource of type OpenSSL X.509 was accepted.


function_name: openssl_csr_sign
version: 8.0.0
change:
private_key accepts an OpenSSLAsymmetricKey
       or OpenSSLCertificate instance now;
       previously, a resource of type OpenSSL key or OpenSSL X.509
       was accepted.


function_name: openssl_dh_compute_key
version: 8.0.0
change:
private_key accepts an OpenSSLAsymmetricKey now;
       previously, a resource of type OpenSSL key was accepted.


function_name: openssl_free_key
version: 8.0.0
change:
key accepts an OpenSSLAsymmetricKey now;
       previously, a resource of type OpenSSL key was accepted.


function_name: openssl_open
version: 8.0.0
change:
private_key accepts an OpenSSLAsymmetricKey
       or OpenSSLCertificate instance now;
       previously, a resource of type OpenSSL key or OpenSSL X.509 CSR
       was accepted.


function_name: openssl_pkcs12_export_to_file
version: 8.0.0
change:
certificate accepts an OpenSSLCertificate instance now;
       previously, a resource of type OpenSSL X.509 CSR was accepted.


function_name: openssl_pkcs7_verify
version: 8.0.0
change:
signers_certificates_filename, untrusted_certificates_filename,
       content and output_filename are nullable now.


function_name: openssl_pkey_export_to_file
version: 8.0.0
change:
key accepts an OpenSSLAsymmetricKey
       or OpenSSLCertificate instance now;
       previously, a resource of type OpenSSL key or OpenSSL X.509
       was accepted.


function_name: openssl_pkey_get_public
version: 8.0.0
change:
public_key accepts an OpenSSLAsymmetricKey
       or OpenSSLCertificate instance now;
       previously, a resource of type OpenSSL key or OpenSSL X.509
       was accepted.


function_name: openssl_seal
version: 8.0.0
change:
public_key accepts an array of
       OpenSSLAsymmetricKey instances now;
       previously, an array of resources of type OpenSSL key
       was accepted.


function_name: openssl_x509_check_private_key
version: 8.0.0
change:
certificate accepts an OpenSSLCertificate instance now;
       previously, a resource of type OpenSSL X.509 was accepted.


function_name: password_hash
version: 8.0.0
change:
password_hash no longer returns false on failure, instead a
        ValueError will be thrown if the password hashing algorithm
        is not valid, or an Error if the password hashing failed
        for an unknown error.


function_name: dba_fetch
version: 8.2.0
change:
dba_fetch's optional skip argument is now at the end
       in line with PHP userland semantics. The previously overloaded signature
       is still accepted but discouraged.


function_name: PDOStatement.debugDumpParams
version: 7.2.0
change:
PDOStatement::debugDumpParams now returns the SQL sent to
        the database, including the full, raw query (including the replaced placeholders with
        their bounded values). Note, that this will only be available if emulated prepared
        statements are turned on.


function_name: PDOStatement.fetchAll
version: 8.0.0
change:
This method always returns an array now, while previously false may have
       been returned on failure.


function_name: cubrid_get_db_parameter
version: 8.4.0
change:
Change LOCK_TIMEOUT to PARAM_LOCK_TIMEOUT, and MAX_STRING_LENGTH to
        PARAM_MAX_STRING_LENGTH in result.


function_name: db2_pconnect
version: ibm_db2 1.9.0
change:
Active transactions within a persistent connection will be rolled back
        at the end of each request.


function_name: db2_pconnect
version: ibm_db2 1.5.1
change:
The i5_lib, i5_naming,
        i5_commit,
        i5_query_optimize,
        i5_dbcs_alloc,
        i5_date_fmt,
        i5_date_sep,
        i5_time_fmt, i5_time_sep
        and i5_decimal_sep options are available for
        i5/OS users.


function_name: MongoDB\Driver\Manager.__construct
version: PECL mongodb 1.16.0
change:
The AWS KMS provider for client-side encryption now accepts a
         "sessionToken" option, which can be used to
         authenticate with temporary AWS credentials.
        
        
         Added "tlsDisableOCSPEndpointCheck" to the
         "tlsOptions" field of the
         "autoEncryption" driver option.
        
        
         If an empty document is specified for the "azure" or
         "gcp" KMS provider, the driver will attempt to
         configure the provider using
         Automatic Credentials.


function_name: MongoDB\Driver\Manager.__construct
version: PECL mongodb 1.15.0
change:
If an empty document is specified for the "aws" KMS
         provider, the driver will attempt to configure the provider using
         Automatic Credentials.


function_name: MongoDB\Driver\Manager.__construct
version: PECL mongodb 1.14.0
change:
Added the "bypassQueryAnalysis" and
         "encryptedFieldsMap" auto encryption options.
         Additional options pertaining to crypt_shared are
         now supported in the "extraOptions" auto encryption
         option.


function_name: MongoDB\Driver\Manager.__construct
version: PECL mongodb 1.12.0
change:
KMIP is now supported as a KMS provider for client-side encryption and
         may be configured in the "kmsProviders" field of the
         "autoEncryption" driver option. Additionally, TLS
         options for KMS providers may now be configured in the
         "tlsOptions" field of the
         "autoEncryption" driver option.


function_name: MongoDB\Driver\Manager.__construct
version: PECL mongodb 1.10.0
change:
Added the "disableClientPersistence" driver option.
        
        
         Azure and GCP are now supported as KMS providers for client-side
         encryption and may be configured in the
         "kmsProviders" field of the
         "autoEncryption" driver option. Base64-encoded
         strings are now accepted as an alternative to
         MongoDB\BSON\Binary for options within
         "kmsProviders".


function_name: MongoDB\Driver\Manager.__construct
version: PECL mongodb 1.8.0
change:
Added the "directConnection",
         "tlsDisableCertificateRevocationCheck", and
         "tlsDisableOCSPEndpointCheck" URI options.
        
        
         Added the "driver" driver option.


function_name: MongoDB\Driver\Manager.__construct
version: PECL mongodb 1.7.0
change:
Added the "autoEncryption" driver option.
        
        
         Specifying any SSL or TLS option via the driverOptions
         parameter will now implicitly enable TLS, as is done for the
         corresponding URI options.


function_name: MongoDB\Driver\Manager.__construct
version: PECL mongodb 1.6.0
change:
Added the "retryReads", "tls",
         "tlsAllowInvalidCertificates",
         "tlsAllowInvalidHostnames",
         "tlsCAFile",
         "tlsCertificateKeyFile",
         "tlsCertificateKeyFilePassword", and
         "tlsInsecure" URI options.
        
        
         The "retryWrites" URI option defaults to true.
        
        
         Specifying any SSL or TLS URI option via the connection string or
         uriOptions parameter will now implicitly enable
         TLS unless ssl or tls is false.
         TLS is not implicitly enabled for any options in
         the driverOptions parameter, which is unchanged
         from previous versions.


function_name: MongoDB\Driver\Manager.__construct
version: PECL mongodb 1.5.0
change:
"wtimeoutMS" is now always validated and applied to
         the write concern. Previously, the option was ignored if
         "w" was <= 1, since the timeout only applies to
         replication.


function_name: MongoDB\Driver\Manager.__construct
version: PECL mongodb 1.3.0
change:
The uriOptions argument now accepts
         "authMechanism" and
         "authMechanismProperties" options. Previously, these
         options were only supported in the uri argument.


function_name: MongoDB\Driver\Manager.__construct
version: PECL mongodb 1.2.0
change:
The uri argument defaults to
         "mongodb://127.0.0.1/". The default port remains
         27017.
        
        
         Added the "appname" URI option.
        
        
         Added the "allow_invalid_hostname",
         "ca_file", "ca_dir",
         "clr_file", "pem_file",
         "pem_pwd", and
         "weak_cert_validation" driver options.
        
        
         The PHP Streams API is no longer used for socket communication. The
         "connectTimeoutMS" URI option now defaults to 10
         seconds instead of
         default_socket_timeout
         in previous versions. Additionally, the driver no longer supports all
         SSL context options via the
         "context" driver option.


function_name: MongoDB\Driver\Manager.createClientEncryption
version: PECL mongodb 1.16.0
change:
The AWS KMS provider for client-side encryption now accepts a
         "sessionToken" option, which can be used to
         authenticate with temporary AWS credentials.
        
        
         Added "tlsDisableOCSPEndpointCheck" to the
         "tlsOptions" option.
        
        
         If an empty document is specified for the "azure" or
         "gcp" KMS provider, the driver will attempt to
         configure the provider using
         Automatic Credentials.


function_name: MongoDB\Driver\Manager.createClientEncryption
version: PECL mongodb 1.12.0
change:
KMIP is now supported as a KMS provider for client-side encryption and
         may be configured in the "kmsProviders" option.
        
        
         Added the "tlsOptions" option.


function_name: MongoDB\Driver\Manager.createClientEncryption
version: PECL mongodb 1.10.0
change:
Azure and GCP are now supported as KMS providers for client-side
        encryption and may be configured in the
        "kmsProviders" option. Base64-encoded strings are now
        accepted as an alternative to MongoDB\BSON\Binary
        for options within "kmsProviders".


function_name: MongoDB\Driver\Manager.executeBulkWrite
version: PECL mongodb 1.4.4
change:
MongoDB\Driver\Exception\InvalidArgumentException
        will be thrown if the "session" option is used in
        combination with an unacknowledged write concern.


function_name: MongoDB\Driver\Manager.executeBulkWrite
version: PECL mongodb 1.4.0
change:
The third parameter is now an options array.
        For backwards compatibility, this paramater will still accept a
        MongoDB\Driver\WriteConcern object.


function_name: MongoDB\Driver\Manager.executeBulkWrite
version: PECL mongodb 1.3.0
change:
MongoDB\Driver\Exception\InvalidArgumentException
        is now thrown if bulk does not contain any write
        operations. Previously, a
        MongoDB\Driver\Exception\BulkWriteException was
        thrown.


function_name: MongoDB\Driver\Manager.executeCommand
version: PECL mongodb 1.4.0
change:
The third parameter is now an options array.
        For backwards compatibility, this paramater will still accept a
        MongoDB\Driver\ReadPreference object.


function_name: MongoDB\Driver\Manager.selectServer
version: PECL mongodb 1.11.0
change:
The readPreference is now optional. If null or
        omitted, the primary server will be selected by default.


function_name: MongoDB\Driver\Query.__construct
version: PECL mongodb 1.2.0
change:
Added the "allowPartialResults",
         "collation", "comment",
         "hint", "max",
         "maxScan", "maxTimeMS",
         "min", "returnKey",
         "showRecordId", and "snapshot"
         options.
        
        
         Renamed the "partial" option to
         "allowPartialResults". For backwards compatibility,
         "partial" will still be read if
         "allowPartialResults" is not specified.
        
        
         Removed the legacy "secondaryOk" option, which is
         obsolete. For queries using the legacy wire protocol OP_QUERY, the
         driver will set the secondaryOk bit as needed in
         accordance with the
         Server Selection Specification.


function_name: MongoDB\Driver\BulkWrite.count
version: PECL mongodb 1.2.0
change:
Returns the number of write operations added to the
        MongoDB\Driver\BulkWrite object. Earlier versions
        returned the expected number of client-to-server roundtrips required to
        execute all write operations.


function_name: MongoDB\Driver\BulkWrite.insert
version: PECL mongodb 1.3.0
change:
The _id of the inserted document is always returned.
        Previously, the method only returned a value if a
        MongoDB\BSON\ObjectId was generated.


function_name: MongoDB\Driver\BulkWrite.update
version: PECL mongodb 1.6.0
change:
The newObj parameter now accepts an aggregation
        pipeline. This feature requires MongoDB 4.2+ and will result in an
        exception at execution time if specified for an older server version.


function_name: MongoDB\Driver\BulkWrite.update
version: PECL mongodb 1.5.0
change:
Using the "arrayFilters" option will result in an
        exception at execution time if unsupported by the server. Previously,
        no exception would be thrown and the option may have been ignored.


function_name: MongoDB\Driver\WriteConcern.getWtimeout
version: PECL mongodb 1.7.0
change:
On 32-bit systems, this method will always truncate the wTimeout
        value if it exceeds the 32-bit range. In that case, a warning will be
        emitted.


function_name: MongoDB\Driver\ReadPreference.__construct
version: PECL mongodb 1.3.0
change:
The mode argument now accepts a string value,
         which is consistent with the "readPreference" URI
         option for MongoDB\Driver\Manager::__construct.


function_name: MongoDB\Driver\Server.getInfo
version: PECL mongodb 1.11.0
change:
When the driver is connected to a load balancer, this method returns
        the backing server's hello command response from the
        initial connection handshake.


function_name: MongoDB\Driver\Server.getLatency
version: PECL mongodb 1.11.0
change:
This method will return null if no latency has been measured. In
        earlier versions, an integer was always returned and an unset value
        might be reported as -1.


function_name: MongoDB\BSON\toPHP
version: PECL mongodb 1.4.0
change:
If the input contains an unsupported, deprecated BSON type, the
         driver will now no longer log a warning to the debug log, but instead
         will create an object representing this type.


function_name: MongoDB\BSON\toPHP
version: PECL mongodb 1.3.2
change:
MongoDB\Driver\Exception\UnexpectedValueException
         is no longer thrown if the input contains an unsupported, deprecated
         BSON type. Such types will be ignored (as they were in versions before
         1.3.0), although the driver will now log a warning to the debug log
         (see: mongodb.debug).


function_name: MongoDB\BSON\toPHP
version: PECL mongodb 1.3.0
change:
MongoDB\Driver\Exception\UnexpectedValueException
         is thrown if the input contains an unsupported, deprecated BSON type.
         Previously, such types were ignored.


function_name: MongoDB\BSON\Binary.__construct
version: PECL mongodb 1.3.0
change:
MongoDB\Driver\Exception\InvalidArgumentException
         is thrown if type is
         MongoDB\BSON\Binary::TYPE_UUID or
         MongoDB\BSON\Binary::TYPE_OLD_UUID and
         data is not exactly 16 bytes in length.


function_name: MongoDB\BSON\Binary.__construct
version: PECL mongodb 1.1.3
change:
MongoDB\Driver\Exception\InvalidArgumentException
         is thrown if type is not an unsigned 8-bit
         integer.


function_name: MongoDB\BSON\Javascript.__construct
version: PECL mongodb 1.2.0
change:
MongoDB\Driver\Exception\InvalidArgumentException
         is thrown if code contains null bytes.
         Previously, values would be truncated at the first null byte.


function_name: MongoDB\BSON\Regex.__construct
version: PECL mongodb 1.2.0
change:
The flags argument is optional and defaults to
         an empty string.
        
        
         Characters in the flags argument will be sorted
         alphabetically when a Regex is constructed. Previously, the characters
         were stored in the order provided.
        
        
         MongoDB\Driver\Exception\InvalidArgumentException
         is thrown if pattern or
         flags contain null bytes. Previously, values
         would be truncated at the first null byte.


function_name: MongoDB\BSON\UTCDateTime.__construct
version: PECL mongodb 1.2.0
change:
The milliseconds argument is optional and
         defaults to null (i.e. current time). The argument also accepts a
         DateTimeInterface, which may be used to derive
         the number of milliseconds since the Unix epoch. Previously, only
         int, float, and string types
         were accepted.


function_name: MongoDB\BSON\Persistable.bsonSerialize
version: PECL mongodb 1.17.0
change:
This method may now also return MongoDB\BSON\Document
         instances in addition to array and stdClass.


function_name: MongoDB\BSON\Serializable.bsonSerialize
version: PECL mongodb 1.17.0
change:
The return type was changed from arrayobject.
         Instead of object, the return type now specifies stdClass.
         Classes that implement this interface must be changed to no longer
         declare an object return type. As the return type is
         tentative, a deprecation warning is emitted on PHP 8.1 and newer.
        
        
         In addition to the changes above, the driver now also supports
         returning instances of MongoDB\BSON\Document
         and MongoDB\BSON\PackedArray. Please note that
         any MongoDB\BSON\PackedArray instances returned
         are silently converted to objects when stored as root documents. They
         are stored as arrays when used as an embedded field value.


function_name: MongoDB\BSON\Int64.__construct
version: PECL mongodb 1.16.0
change:
This method was made public to support creating Int64 instances when
         working with raw BSON.


function_name: mysqli.$client_info
version: 8.1.0
change:
Calling mysqli_get_client_info with the
       mysql argument has been deprecated.
       This function never required a parameter, but incorrectly allowed it as
       an optional parameter.


function_name: mysqli.init
version: 8.1.0
change:
The object-oriented style mysqli::init method
       has been deprecated.
       Replace calls to parent::init with
       parent::__construct.


function_name: mysqli_result.fetch_object
version: 8.3.0
change:
Now throws a ValueError exception when
       the constructor_args is non-empty with the class not having constructor;
       previously an Exception was thrown.


function_name: mysqli_result.fetch_object
version: 8.0.0
change:
constructor_args now accepts [] for constructors with 0 parameters;
       previously an exception was thrown.


function_name: mysqli_driver.$report_mode
version: 8.1.0
change:
The default value is now MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT.
       Previously, it was MYSQLI_REPORT_OFF.


function_name: pg_cancel_query
version: 8.1.0
change:
The connection parameter expects an PgSql\Connection
  instance now; previously, a resource was expected.


function_name: pg_convert
version: 8.3.0
change:
Now throws a ValueError or TypeError error
       when the value or type of field does not match properly with a PostgreSQL's type;
       previously an E_WARNING was emitted.


function_name: pg_fetch_all
version: 8.0.0
change:
pg_fetch_all will now return an empty array
        instead of false for result sets with zero rows.


function_name: pg_insert
version: 8.3.0
change:
Now throws a ValueError error when the specified table is invalid;
       previously an E_WARNING was emitted.


function_name: SQLite3.openBlob
version: 7.2.0
change:
The flags parameter has been added, allowing to
       write BLOBs; formerly only reading was supported.


function_name: easter_date
version: 8.0.0
change:
A ValueError is now thrown when
       year is outside the allowed range.
       Previously, an E_WARNING was raised
       and the function returned false.


function_name: jdtounix
version: 7.3.24, 7.4.12
change:
The upper limit of julian_day has been extended. Previously,
       it was 2465342 regardless of the architecture.


function_name: DateTime.__construct
version: 8.3.0
change:
Now throws
        DateMalformedStringException if an
        invalid string is passed, instead of
        Exception.


function_name: DateTime.createFromFormat
version: 8.0.21, 8.1.8, 8.2.0
change:
Now throws ValueError when NULL-bytes
       are passed into datetime, which previously was silently
       ignored.


function_name: DateTime.createFromImmutable
version: 8.0.0
change:
The method returns an instance of the currently invoked class now. Previously, it created a new instance
        of DateTime.


function_name: DateTime.modify
version: 8.3.0
change:
Now throws
       DateMalformedStringException with
       DateTime::modify if an invalid string is
       passed, instead of a warning.
       date_modify has not been changed.


function_name: DateTime.setTime
version: 8.1.0
change:
The behaviour with double existing hours (during the fall-back
      DST transition) changed. Previously PHP would pick the second occurrence
      (after the DST transition), instead of the first occurrence (before DST
       transition).


function_name: DateTime.sub
version: 8.3.0
change:
Now throws a
       DateInvalidOperationException with
       DateTime::sub, instead of
       a warning when an unsupported operation is attempted.
       date_sub has not been changed.


function_name: DateTimeImmutable.createFromFormat
version: 8.0.21, 8.1.8, 8.2.0
change:
Now throws ValueError when NULL-bytes
        are passed into datetime, which previously was silently
        ignored.


function_name: DateTimeImmutable.createFromMutable
version: 8.0.0
change:
The method returns an instance of the currently invoked class now. Previously, it created a new instance
        of DateTimeImmutable.


function_name: DateTimeImmutable.getLastErrors
version: 8.2.0
change:
Before PHP 8.2.0, this function did not return false
        when there were no warnings or errors. Instead, it would always
        return the documented array structure.


function_name: DateTimeImmutable.modify
version: 8.3.0
change:
Now throws
       DateMalformedStringException if an
       invalid string is passed, instead of a warning.


function_name: DateTimeImmutable.sub
version: 8.3.0
change:
Now throws a
       DateInvalidOperationException instead of
       a warning when an unsupported operation is attempted.


function_name: DateTimeZone.__construct
version: 8.3.0
change:
Invalid values now return a
        DateInvalidTimeZoneException instead of
        a generic Exception.


function_name: DateInterval.__construct
version: 8.2.0
change:
Only the y to f,
       invert, and days will be visible,
       including a new from_string boolean property.


function_name: DateInterval.createFromDateString
version: 8.2.0
change:
Only the from_string and
       date_string properties will be visible when a
       DateInterval is created with this method.


function_name: date_parse_from_format
version: 7.2.0
change:
The zone element of the returned array represents
       seconds instead of minutes now, and its sign is inverted. For instance
       -120 is now 7200.


function_name: date_sun_info
version: 7.2.0
change:
The calculation was fixed with regards to local midnight instead of
        local noon, which changes the results slightly.


function_name: strptime
version: 8.1.0
change:
This function has been deprecated.
        Use date_parse_from_format instead (for locale-independent parsing),
        or IntlDateFormatter::parse (for locale-dependent parsing)


function_name: fgetcsv
version: 7.4.0
change:
The escape parameter now also accepts an empty
        string to disable the proprietary escape mechanism.


function_name: stat
version: 7.4.0
change:
On Windows, the device number is now the serial number of the volume that
       contains the file, and the inode number is the identifier associated with the file.


function_name: stat
version: 7.4.0
change:
The size, atime, mtime and
       ctime statistics of symlinks are always those of the target.
       This was previously not the case for NTS builds on Windows.


function_name: unlink
version: 7.3.0
change:
On Windows, it is now possible to unlink files with
       handles in use, while formerly that would fail. However, it is still not
       possible to re-create the unlinked file, until all handles to it have been
       closed.


function_name: enchant_broker_init
version: 8.0.0
change:
On success, this function returns an EnchantBroker instance now;
       previously, a resource was returned.


function_name: enchant_broker_request_dict
version: 8.0.0
change:
On success, this function returns an EnchantDictionary instance now;
       previoulsy, a resource was retured.


function_name: bind_textdomain_codeset
version: 8.0.3
change:
codeset is nullable now.
       Previously, it was not possible to retrieve the currently set encoding.


function_name: bindtextdomain
version: 8.0.3
change:
directory is nullable now.
       Previously, it was not possible to retrieve the currently set directory.


function_name: iconv_substr
version: 7.0.11
change:
If string is equal to
        offset characters long, an empty string will be
        returned. Prior to this version, false was returned in this case.


function_name: IntlDateFormatter.format
version: 7.1.5
change:
Support for providing general DateTimeInterface objects to the
        datetime parameter was added. Formerly, only proper
        DateTime objects were supported.


function_name: grapheme_substr
version: 8.0.0
change:
The function now consistently clamps out-of-bounds offsets to the string boundary.
       Previously, false was returned instead of the empty string in some cases.


function_name: idn_to_ascii
version: 7.4.0
change:
The default value of variant is now
        INTL_IDNA_VARIANT_UTS46 instead of the deprecated
        INTL_IDNA_VARIANT_2003.


function_name: mb_check_encoding
version: 7.2.0
change:
This function now also accepts an array as value.
       Formerly, only strings have been supported.


function_name: mb_convert_case
version: 7.3.0
change:
Added support for
        MB_CASE_FOLD,
        MB_CASE_UPPER_SIMPLE,
        MB_CASE_LOWER_SIMPLE,
        MB_CASE_TITLE_SIMPLE, and
        MB_CASE_FOLD_SIMPLE
        as mode.


function_name: mb_convert_encoding
version: 8.2.0
change:
mb_convert_encoding will no longer return
       the following non text encodings:
       "Base64", "QPrint",
       "UUencode", "HTML entities",
       "7 bit" and "8 bit".


function_name: mb_convert_encoding
version: 8.0.0
change:
mb_convert_encoding will now throw a
       ValueError when
       to_encoding is passed an invalid encoding.


function_name: mb_convert_encoding
version: 8.0.0
change:
mb_convert_encoding will now throw a
       ValueError when
       from_encoding is passed an invalid encoding.


function_name: mb_convert_encoding
version: 7.2.0
change:
This function now also accepts an array as string.
       Formerly, only strings have been supported.


function_name: mb_detect_encoding
version: 8.2.0
change:
mb_detect_encoding will no longer return
       the following non text encodings:
       "Base64", "QPrint",
       "UUencode", "HTML entities",
       "7 bit" and "8 bit".


function_name: mb_encoding_aliases
version: 8.0.0
change:
If the encoding is unknown, a ValueError
       is now thrown; previously an E_WARNING was emitted,
       and the function returned false.


function_name: mb_ereg
version: 8.0.0
change:
This function returns true on success now. Previously, it returned the byte length
       of the matched string if a match for pattern was found in
       string and matches was passed.
       If the optional parameter matches was not passed or
       the length of the matched string was 0, this function returned 1.


function_name: mb_ereg
version: 7.1.0
change:
mb_ereg will now set matches to
       an empty array, if nothing matched. Formerly,
       matches was not modified in that case.


function_name: mb_eregi
version: 7.1.0
change:
mb_eregi will now set matches to
       an empty array, if nothing matched. Formerly,
       matches was not modified in that case.


function_name: mb_internal_encoding
version: 8.0.0
change:
Now throws a ValueError if
       encoding is an invalid encoding.
       Previously a E_WARNING was emitted instead.


function_name: mb_regex_set_options
version: 8.0.0
change:
If the parameter options is given and not null, the previous
       options are returned. Formerly, the current options have been returned.


function_name: mb_substitute_character
version: 8.0.0
change:
Passing an empty string to substitute_character
       is no longer supported; "none" should be passed instead.


function_name: pspell_add_to_personal
version: 8.1.0
change:
The dictionary parameter expects an PSpell\Dictionary
  instance now; previously, a resource was expected.


function_name: exif_read_data
version: 7.2.0
change:
Support for the following EXIF formats were added:
         
          Samsung
          DJI
          Panasonic
          Sony
          Pentax
          Minolta
          Sigma/Foveon
          AGFA
          Kyocera
          Ricoh
          Epson


function_name: getimagesize
version: 8.2.0
change:
Now returns the actual image dimensions, bits and channels of AVIF images;
        previously, the dimensions were reported as 0x0,
        and bits and channels were not reported at all.


function_name: imageaffine
version: 8.0.0
change:
On success, this function returns a GDImage instance now;
       previously, a resource was returned.


function_name: imageantialias
version: 7.2.0
change:
imageantialias is now generally available. Formerly
       it was only available if PHP was compiled with the bundled version of the
       GD library.


function_name: imagechar
version: 8.1.0
change:
The font parameter now accepts both an GdFont instance
  and an int; previously only int was accepted.


function_name: imagecolorsforindex
version: 8.0.0
change:
imagecolorsforindex now throws a ValueError exception
       if color is out of range; previously, false was returned instead.


function_name: imagecopy
version: 8.0.0
change:
dst_image and src_image expect
       GdImage instances now; previously, resources
       were expected.


function_name: imagecropauto
version: 7.4.0
change:
The behavior of imagecropauto() in the bundled libgd has been synced with
       that of system libgd: IMG_CROP_DEFAULT no longer falls
       back to IMG_CROP_SIDES and threshold-cropping now uses
       the same algorithm as system libgd.


function_name: imagecropauto
version: 7.4.0
change:
The default value of mode has been changed to
       IMG_CROP_AUTO. Formerly, the default value has been
       -1 which corresponds to IMG_CROP_DEFAULT,
       but passing -1 is now deprecated.


function_name: imagegd
version: 7.2.0
change:
imagegd now allows to output truecolor images.
        Formerly, these have been implicitly converted to palette.


function_name: imageinterlace
version: 8.0.5
change:
imageinterlace returns a bool now;
       previously it returned an int
       (non-zero for interlaced images, zero otherwise).


function_name: Imagick.adaptiveResizeImage
version: PECL imagick 2.1.0
change:
This method now supports proportional scaling.
       Pass zero as either parameter for proportional scaling.


function_name: Imagick.blackThresholdImage
version: PECL imagick 2.1.0
change:
Now allows a string representing the color as a parameter.
        Previous versions allow only an ImagickPixel object.


function_name: Imagick.borderImage
version: PECL imagick 2.1.0
change:
Now allows a string representing the color as the first parameter.
        Previous versions allow only an ImagickPixel object.


function_name: Imagick.colorFloodfillImage
version: PECL imagick 2.1.0
change:
Now allows a string representing the color as first and third
        parameter. Previous versions allow only an ImagickPixel object.


function_name: Imagick.colorizeImage
version: PECL imagick 2.1.0
change:
Now allows a string representing the color as the first parameter and
        a float representing the opacity value as the second parameter.
        Previous versions allow only an ImagickPixel objects.


function_name: Imagick.matteFloodfillImage
version: PECL imagick 2.1.0
change:
Now allows a string representing the color as the third parameter.
        Previous versions allow only an ImagickPixel object.


function_name: Imagick.paintOpaqueImage
version: PECL imagick 2.1.0
change:
Now allows a string representing the color as first and second parameter.
        Previous versions allow only an ImagickPixel object.


function_name: Imagick.resizeImage
version: PECL imagick 2.1.0
change:
Added optional fit parameter. This method now supports proportional scaling.
       Pass zero as either parameter for proportional scaling.


function_name: Imagick.setImageBackgroundColor
version: PECL imagick 2.1.0
change:
Now allows a string representing the color as the parameter.
        Previous versions allow only an ImagickPixel object.


function_name: imap_append
version: 8.1.0
change:
The imap parameter expects an IMAP\Connection
  instance now; previously, a valid imap resource was expected.


function_name: imap_clearflag_full
version: 8.0.0
change:
A ValueError is now thrown on invalid
       options parameter values. Previously,
       a warning was emitted and the function returned false.


function_name: imap_close
version: 8.0.0
change:
A ValueError is now thrown on invalid
       flags parameter values. Previously,
       a warning was emitted and the function returned false.


function_name: bcmod
version: 7.2.0
change:
num1 and num2 are no
       longer truncated to integer, so now the behavior of
       bcmod follows fmod rather than
       the % operator.


function_name: bcmul
version: 7.3.0
change:
bcmul now returns numbers with the requested scale.
       Formerly, the returned numbers may have omitted trailing decimal zeroes.


function_name: bcpow
version: 7.3.0
change:
bcpow now returns numbers with the requested scale.
       Formerly, the returned numbers may have omitted trailing decimal zeroes.


function_name: bcscale
version: 7.3.0
change:
bcscale can now be used to get the current scale
       factor; when used as setter, it now returns the old scale value.
       Formerly, scale was mandatory, and
       bcscale always returned true.


function_name: bcsqrt
version: 8.0.0
change:
If num is not a well-formed BCMath numeric string,
       or less than 0, a ValueError is thrown.
       Previously, E_WARNING was raised instead.


function_name: bcsqrt
version: 8.0.0
change:
scale now needs to be between 0
       and 2147483647; previously, negative scales have been
       silently treated as 0.


function_name: gmp_random_seed
version: 8.0.0
change:
If seed is invalid, gmp_random_seed
       now throws a ValueError.
       Previously it emitted an E_WARNING and returned false.


function_name: base_convert
version: 7.4.0
change:
Passing invalid characters will now generate a deprecation notice.
       The result will still be computed as if the invalid characters did not exist.


function_name: max
version: 8.0.0
change:
max throws a ValueError on failure now;
       previously, false was returned and an E_WARNING error was emitted.


function_name: max
version: 8.0.0
change:
As 
       string to number comparisons were changed,
       max no longer returns a
       different value based on the argument order in those cases.


function_name: min
version: 8.0.0
change:
min throws a ValueError on failure now;
       previously, false was returned and an E_WARNING error was emitted.


function_name: min
version: 8.0.0
change:
As 
       string to number comparisons were changed,
       min no longer returns a
       different value based on the argument order in those cases.


function_name: expect_expectl
version: PECL expect 0.2.1
change:
Prior to version 0.2.1, in match parameter a match string was returned,
       not an array of match substrings.


function_name: pcntl_signal
version: 7.1.0
change:
As of PHP 7.1.0 the handler callback is given a second argument
        containing the siginfo of the specific signal.  This data is only
        supplied if the operating system has the siginfo_t structure.
        If the OS does not implement siginfo_t NULL is supplied.


function_name: posix_eaccess
version: 8.3.0
change:
Checks the effective user/group for a file, differing
       from posix_access which checks
       from the real user/group.


function_name: posix_isatty
version: 8.3.0
change:
Type error E_WARNINGs are now raised for integer
       coercions following the usual PHP type coercion semantics.


function_name: exec
version: 8.0.0
change:
If command is empty or contains null bytes,
       exec now throws a ValueError.
       Previously it emitted an E_WARNING and returned false.


function_name: passthru
version: 8.0.0
change:
If command is empty or contains null bytes,
       passthru now throws a ValueError.
       Previously it emitted an E_WARNING and returned false.


function_name: Worker.unstack
version: v3
change:
The parameter to specify the task to unstack has been removed. Now, only the
        first task in the stack is removed.


function_name: msg_get_queue
version: 8.0.0
change:
On success, this function returns a SysvMessageQueue instance now;
        previously, a resource was returned.


function_name: sem_get
version: 8.0.0
change:
On success, this function returns a SysvSemaphore instance now;
        previously, a resource was returned.


function_name: shm_attach
version: 8.0.0
change:
On success, this function returns an SysvSharedMemory instance now;
       previously, a resource was returned.


function_name: shmop_open
version: 8.0.0
change:
On success, this function returns an Shmop instance now;
       previously, a resource was returned.


function_name: shmop_open
version: 8.0.0
change:
If mode is invalid, or size is less than or equal to zero,
       a ValueError is thrown; previously E_WARNING was emitted instead,
       and the function returned false.


function_name: shmop_read
version: 8.0.0
change:
If offset or size are out of range,
       a ValueError is thrown; previously E_WARNING
       was emitted, and false was returned,


function_name: json_decode
version: 7.1.0
change:
An empty JSON key ("") can be encoded to the empty object property
        instead of using a key with value _empty_.


function_name: constant
version: 8.0.0
change:
If the constant is not defined, constant now throws an
       Error exception; previously an E_WARNING
       was generated, and null was returned.


function_name: sleep
version: 8.0.0
change:
The function throws a ValueError on negative seconds;
       previously, an E_WARNING was raised instead, and the function returned false.


function_name: mt_rand
version: 7.2.0
change:
mt_rand has received a bug fix for a modulo bias bug. This means that sequences generated with a specific seed may differ from PHP 7.1 on 64-bit machines.


function_name: mt_rand
version: 7.1.0
change:
mt_rand has been updated to use the fixed, correct, version of
         the Mersenne Twister algorithm. To fall back to the old behaviour, use mt_srand with MT_RAND_PHP as the second parameter.


function_name: rand
version: 7.2.0
change:
rand has received a bug fix for a modulo bias bug. This means that sequences generated with a specific seed may differ from PHP 7.1 on 64-bit machines.


function_name: random_bytes
version: 8.2.0
change:
In case of a CSPRNG failure, this function will now throw a
       Random\RandomException. Previously a plain
       Exception was thrown.


function_name: SplFixedArray.__construct
version: 8.0.0
change:
Now throws a ValueError if
        size is a negative;
        previously it threw a InvalidArgumentException.


function_name: SplObjectStorage.current
version: 8.1.0
change:
SplObjectStorage::current now throws an Error exception
       if the current position is invalid.  Previously, false was returned instead.


function_name: DirectoryIterator.__construct
version: 8.0.0
change:
Now throws a ValueError if
        directory is an empty string;
        previously it threw a RuntimeException.


function_name: DirectoryIterator.key
version: 8.1.0
change:
When the iterator is uninitialized, an Error is
        thrown now. Previously, the method returned false.


function_name: LimitIterator.__construct
version: 8.0.0
change:
Now throws a ValueError if
        offset is less than 0;
        previously it threw a RuntimeException.


function_name: LimitIterator.__construct
version: 8.0.0
change:
Now throws a ValueError if
        limit is less than -1;
        previously it threw a RuntimeException.


function_name: MultipleIterator.current
version: 8.1.0
change:
A RuntimeException is now thrown if
       MultipleIterator::current is called on an
       invalid iterator.  Previously, false was returned.


function_name: MultipleIterator.key
version: 8.1.0
change:
A RuntimeException is now thrown if
       MultipleIterator::key is called on an
       invalid iterator.  Previously, false was returned.


function_name: spl_autoload_functions
version: 8.0.0
change:
Return value was updated to always be an array; previously this function returned
       false if the autoload queue wasn't activated.


function_name: SplFileObject.__toString
version: 8.1.14, 8.2.1
change:
Changed from an alias of SplFileObject::fgets
        to an implementation of SplFileObject::current
        which returns a CSV string when the
        SplFileObject::READ_CSV flag is set.


function_name: stream_set_chunk_size
version: 8.0.0
change:
A ValueError is now thrown if
        size is less than 1 or greater than
        PHP_INT_MAX. Previously, an
        E_WARNING level error was emitted and false was
        returned.


function_name: tidyNode.isHtml
version: 7.3.24, 7.4.12
change:
This function has been fixed to have reasonable behavior. Previously,
       almost any node was reported as being an HTML node.


function_name: curl_copy_handle
version: 8.0.0
change:
On success, this function returns a CurlHandle instance now;
       previously, a resource was returned.


function_name: curl_getinfo
version: 7.3.0
change:
Introduced CURLINFO_CONTENT_LENGTH_DOWNLOAD_T,
        CURLINFO_CONTENT_LENGTH_UPLOAD_T,
        CURLINFO_HTTP_VERSION,
        CURLINFO_PROTOCOL,
        CURLINFO_PROXY_SSL_VERIFYRESULT,
        CURLINFO_SCHEME,
        CURLINFO_SIZE_DOWNLOAD_T,
        CURLINFO_SIZE_UPLOAD_T,
        CURLINFO_SPEED_DOWNLOAD_T,
        CURLINFO_SPEED_UPLOAD_T,
        CURLINFO_APPCONNECT_TIME_T,
        CURLINFO_CONNECT_TIME_T,
        CURLINFO_FILETIME_T,
        CURLINFO_NAMELOOKUP_TIME_T,
        CURLINFO_PRETRANSFER_TIME_T,
        CURLINFO_REDIRECT_TIME_T,
        CURLINFO_STARTTRANSFER_TIME_T,
        CURLINFO_TOTAL_TIME_T.


function_name: curl_multi_init
version: 8.0.0
change:
On success, this function returns a CurlMultiHandle instance now;
       previously, a resource was returned.


function_name: curl_multi_setopt
version: 7.0.7
change:
Introduced CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE,
        CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE,
        CURLMOPT_MAX_HOST_CONNECTIONS,
        CURLMOPT_MAX_PIPELINE_LENGTH and
        CURLMOPT_MAX_TOTAL_CONNECTIONS.


function_name: curl_setopt
version: 7.3.0
change:
Introduced CURLOPT_ABSTRACT_UNIX_SOCKET, CURLOPT_KEEP_SENDING_ON_ERROR,
        CURLOPT_PRE_PROXY, CURLOPT_PROXY_CAINFO,
        CURLOPT_PROXY_CAPATH, CURLOPT_PROXY_CRLFILE,
        CURLOPT_PROXY_KEYPASSWD, CURLOPT_PROXY_PINNEDPUBLICKEY,
        CURLOPT_PROXY_SSLCERT, CURLOPT_PROXY_SSLCERTTYPE,
        CURLOPT_PROXY_SSL_CIPHER_LIST, CURLOPT_PROXY_SSLKEY,
        CURLOPT_PROXY_SSLKEYTYPE, CURLOPT_PROXY_SSL_OPTIONS,
        CURLOPT_PROXY_SSL_VERIFYHOST, CURLOPT_PROXY_SSL_VERIFYPEER,
        CURLOPT_PROXY_SSLVERSION, CURLOPT_PROXY_TLSAUTH_PASSWORD,
        CURLOPT_PROXY_TLSAUTH_TYPE, CURLOPT_PROXY_TLSAUTH_USERNAME,
        CURLOPT_SOCKS5_AUTH, CURLOPT_SUPPRESS_CONNECT_HEADERS,
        CURLOPT_DISALLOW_USERNAME_IN_URL, CURLOPT_DNS_SHUFFLE_ADDRESSES,
        CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, CURLOPT_HAPROXYPROTOCOL,
        CURLOPT_PROXY_TLS13_CIPHERS, CURLOPT_SSH_COMPRESSION,
        CURLOPT_TIMEVALUE_LARGE and CURLOPT_TLS13_CIPHERS.


function_name: curl_setopt
version: 7.0.7
change:
Introduced CURL_HTTP_VERSION_2, CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE,
        CURL_HTTP_VERSION_2TLS, CURL_REDIR_POST_301,
        CURL_REDIR_POST_302, CURL_REDIR_POST_303,
        CURL_REDIR_POST_ALL, CURL_VERSION_KERBEROS5,
        CURL_VERSION_PSL, CURL_VERSION_UNIX_SOCKETS,
        CURLAUTH_NEGOTIATE, CURLAUTH_NTLM_WB,
        CURLFTP_CREATE_DIR, CURLFTP_CREATE_DIR_NONE,
        CURLFTP_CREATE_DIR_RETRY, CURLHEADER_SEPARATE,
        CURLHEADER_UNIFIED, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE,
        CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, CURLMOPT_MAX_HOST_CONNECTIONS,
        CURLMOPT_MAX_PIPELINE_LENGTH, CURLMOPT_MAX_TOTAL_CONNECTIONS,
        CURLOPT_CONNECT_TO, CURLOPT_DEFAULT_PROTOCOL,
        CURLOPT_DNS_INTERFACE, CURLOPT_DNS_LOCAL_IP4,
        CURLOPT_DNS_LOCAL_IP6, CURLOPT_EXPECT_100_TIMEOUT_MS,
        CURLOPT_HEADEROPT, CURLOPT_LOGIN_OPTIONS,
        CURLOPT_PATH_AS_IS, CURLOPT_PINNEDPUBLICKEY,
        CURLOPT_PIPEWAIT, CURLOPT_PROXY_SERVICE_NAME,
        CURLOPT_PROXYHEADER, CURLOPT_SASL_IR,
        CURLOPT_SERVICE_NAME, CURLOPT_SSL_ENABLE_ALPN,
        CURLOPT_SSL_ENABLE_NPN, CURLOPT_SSL_FALSESTART,
        CURLOPT_SSL_VERIFYSTATUS, CURLOPT_STREAM_WEIGHT,
        CURLOPT_TCP_FASTOPEN, CURLOPT_TFTP_NO_OPTIONS,
        CURLOPT_UNIX_SOCKET_PATH, CURLOPT_XOAUTH2_BEARER,
        CURLPROTO_SMB, CURLPROTO_SMBS,
        CURLPROXY_HTTP_1_0, CURLSSH_AUTH_AGENT and
        CURLSSLOPT_NO_REVOKE.


function_name: EventBuffer.read
version: PECL event 1.6.0
change:
Renamed EventBuffer::read(the old method
        name) to EventBuffer::read.
        EventBuffer::read now takes only
        max_bytes argument; returns string instead of
        integer.


function_name: EventDnsBase.__construct
version: PECL event 3.1.0RC1
change:
The type of the initialize parameter has been changed from bool
        to mixed. The value can be either bool (preserving the previous meaning)
        or one of the following constants:
        EventDnsBase::DISABLE_WHEN_INACTIVE,
        EventDnsBase::INITIALIZE_NAMESERVERS,
        or EventDnsBase::NAMESERVERS_NO_DEFAULT.


function_name: ldap_add_ext
version: 8.1.0
change:
The ldap parameter expects an LDAP\Connection
  instance now; previously, a valid ldap link resource was expected.


function_name: ldap_count_entries
version: 8.1.0
change:
The result parameter expects an LDAP\Result
  instance now; previously, a valid ldap result resource was expected.


function_name: ldap_first_attribute
version: 8.1.0
change:
The entry parameter expects an LDAP\ResultEntry
  instance now; previously, a valid ldap result entry resource was expected.


function_name: Memcache.delete
version: Unknown
change:
It's not recommended to use the timeout parameter. The
       behavior differs between memcached versions, but setting to 0
       is safe. Other values for this deprecated feature may cause the memcache delete
       to fail.


function_name: Memcached.get
version: PECL memcached 3.0.0
change:
The cas_token parameter was removed.
       Instead get_flags was added and when it is given the value of Memcached::GET_EXTENDED it will ensure the CAS token to be fetched.


function_name: Memcached.getMulti
version: PECL memcached 3.0.0
change:
The cas_tokens parameter was removed.
       The Memcached::GET_EXTENDED was added and when passed as a flag it ensures the CAS tokens to be fetched.


function_name: setcookie
version: 8.2.0
change:
The date format of the cookie is now 'D, d M Y H:i:s \G\M\T';
        previously it was 'D, d-M-Y H:i:s T'.


function_name: setcookie
version: 7.3.0
change:
An alternative signature supporting an options
        array has been added. This signature supports also setting of the
        SameSite cookie attribute.


function_name: socket_accept
version: 8.0.0
change:
On success, this function returns a Socket instance now;
       previously, a resource was returned.


function_name: socket_addrinfo_lookup
version: 8.0.0
change:
On success, this function returns a array of AddressInfo instances now;
       previously, an array of resources was returned.


function_name: socket_create_pair
version: 8.0.0
change:
pair is a reference to an array of Socket instances now;
       previously, it was a reference to an array of resources.


function_name: SolrClient.commit
version: PECL solr 2.0.0b
change:
API Changed: SolrClient::commit ([ int $maxSegments = 0 [, bool $softCommit = false [, bool $waitSearcher = true[, bool $expungeDeletes = false ]]] )


function_name: SolrClient.commit
version: PECL solr 0.9.2
change:
Signature: SolrClient::commit ([ int $maxSegments = 1 [, bool $waitFlush = true [, bool $waitSearcher = true ]]] ). 
        $waitFlush: Block until index changes are flushed to disk.


function_name: SolrQuery.__construct
version: PECL solr 2.0.0
change:
If q was invalid, then a
        SolrIllegalArgumentException is now thrown. Previously an error was emitted.


function_name: session_module_name
version: 7.2.0
change:
It is now explicitly forbidden to set the module name to
       "user". Formerly, this has been silently ignored.


function_name: session_name
version: 7.2.0
change:
session_name checks session status,
        previously it only checked cookie status. Therefore,
        older session_name allows to
        call session_name
        after session_start which may crash PHP
        and may result in misbehaviors.


function_name: session_set_cookie_params
version: 7.3.0
change:
An alternative signature supporting an lifetime_or_options
        array has been added. This signature supports also setting of the
        SameSite cookie attribute.


function_name: session_start
version: 7.1.0
change:
session_start now returns false and no longer
        initializes $_SESSION when it failed to start the
        session.


function_name: convert_uuencode
version: 8.0.0
change:
Prior to this version, trying to convert an empty string returned false
       for no particular reason.


function_name: explode
version: 8.0.0
change:
explode will now throw ValueError
       when separator parameter is given an empty string
       ("").
       Previously, explode returned false instead.


function_name: fprintf
version: 8.0.0
change:
Throw a ValueError if the number of arguments is zero;
       previously this function emitted a E_WARNING instead.


function_name: fprintf
version: 8.0.0
change:
Throw a ValueError if [width] is less than zero or bigger than PHP_INT_MAX;
       previously this function emitted a E_WARNING instead.


function_name: fprintf
version: 8.0.0
change:
Throw a ValueError if [precision] is less than zero or bigger than PHP_INT_MAX;
       previously this function emitted a E_WARNING instead.


function_name: fprintf
version: 8.0.0
change:
Throw a ArgumentCountError when less arguments are given than required;
       previously this function emitted a E_WARNING instead.


function_name: lcfirst
version: 8.2.0
change:
Case conversion no longer depends on the locale set with
   setlocale. Only ASCII characters will be converted.


function_name: levenshtein
version: 8.0.0
change:
Prior to this version, levenshtein would return -1
       if one of the argument strings is longer than 255 characters.


function_name: number_format
version: 7.2.0
change:
number_format was changed to not being able to return 
        -0, previously -0 could be returned 
        for cases like where num would be -0.01.


function_name: soundex
version: 8.0.0
change:
Prior to this version, calling the function with an empty string returned false
       for no particular reason.


function_name: str_getcsv
version: 7.4.0
change:
The escape parameter now interprets an empty
        string as signal to disable the proprietary escape mechanism. Formerly,
        an empty string was treated like the default parameter value.


function_name: str_ireplace
version: 8.2.0
change:
Case folding no longer depends on the locale set with
   setlocale. Only ASCII case folding will be done.
   Non-ASCII bytes will be compared by their byte value.


function_name: str_shuffle
version: 7.1.0
change:
The internal randomization algorithm has been changed to use the Mersenne Twister Random Number Generator instead of the libc rand function.


function_name: str_split
version: 8.2.0
change:
If string is empty an empty array is now returned.
       Previously an array containing a single empty string was returned.


function_name: str_split
version: 8.0.0
change:
If length is less than 1,
       a ValueError will be thrown now;
       previously, an error of level E_WARNING
       has been raised instead, and the function returned false.


function_name: substr
version: 8.0.0
change:
length is nullable now.
       When length is explicitly set to null,
       the function returns a substring finishing at the end of the string, when it previously returned an empty string.


function_name: utf8_decode
version: 7.2.0
change:
This function has been moved from the XML extension to the core of PHP.
        In previous versions, it was only available if the XML extension was installed.


function_name: vfprintf
version: 8.0.0
change:
Throw a ValueError when less arguments are given than required;
       previously this function emitted a E_WARNING instead.


function_name: array_chunk
version: 8.0.0
change:
If length is less than 1,
       a ValueError will be thrown now;
       previously, an error of level E_WARNING
       has been raised instead, and the function returned null.


function_name: array_column
version: 8.0.0
change:
Objects in columns indicated by index_key parameter
        will no longer be cast to string and will now throw a TypeError instead.


function_name: array_combine
version: 8.0.0
change:
array_combine will now throw a
       ValueError if the number of elements
       for each array is not equal;
       previously this function returned false instead.


function_name: array_diff_assoc
version: 8.0.0
change:
This function can now be called with only one parameter.
  Formerly, at least two parameters have been required.


function_name: array_fill
version: 8.0.0
change:
array_fill now throws a ValueError
       if count is out of range; previously E_WARNING
       was raised, and the function returned false.


function_name: array_filter
version: 8.0.0
change:
If callback expects a parameter to be passed
  by reference, this function will now emit an E_WARNING.


function_name: array_key_exists
version: 8.0.0
change:
The key parameter now accepts
       bool, float, int,
       null, resource, and
       string as arguments.


function_name: array_merge_recursive
version: 7.4.0
change:
This function can now be called without any parameter.
        Formerly, at least one parameter has been required.


function_name: array_pad
version: 8.3.0
change:
Prior to 8.3, only 1048576 elements could be added at once.
        Now it is limited only by the maximum size of an array instead.


function_name: array_product
version: 8.3.0
change:
Now emits E_WARNING when array values
        cannot be converted to int or float.
        Previously arrays and objects where ignored whilst every other value was cast to int.
        Moreover, objects that define a numeric cast (e.g. GMP) are now cast instead of ignored.


function_name: array_push
version: 7.3.0
change:
This function can now be called with only one parameter. Formerly, at
        least two parameters have been required.


function_name: array_rand
version: 8.0.0
change:
array_rand now throws a ValueError
        if num is out of range; previously an
        E_WARNING was raised, and the function returned null.


function_name: array_rand
version: 8.0.0
change:
array_rand now throws a ValueError
        if array is empty; previously an
        E_WARNING was raised, and the function returned null.


function_name: array_unique
version: 7.2.0
change:
If flags is SORT_STRING,
        formerly array has been copied and non-unique
        elements have been removed (without packing the array afterwards), but
        now a new array is built by adding the unique elements. This can result
        in different numeric indexes.


function_name: array_walk
version: 8.0.0
change:
If callback expects the second or third parameter to be passed
       by reference, this function will now emit an E_WARNING.


function_name: compact
version: 7.3.0
change:
compact now issues an E_NOTICE level error if a given string
       refers to an unset variable. Formerly, such strings have been silently skipped.


function_name: current
version: 8.1.0
change:
Calling this function on objects is deprecated.
  Either convert the object to an array using get_mangled_object_vars first, or use the methods
  provided by a class that implements Iterator, such as ArrayIterator, instead.


function_name: current
version: 7.4.0
change:
Instances of SPL classes are now treated like empty objects that have no properties instead of calling the Iterator method with the same name as this function.


function_name: list
version: 7.1.0
change:
It is now possible to specify keys in list. This
        enables destructuring of arrays with non-integer or non-sequential keys.


function_name: range
version: 8.3.0
change:
If both start and end
       are strings then range will now always produce
       an array of bytes.
       Previously if one of the boundary values was a numeric string,
       then the other boundary value was implicitly cast to int.


function_name: range
version: 8.3.0
change:
An E_WARNING is now emitted if
       start or end
       is a string that is implicitly cast to int
       because the other boundary value is a number.


function_name: range
version: 8.3.0
change:
An E_WARNING is now emitted if
       start or end
       is a non-numeric string with more than one byte.


function_name: range
version: 8.3.0
change:
A TypeError is now thrown if
       start or end
       is an array, object, or resource.
       Previously they were implicitly cast to int.


function_name: get_called_class
version: 8.0.0
change:
Calling this function from outside a class,
        will now throw an Error.
        Previously, an E_WARNING was raised
        and the function returned false.


function_name: get_class
version: 8.3.0
change:
Calling get_class without an argument now emits an
        E_DEPRECATED warning;
        previously, calling this function inside a class returned the name of that class.


function_name: get_class
version: 8.0.0
change:
Calling this function from outside a class, without any arguments,
        will now throw an Error.
        Previously, an E_WARNING was raised
        and the function returned false.


function_name: get_class
version: 7.2.0
change:
Prior to this version the default value for object
        was null and it had the same effect as not passing any value. Now
        null has been removed as the default value for object,
        and is no longer a valid input.


function_name: get_declared_classes
version: 7.4.0
change:
Previously get_declared_classes always returned parent classes before
       child classes. This is no longer the case. No particular order is guaranteed
       for the get_declared_classes return value.


function_name: get_parent_class
version: 8.3.0
change:
Calling get_parent_class without an argument now emits an
       E_DEPRECATED warning;
       previously, calling this function inside a class returned the name of that class.


function_name: ReflectionClass.getStaticProperties
version: 8.3.0
change:
The return type of ReflectionClass::getStaticProperties
       has been changed to array from ?array.


function_name: ReflectionClassConstant.getName
version: 8.1.0
change:
Throws an Error in case the name property has not been initialized.
       Previously, the method returned false on failure.


function_name: ReflectionEnum.getBackingType
version: 8.2.0
change:
The return type is now declared as ?ReflectionNamedType. Previously,
       ?ReflectionType was declared.


function_name: ReflectionParameter.getDefaultValue
version: 8.0.0
change:
This method now allows getting the default value of parameters of built-in functions and
        built-in class methods. Previously, a ReflectionException was thrown.


function_name: ReflectionParameter.getDefaultValueConstantName
version: 8.0.0
change:
This method now allows getting the default values' constant names of built-in functions and
        built-in class methods. Previously, a ReflectionException was thrown.


function_name: ReflectionProperty.getValue
version: 8.1.0
change:
Private and protected properties can be accessed by
       ReflectionProperty::getValue right away.
       Previously, they needed to be made accessible by calling
       ReflectionProperty::setAccessible; otherwise
       a ReflectionException was thrown.


function_name: ReflectionProperty.setValue
version: 8.3.0
change:
Calling this method with a single argument is deprecated,
       ReflectionClass::setStaticPropertyValue
       should be used instead to modify static properties.


function_name: ReflectionProperty.setValue
version: 8.1.0
change:
Private and protected properties can be accessed by
       ReflectionProperty::setValue right away.
       Previously, they needed to be made accessible by calling
       ReflectionProperty::setAccessible; otherwise
       a ReflectionException was thrown.


function_name: gettype
version: 7.2.0
change:
Closed resources are now reported as 'resource (closed)'.
        Previously the returned value for closed resources were 'unknown type'.


function_name: is_numeric
version: 8.0.0
change:
Numeric strings ending with whitespace ("42 ") will now
       return true. Previously, false was returned instead.


function_name: is_object
version: 7.2.0
change:
is_object now returns true for unserialized objects without 
        a class definition (class of __PHP_Incomplete_Class). Previously 
        false was returned.


function_name: unserialize
version: 8.3.0
change:
Now emits E_WARNING when the passed string is not unserializeable;
        previously E_NOTICE was emitted.


function_name: unserialize
version: 7.4.0
change:
Added the max_depth element of
        options to set the maximum depth of structures permitted during unserialization.


function_name: unserialize
version: 7.1.0
change:
The allowed_classes element of
        options) is now strictly typed, i.e. if anything
        other than an array or a bool is given,
        unserialize returns false and issues an
        E_WARNING.


function_name: var_export
version: 8.2.0
change:
Exported class names are now fully qualified; previously, the leading
        backslash was ommitted.


function_name: var_export
version: 7.3.0
change:
Now exports stdClass objects as an array cast to
        an object ((object) array( ... )), rather than using the
        nonexistent method stdClass::__setState.
        The practical effect is that now stdClass is
        exportable, and the resulting code will even work on earlier versions of
        PHP.


function_name: win32_continue_service
version: PECL win32service 1.0.0
change:
Throws a Win32ServiceException on error,
        previously a 
        Win32 Error Code
        was returned.


function_name: win32_create_service
version: PECL win32service 0.4.0
change:
The dependencies, recovery_delay,
        recovery_action_1, recovery_action_2,
        recovery_action_3, recovery_reset_period,
        recovery_enabled, recovery_reboot_msg
        and recovery_command parameters have been added.


function_name: DOMCharacterData.after
version: 8.3.0
change:
Calling this method on a node without a parent is now a no-op to align the behaviour with the DOM specification.
       Previously this threw a
 DOMException with code
 DOM_HIERARCHY_REQUEST_ERR.


function_name: DOMCharacterData.after
version: 8.3.0
change:
Calling this method on a node without an owner document now works.
       Previously this threw a
 DOMException with code
 DOM_HIERARCHY_REQUEST_ERR.


function_name: DOMDocument.createAttributeNS
version: 8.3.0
change:
Calling this method without specifying a prefix will now choose a prefix instead of assuming the default namespace.
       Previously this would create an attribute without a prefix and incorrectly apply the namespace
       to the owner element because default namespaces don't apply on attributes.


function_name: DOMDocument.createAttributeNS
version: 8.3.0
change:
Calling this method using a prefix that was already declared on the owner element with a different namespace URI
       will now change the new prefix to avoid creating namespace conflicts. This aligns the behaviour with the DOM specification.
       Previously this threw a DOMException with code DOM_NAMESPACE_ERR.


function_name: DOMDocument.load
version: 8.0.0
change:
Calling this function statically will
       now throw an Error.
       Previously, an E_DEPRECATED was raised.


function_name: DOMImplementation.createDocument
version: 8.0.0
change:
Calling this function statically will
        now throw an Error.
        Previously, an E_DEPRECATED was raised.


function_name: SimpleXMLElement.current
version: 8.1.0
change:
An Error is now thrown if
       SimpleXMLElement::current is called on an
       invalid iterator.  Previously, null was returned.


function_name: SimpleXMLElement.key
version: 8.1.0
change:
An Error is now thrown if
       SimpleXMLElement::key is called on an
       invalid iterator.  Previously, false was returned.


function_name: xml_parser_create_ns
version: 8.0.0
change:
This function returns an XMLParser instance now;
      previously, a resource was returned,  or false on failure.


function_name: xml_parser_set_option
version: 8.3.0
change:
The value parameter now also accepts booleans.
       The options XML_OPTION_CASE_FOLDING and XML_OPTION_SKIP_WHITE
       are now boolean options.


function_name: xml_set_external_entity_ref_handler
version: 7.3.0
change:
The return value of the handler is no longer
       ignored if the extension has been built against libxml. Formerly, the return
       value has been ignored, and parsing did never stop.


function_name: XMLReader.open
version: 8.0.0
change:
XMLReader::open is now declared as static method,
       but can still be called on an XMLReader instance.


function_name: XMLReader.XML
version: 8.0.0
change:
XMLReader::XML is now declared as static method,
       but can still be called on an XMLReader instance.


function_name: XMLWriter.openMemory
version: 8.0.0
change:
This function returns now an XMLWriter instance on success.
       Previouly, a resource has been returned in this case.


