forked from php/php-src
-
Notifications
You must be signed in to change notification settings - Fork 0
/
UPGRADING
166 lines (134 loc) · 5.42 KB
/
UPGRADING
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
PHP 8.3 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
========================================
- Core:
. Programs that were very close to overflowing the call stack may now throw an
Error when using more than
`zend.max_allowed_stack_size-zend.reserved_stack_size` bytes of stack
(`fiber.stack_size-zend.reserved_stack_size` for fibers).
========================================
2. New Features
========================================
- Posix
. posix_getrlimit() now takes an optional $res parameter to allow fetching a
single resource limit.
========================================
3. Changes in SAPI modules
========================================
========================================
4. Deprecated Functionality
========================================
========================================
5. Changed Functions
========================================
- Core:
. gc_status() has added the following 4 fields:
"running" => bool
"protected" => bool
"full" => bool
"buffer_size" => int
See GH-9336
- Standard:
. E_NOTICEs emitted by unserialized() have been promoted to E_WARNING.
RFC: https://wiki.php.net/rfc/improve_unserialize_error_handling
========================================
6. New Functions
========================================
- JSON:
. Added json_validate(), which returns whether the json is valid for
the given $depth and $options.
RFC: https://wiki.php.net/rfc/json_validate
- Posix:
. Added posix_sysconf call to get runtime informations.
- Random:
. Added Randomizer::getBytesFromString().
RFC: https://wiki.php.net/rfc/randomizer_additions
. Added Randomizer::nextFloat(), ::getFloat(), and IntervalBoundary.
RFC: https://wiki.php.net/rfc/randomizer_additions
- Sockets:
. Added socket_atmark to checks if the socket is OOB marked.
========================================
7. New Classes and Interfaces
========================================
========================================
8. Removed Extensions and SAPIs
========================================
========================================
9. Other Changes to Extensions
========================================
========================================
10. New Global Constants
========================================
- PCNTL:
. SIGINFO
- Posix:
. POSIX_SC_ARG_MAX
. POSIX_SC_PAGESIZE
. POSIX_SC_NPROCESSORS_CONF
. POSIX_SC_NPROCESSORS_ONLN
- Sockets:
. SO_ATTACH_REUSEPORT_CBPF (Linux only).
. TCP_QUICKACK (Linux only).
========================================
11. Changes to INI File Handling
========================================
- zend.max_allowed_stack_size
. New INI directive to set the maximum allowed stack size. Possible
values are `0` (detect the process or thread maximum stack size), `-1`
(no limit), or a positive number of bytes. The default is `0`. When it
is not possible to detect the the process or thread maximum stack size,
a known system default is used. Setting this value too high has the same
effect as disabling the stack size limit. Fibers use fiber.stack_size
as maximum allowed stack size. An Error is thrown when the process call
stack exceeds `zend.max_allowed_stack_size-zend.reserved_stack_size`
bytes, to prevent stack-overflow-induced segmentation faults, with
the goal of making debugging easier. The stack size increases during
uncontrolled recursions involving internal functions or the magic methods
__toString, __clone, __sleep, __destruct. This is not related to stack
buffer overflows, and is not a security feature.
- zend.reserved_stack_size
. New INI directive to set the reserved stack size, in bytes. This is
subtracted from the max allowed stack size, as a buffer, when checking the
stack size.
========================================
12. Windows Support
========================================
========================================
13. Other Changes
========================================
- Core:
. An Error is now thrown when the process call stack exceeds a certain size,
to prevent stack-overflow-induced segmentation faults, with the goal of
making debugging easier. The maximum allowed stack size is controlled
by the INI directives zend.max_allowed_stack_size, zend.reserved_stack_size,
and fiber.stack_size.
- FFI:
. FFI::load() is now allowed during preloading when opcache.preload_user is the
current system user. Previously, calling FFI::load() was not possible during
preloading if the opcache.preload_user directive was set.
- Opcache:
. In the cli and phpdbg SAPIs, preloading does not require the
opcache.preload_user directive to be set anymore when running as root. In
other SAPIs, this directive is required when running as root because
preloading is done before the SAPI switches to an unprivileged user.
- Streams:
. Blocking fread() on socket connection returns immediately if there are
any buffered data instead of waiting for more data.
========================================
14. Performance Improvements
========================================