========================================
5. Changed Functions
========================================
- - get_headers() has an extra parameter which allows passing a custom stream
- context.
- - The first $varname argument for getenv() is no longer mandatory, the
- current environment variables will be returned as an associative array
- when omitted.
- - json_encode() accepts new option JSON_UNESCAPED_LINE_TERMINATORS that
- disables escaping of U+2028 and U+2029 characters when
- JSON_UNESCAPED_UNICODE is supplied.
- - long2ip() accepts integer as parameter now
- - pg_last_notice() accepts optional long parameter to specify operation.
- PGSQL_NOTICE_LAST - Get last notice (Default)
- PGSQL_NOTICE_ALL - Get all stored notices
- PGSQL_NOTICE_CLEAR - Remove all stored notices
- It returns empty string or array on successful PGSQL_NOTICE_LAST/ALL calls.
- It returned FALSE for empty notice previously.
- - pg_fetch_all() accepts 2nd optional result type parameter like
- pg_fetch_row().
- - pg_select() accepts 4th optional result type parameter like pg_fetch_row().
- - parse_url() is more restrictive now and supports RFC3986.
- - unpack() accepts an additional optional $offset argument. '@' format code
- (that specifes an absolute position) is applyed to input data after
- the $offset argument.
- - pack() and unpack() now support float and double in both little and big endian.
- - strpos(), stripos(), substr_count(), grapheme_strpos(), grapheme_stripos(),
- grapheme_extract(), iconv_strpos(), mb_strimwidth(), mb_ereg_search_setpos(),
- mb_strpos() and mb_stripos() now accept negative string offsets.
- - substr_count() and mb_strimwidth() additionally also accept negative length.
- - file_get_contents() accepts a negative seek offset if the stream is seekable.
+
+ - Standard:
+ . password_hash() can generate Argon2i hashes when the algorithm is set to PASSWORD_ARGON2I.
+ When using PASSWORD_ARGON2I, the following cost factors may be set: 'memory_cost', 'time_cost',
+ and 'threads'. These cost factors will default to 'PASSWORD_ARGON2_DEFAULT_MEMORY_COST',
+ 'PASSWORD_ARGON2_DEFAULT_TIME_COST', and 'PASSWORD_ARGON2_DEFAULT_THREADS' respectively if not set.
+ . password_verify() can verify Argon2i hashes.
+ . password_get_info() and password_needs_rehash() can accept Argon2i hashes.
+ . mail()/mb_send_mail() accept array $extra_header. Array paramter is checked against RFC 2822.
+ Array format is
+ $extra_headers = [
+ 'Header-Name' => 'Header value',
+ 'Multiple' => ['One header', 'Another header'],
+ 'Multiline' = "FirstLine\r\n SecondLine",
+ ];
+ . count() now raises a warning when an invalid parameter is passed.
+ Only arrays and objects implementing the Countable interface should be passed.
++ . pack() and unpack() now support float and double in both little and big endian.
+
+ - XML:
+ . utf8_encode() and utf8_decode() have been moved to the Standard extension
+ as string functions.
========================================
6. New Functions