summaryrefslogtreecommitdiff
path: root/UPGRADING
blob: 9b80b702a3e120794016b0234a77041ef129121d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
PHP 8.1 UPGRADE NOTES

1. Backward Incompatible Changes
2. New Features
3. Changes in SAPI modules
4. Deprecated Functionality
5. Changed Functions
6. New Functions
7. New Classes and Interfaces
8. Removed Extensions and SAPIs
9. Other Changes to Extensions
10. New Global Constants
11. Changes to INI File Handling
12. Windows Support
13. Other Changes
14. Performance Improvements

========================================
1. Backward Incompatible Changes
========================================

- Fileinfo:
  . The fileinfo functions now accept and return, respectively, finfo objects
    instead of resources.

- IMAP:
  . The IMAP functions now accept and return, respectively, IMAPConnection objects
    instead of resources.

- MySQLi:
  . mysqli_fetch_fields() and mysqli_fetch_field_direct() will now always return
    zero for max_length. You can compute this information by iterating over the
    result set and taking the maximum length. This is what PHP was doing
    internally previously.
  . The MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH option no longer has an effect.
  . The MYSQLI_STORE_RESULT_COPY_DATA option no longer has an effect.

- MySQLnd:
  . The mysqlnd.fetch_copy_data ini setting has been removed. However, this
    should not result in user-visible behavior changes.

- PDO:
  . PDO::ATTR_STRINGIFY_FETCHES now also stringifies values of type bool to
    "0" or "1". Previously booleans were not stringified.
  . Calling bindColumn() with PDO::PARAM_LOB (and assuming stringification is
    not enabled) will now consistently bind a stream result, as documented.
    Previously the result would be either a stream or a string depending on the
    used database driver and the time the binding is performed.

- PDO MySQL:
  . Integers and floats in result sets will now be returned using native PHP
    types instead of strings when using emulated prepared statements. This
    matches the behavior of native prepared statements. You can restore the
    previous behavior by enabling the PDO::ATTR_STRINGIFY_FETCHES option.

- Standard:
  . version_compare() no longer accepts undocumented operator abbreviations.

========================================
2. New Features
========================================

- hash:
  . The following functions have changed signatures:

    - function hash(string $algo, string $data, bool $binary = false, array $options = []): string|false {}
    - function hash_file(string $algo, string $filename, bool $binary = false, array $options = []): string|false {}
    - function hash_init(string $algo, int $flags = 0, string $key = "", array $options = []): HashContext {}

    The additional `$options` argument can be used to pass algorithm specific data.

  . Added MurmurHash3 with streaming support. The following variants are implemented:

    - murmur3a, 32-bit hash
    - murmur3c, 128-bit hash for x86
    - murmur3f, 128-bit hash for x64

    The initial hash state can be passed through the `seed` key in the `$options` array, for example:

    ```php
    $h = hash("murmur3f", $data, options: ["seed" => 42]);
    echo $h, "\n";
    ```

    A valid seed value is within the range from 0 to the plaform defined UINT_MAX, usually 4294967295.

========================================
3. Changes in SAPI modules
========================================

========================================
4. Deprecated Functionality
========================================

========================================
5. Changed Functions
========================================

========================================
6. New Functions
========================================

========================================
7. New Classes and Interfaces
========================================

========================================
8. Removed Extensions and SAPIs
========================================

========================================
9. Other Changes to Extensions
========================================

- MySQLi:
  . The mysqli_stmt::next_result() and mysqli::fetch_all() methods are now
    available when linking against libmysqlclient.

- OpenSSL:
  . The OpenSSL extension now requires at least OpenSSL version 1.0.2.

- Standard:
  . --with-password-argon2 now uses pkg-config to detect libargon2. As such,
    an alternative libargon2 location should now be specified using
    PKG_CONFIG_PATH.

========================================
10. New Global Constants
========================================

========================================
11. Changes to INI File Handling
========================================

========================================
12. Windows Support
========================================

. The macro IGNORE_URL_WIN has been removed; it had no effect as of PHP 5.0.0.

========================================
13. Other Changes
========================================

========================================
14. Performance Improvements
========================================