]>
granicus.if.org Git - php/log
Dmitry Stogov [Fri, 29 Nov 2019 16:07:17 +0000 (19:07 +0300)]
Refactor JIT to reduce back-end dependency from SSA representation.
This commit shouldn't change JIT behavior, but it adds asserts, that may catch wrong-cases occasionally passed before.
Christoph M. Becker [Fri, 29 Nov 2019 16:01:11 +0000 (17:01 +0100)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Adapt test cases for Oniguruma 6.9.4
Christoph M. Becker [Fri, 29 Nov 2019 16:00:11 +0000 (17:00 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
Adapt test cases for Oniguruma 6.9.4
Christoph M. Becker [Fri, 29 Nov 2019 15:47:10 +0000 (16:47 +0100)]
Adapt test cases for Oniguruma 6.9.4
Apparently, bug 78633 has now really been fixed; the former fix only
catered to the buffer overflow, but yielded a wrong result. Also,
the order of the named captures has been fixed.
Dmitry Stogov [Fri, 29 Nov 2019 14:43:36 +0000 (17:43 +0300)]
Don't keep QM_ASSIGN with IS_UNUSED result
Tyson Andre [Thu, 28 Nov 2019 14:14:06 +0000 (09:14 -0500)]
Remove no-op check for 'use strict;'
This should be checking for ZEND_SYMBOL_CLASS, not T_CLASS.
This was first added in
37ac1b96ed1
Dmitry Stogov [Thu, 28 Nov 2019 10:23:17 +0000 (13:23 +0300)]
typos
Dmitry Stogov [Wed, 27 Nov 2019 13:48:01 +0000 (16:48 +0300)]
Fixed wrong parameteris order
Dmitry Stogov [Wed, 27 Nov 2019 13:26:43 +0000 (16:26 +0300)]
Fixed register allocation
Christoph M. Becker [Wed, 27 Nov 2019 13:05:47 +0000 (14:05 +0100)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Prevent parallel test conflicts
Christoph M. Becker [Wed, 27 Nov 2019 13:02:44 +0000 (14:02 +0100)]
Prevent parallel test conflicts
The better solution would be to actually use different directory names,
but adding respective CONFLICTS sections solves the issue for now.
Dmitry Stogov [Wed, 27 Nov 2019 11:31:24 +0000 (14:31 +0300)]
Fixed JIT for LONG->DOUBLE conversion when optimizer disabled
Christoph M. Becker [Wed, 27 Nov 2019 08:34:57 +0000 (09:34 +0100)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Fix #78840: imploding $GLOBALS crashes
Christoph M. Becker [Wed, 27 Nov 2019 08:33:36 +0000 (09:33 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
Fix #78840: imploding $GLOBALS crashes
Christoph M. Becker [Tue, 26 Nov 2019 09:19:27 +0000 (10:19 +0100)]
Fix #78840: imploding $GLOBALS crashes
We add support for IS_INDIRECT zvals to implode().
Dmitry Stogov [Tue, 26 Nov 2019 13:45:19 +0000 (16:45 +0300)]
Fixed incorrect JIT compilation
avkarenow [Tue, 26 Nov 2019 04:35:32 +0000 (05:35 +0100)]
Open opcache.error_log with 'a' flag
When opcache.error_log is set to log to file the read flag is not needed and used.
Christoph M. Becker [Mon, 25 Nov 2019 14:58:45 +0000 (15:58 +0100)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Fix #77638: var_export'ing certain class instances segfaults
Christoph M. Becker [Mon, 25 Nov 2019 14:57:13 +0000 (15:57 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
Fix #77638: var_export'ing certain class instances segfaults
Christoph M. Becker [Mon, 25 Nov 2019 14:44:15 +0000 (15:44 +0100)]
Fix #77638: var_export'ing certain class instances segfaults
If objects return immutable property hash tables (typically,
`zend_empty_array`), we must not try to apply recursion protection on
those.
Dmitry Stogov [Mon, 25 Nov 2019 11:10:53 +0000 (14:10 +0300)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Fixed bug #78868 (Calling __autoload() with incorrect EG(fake_scope) value)
Consolidate NEWS for 7.4.0 release
WIP: Merge NEWS
Dmitry Stogov [Mon, 25 Nov 2019 11:09:18 +0000 (14:09 +0300)]
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
Fixed bug #78868 (Calling __autoload() with incorrect EG(fake_scope) value)
Dmitry Stogov [Mon, 25 Nov 2019 11:05:43 +0000 (14:05 +0300)]
Fixed bug #78868 (Calling __autoload() with incorrect EG(fake_scope) value)
Christoph M. Becker [Sun, 24 Nov 2019 11:19:49 +0000 (12:19 +0100)]
Document the need for merging NEWS sections before x.y.0
Derick Rethans [Sun, 24 Nov 2019 09:23:33 +0000 (10:23 +0100)]
Consolidate NEWS for 7.4.0 release
Derick Rethans [Sat, 23 Nov 2019 19:00:51 +0000 (20:00 +0100)]
WIP: Merge NEWS
Tyson Andre [Sat, 23 Nov 2019 15:46:28 +0000 (10:46 -0500)]
Merge branch 'PHP-7.4'
Tyson Andre [Wed, 20 Nov 2019 00:12:56 +0000 (19:12 -0500)]
Handle reallocated root buffer during GC destroy phase (v2)
We no longer protect GC during the destroy phase, so we need to
deal with buffer reallocation.
Note that the implementation of spl_SplObjectStorage_free_storage
will call the destructor of SplObjectStorage, and free the instance properties,
which I think is what caused the root buffer to be reallocated.
(`current` is a pointer for an index within the root buffer?)
This fixes bug #78811 for me.
Closes GH-4935
Tyson Andre [Wed, 20 Nov 2019 00:12:56 +0000 (19:12 -0500)]
Handle reallocated root buffer during GC destroy phase (v2)
We no longer protect GC during the destroy phase, so we need to
deal with buffer reallocation.
Note that the implementation of spl_SplObjectStorage_free_storage
will call the destructor of SplObjectStorage, and free the instance properties,
which I think is what caused the root buffer to be reallocated.
(`current` is a pointer for an index within the root buffer?)
This fixes bug #78811 for me.
Closes GH-4935
Christoph M. Becker [Fri, 22 Nov 2019 18:30:43 +0000 (19:30 +0100)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Fix #78853: preg_match() may return integer > 1
Christoph M. Becker [Fri, 22 Nov 2019 18:28:49 +0000 (19:28 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
Fix #78853: preg_match() may return integer > 1
Christoph M. Becker [Fri, 22 Nov 2019 18:21:43 +0000 (19:21 +0100)]
Fix #78853: preg_match() may return integer > 1
Commit
54ebebd [1] optimized the match loop, but for this case it has
been overlooked, that we must only loop if we're doing global matching.
[1] <http://git.php.net/?p=php-src.git;a=commit;h=
54ebebd686255c5f124af718c966edb392782d4a >
George Peter Banyard [Wed, 20 Nov 2019 22:35:03 +0000 (23:35 +0100)]
Promote warning to value error in strpbrk()
Closes GH-4598
George Wang [Thu, 21 Nov 2019 22:59:05 +0000 (17:59 -0500)]
Merge branch 'PHP-7.4'
George Wang [Thu, 21 Nov 2019 22:58:44 +0000 (17:58 -0500)]
Merge branch 'PHP-7.3' into PHP-7.4
George Wang [Thu, 21 Nov 2019 22:58:16 +0000 (17:58 -0500)]
Merge branch 'PHP-7.2' into PHP-7.3
George Wang [Thu, 21 Nov 2019 22:57:50 +0000 (17:57 -0500)]
Added environment LSAPI_CLEAN_SHUTDOWN to control clean shutdown. Update SAPI version to LiteSpeed v7.6 .
Christoph M. Becker [Thu, 21 Nov 2019 12:40:36 +0000 (13:40 +0100)]
Make test more resilient
`socket_bind()` may raise `E_WARNING` on failure, which would cause the
test to be marked as borked. Since we're checking the return value
anyway, we can silence warnings.
Christoph M. Becker [Thu, 21 Nov 2019 09:04:03 +0000 (10:04 +0100)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Fix #78849: GD build broken with -D SIGNED_COMPARE_SLOW
Christoph M. Becker [Thu, 21 Nov 2019 09:02:12 +0000 (10:02 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
Fix #78849: GD build broken with -D SIGNED_COMPARE_SLOW
Christoph M. Becker [Thu, 21 Nov 2019 09:00:31 +0000 (10:00 +0100)]
Merge branch 'PHP-7.2' into PHP-7.3
* PHP-7.2:
Fix #78849: GD build broken with -D SIGNED_COMPARE_SLOW
Christoph M. Becker [Thu, 21 Nov 2019 08:49:29 +0000 (09:49 +0100)]
Fix #78849: GD build broken with -D SIGNED_COMPARE_SLOW
Apparently, this has not been tested for a long time, and might be a
refactoring relict. Anyhow, we have to pass the context to
`GIFNextPixel` as well.
Adam Harvey [Wed, 20 Nov 2019 23:39:51 +0000 (15:39 -0800)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Make the UPGRADING note about ArrayObject more explicit.
Adam Harvey [Wed, 20 Nov 2019 23:33:04 +0000 (15:33 -0800)]
Make the UPGRADING note about ArrayObject more explicit.
We noticed the BC break when testing `curl_setopt()`, and hadn't interpreted
this note as affecting internal functions in general, so this adds a sub-bullet
to note that.
This overlaps a bit with the previous bullet, but since I don't know exactly
which operations were in mind at the time, I've elected to preserve them both.
Bits are cheap.
Tyson Andre [Tue, 19 Nov 2019 13:58:48 +0000 (08:58 -0500)]
Make opcache infer array_key_exists is non-null bool
array_key_exists now throws a TypeError instead of returning null
for invalid arguments after
14bdb0cfc7b62205c75f6d5c783e343259796776
Fabien Villepinte [Tue, 19 Nov 2019 18:48:13 +0000 (19:48 +0100)]
Fix typo with msgfmt_parse_message()
Craig Duncan [Sun, 27 Oct 2019 22:18:42 +0000 (22:18 +0000)]
Convert apache2handler arginfo to php stubs
Michael Voříšek [Mon, 18 Nov 2019 12:35:55 +0000 (13:35 +0100)]
Remove clearstatcache function prototype defned twice
Fabien Villepinte [Mon, 18 Nov 2019 11:53:36 +0000 (12:53 +0100)]
Fix typo in pcntl_sigwaitinfo proto
Christoph M. Becker [Mon, 18 Nov 2019 11:49:28 +0000 (12:49 +0100)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Update NEWS
Christoph M. Becker [Mon, 18 Nov 2019 11:48:31 +0000 (12:48 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
Update NEWS
Christoph M. Becker [Mon, 18 Nov 2019 11:47:29 +0000 (12:47 +0100)]
Merge branch 'PHP-7.2' into PHP-7.3
* PHP-7.2:
Update NEWS
Christoph M. Becker [Mon, 18 Nov 2019 11:36:01 +0000 (12:36 +0100)]
Update NEWS
Fabien Villepinte [Mon, 18 Nov 2019 11:46:05 +0000 (12:46 +0100)]
Fix proto of forward_static_call_array
Closes GH-4928.
Máté Kocsis [Sat, 16 Nov 2019 17:40:06 +0000 (18:40 +0100)]
Add union return types with one class
Máté Kocsis [Wed, 9 Oct 2019 07:50:18 +0000 (09:50 +0200)]
Add stubs for PDO
Craig Duncan [Sun, 17 Nov 2019 16:14:09 +0000 (16:14 +0000)]
Convert the example skeleton extension to use arginfo stubs
Tyson Andre [Sat, 16 Nov 2019 02:29:46 +0000 (21:29 -0500)]
Speed up foreach/FE_FREE (optimize for arrays without gc)
In the case where there are still references to an array being iterated
over when the iterator is freed (or the array is not reference counted):
- There's need to save the opline.
- There's no need to check for exceptions.
```
// Before: 0.404 seconds
// After: 0.362 seconds
// loop_iter_empty(1000, 5000);
function loop_iter_empty(int $a, int $b) {
$values = array_fill(0, $b, []);
$total = 0;
for ($i = 0; $i < $b; $i++) {
foreach ($values as $v) {
foreach ($v as $x) {
$total += $x;
}
}
}
return $total;
}
```
Dmitry Stogov [Mon, 18 Nov 2019 08:29:38 +0000 (11:29 +0300)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Fix $x = (bool)$x; for undefined with opcache
Dmitry Stogov [Mon, 18 Nov 2019 08:27:43 +0000 (11:27 +0300)]
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
Fix $x = (bool)$x; for undefined with opcache
Dmitry Stogov [Mon, 18 Nov 2019 08:26:30 +0000 (11:26 +0300)]
Merge branch 'PHP-7.2' into PHP-7.3
* PHP-7.2:
Fix $x = (bool)$x; for undefined with opcache
Tyson Andre [Fri, 15 Nov 2019 17:47:32 +0000 (12:47 -0500)]
Fix $x = (bool)$x; for undefined with opcache
And `$x = !$x`
Noticed while working on GH-4912
The included test would not emit undefined variable errors in php 8.0
with opcache enabled. The command used:
```
php -d zend_extension=opcache.so --no-php-ini -d error_reporting=E_ALL \
-d opcache.file_cache= -d opcache.enable_cli=1 test.php
```
Jakub Zelenka [Sun, 17 Nov 2019 14:53:53 +0000 (14:53 +0000)]
Merge branch 'PHP-7.4'
Jakub Zelenka [Sun, 17 Nov 2019 14:52:36 +0000 (14:52 +0000)]
Add NEWS entry for bug #76601 fix
Maksim Nikulin [Mon, 21 Oct 2019 07:23:29 +0000 (14:23 +0700)]
Do not let PHP-FPM children miss SIGTERM, SIGQUIT
Postpone signal delivery while spawning children.
Prevent the following case:
- Reload (reexec) is in progress.
- New master is forking to start enough children for pools
where `pm` is not `on-demand`.
- Another `SIGUSR2` is received by the master process.
- Master process switches to reloading state.
- Some child has not set its own signal handlers.
- `SIGQUIT` and `SIGTERM` sent by master process are caught
by signal handler set by master process and so they are ignored.
- A child is running, it has no reason to finish
Before pull request #4465 this scenario could cause deadlock,
however with
0ed6c37140 reload finishes after `SIGKILL`.
Use sigprocmask() around fork() to avoid race of delivery signal to children
and setting of own signal handlers.
Fixes bug #76601
Christoph M. Becker [Sat, 16 Nov 2019 17:20:14 +0000 (18:20 +0100)]
Add missing zend_parse_parameters_none()
Máté Kocsis [Mon, 11 Nov 2019 19:46:50 +0000 (20:46 +0100)]
Add stubs for the Locale component of Intl
Nikita Popov [Fri, 15 Nov 2019 16:33:37 +0000 (17:33 +0100)]
Support union types for args in gen stubs
Using this requires care! The zpp implementation for this union
must be consistent with the arginfo implementation!
Apart from array|object, this is probably only the case for
int|float right now.
Nikita Popov [Fri, 15 Nov 2019 11:50:44 +0000 (12:50 +0100)]
Support single class unions in gen stubs
Nikita Popov [Fri, 15 Nov 2019 15:02:26 +0000 (16:02 +0100)]
Fix DateTimeImmutable stubs
These were referencing the arginfo from the functions, instead of
the methods, which isn't right, as the functions have return types.
Nikita Popov [Fri, 15 Nov 2019 14:54:46 +0000 (15:54 +0100)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Handle reallocated root buffer during GC destroy phase
Zend Engine version is no longer in -dev
Nikita Popov [Fri, 15 Nov 2019 14:53:49 +0000 (15:53 +0100)]
Handle reallocated root buffer during GC destroy phase
We no longer protect GC during the destroy phase, so we need to
deal with buffer reallocation.
Possible fix for bug #78811.
Tyson Andre [Wed, 13 Nov 2019 14:10:22 +0000 (09:10 -0500)]
Support the same handler for multiple opcodes
Tyson Andre [Wed, 13 Nov 2019 06:12:49 +0000 (01:12 -0500)]
Optimize int === int/double === double
Do this by reusing the implementation used for `==`
when both arguments are ints (IS_LONG) or both are floats (IS_DOUBLE)
```php
// Before: nestedloop_ni took 0.442 seconds
// After: nestedloop_ni takes 0.401 seconds (same as nestedloop_ne)
function nestedloop_ni(int $k) {
$x = 0;
for ($i=0; $i <
50000000 ; $i++) {
if ($i === $k) {
$x++;
}
}
print "$x\n";
}
function nestedloop_ne(int $k) {
$x = 0;
for ($i=0; $i <
50000000 ; $i++) {
if ($i == $k) {
$x++;
}
}
print "$x\n";
}
```
Derick Rethans [Fri, 15 Nov 2019 14:27:20 +0000 (14:27 +0000)]
Zend Engine version is no longer in -dev
Derick Rethans [Fri, 15 Nov 2019 14:22:41 +0000 (14:22 +0000)]
Merge branch 'PHP-7.4'
Derick Rethans [Fri, 15 Nov 2019 14:22:14 +0000 (14:22 +0000)]
PHP-7.4 is now 7.4.1-dev
Nikita Popov [Fri, 15 Nov 2019 11:43:22 +0000 (12:43 +0100)]
password_hash() can't return false
Nikita Popov [Fri, 15 Nov 2019 11:37:24 +0000 (12:37 +0100)]
Fix str_pad rc info
This fixes at least part of bug #78811.
Nikita Popov [Fri, 15 Nov 2019 11:07:24 +0000 (12:07 +0100)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Fixed bug #78810
Nikita Popov [Fri, 15 Nov 2019 11:06:17 +0000 (12:06 +0100)]
Fixed bug #78810
Christoph M. Becker [Fri, 15 Nov 2019 08:48:02 +0000 (09:48 +0100)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Fix ASLR related invalid opline handler issues
Christoph M. Becker [Fri, 15 Nov 2019 08:47:34 +0000 (09:47 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
Fix ASLR related invalid opline handler issues
Christoph M. Becker [Tue, 12 Nov 2019 15:12:59 +0000 (16:12 +0100)]
Fix ASLR related invalid opline handler issues
Opcache stores `opline->handler`s in shared memory. These pointers are
invalid, if the main PHP DLL is loaded at another base address due to
ASLR. We therefore store the address of `execute_ex` in the mmap base
file, and check on startup whether it matches its current address. If
not, we fall back on the file cache if enabled, and bail out otherwise.
This still does not address cases where the opline handler is located
inside of another DLL (e.g. for some profilers, debuggers), but there
seems to be no general solution for now.
(cherry picked from commit
8ba10b8fbc020dc225d3b19d8f088f1351a3e304 )
Christoph M. Becker [Thu, 14 Nov 2019 08:46:43 +0000 (09:46 +0100)]
Make the $num_points parameter of php_imagepolygon optional
That parameter is mostly useless in practise, and likely has been
directly ported from the underlying `gdImagePolygon()` and friends,
which require that parameter since the number of elements of the point
array would otherwise be unknown. Typical usages of `imagepolygon()`,
`imageopenpolygon()` and `imagefilledpolygon()` pass `count($points)/2`
or hard-code this value as literal. Since explicitly specifying this
parameter is annoying and error-prone, we offer the possibility to omit
it, in which case the `$points` array must have an even number of
elements, and the number of points is calculated as `count($points)/2`.
Fabien Villepinte [Wed, 13 Nov 2019 20:15:59 +0000 (21:15 +0100)]
Merge branch 'PHP-7.4'
Fabien Villepinte [Wed, 13 Nov 2019 19:59:23 +0000 (20:59 +0100)]
Add more CONFLICTS tags
Closes GH-4908.
Dmitry Stogov [Tue, 12 Nov 2019 10:49:55 +0000 (13:49 +0300)]
Optimize $x === null into is_null($x)
Dmitry Stogov [Tue, 12 Nov 2019 10:00:37 +0000 (13:00 +0300)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Fixed wrong constant usage
Dmitry Stogov [Tue, 12 Nov 2019 10:00:27 +0000 (13:00 +0300)]
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
Fixed wrong constant usage
Dmitry Stogov [Tue, 12 Nov 2019 09:59:50 +0000 (12:59 +0300)]
Fixed wrong constant usage
Dmitry Stogov [Tue, 12 Nov 2019 07:52:09 +0000 (10:52 +0300)]
Merge branch 'PHP-7.4'
* PHP-7.4:
ws
Dmitry Stogov [Tue, 12 Nov 2019 07:51:55 +0000 (10:51 +0300)]
ws
Dmitry Stogov [Tue, 12 Nov 2019 07:42:29 +0000 (10:42 +0300)]
Fixed JIT for TYPE_CHECK opcode (exception handling in case of undefined argument)
Tyson Andre [Tue, 12 Nov 2019 00:56:20 +0000 (19:56 -0500)]
Optimize is_scalar($x) into a TYPE_CHECK opcode
Optimizations such as specializations for is_resource were first added in
dfb4f6b38d9efedafab7d2d98b9333715561256
I don't see any mention of is_scalar (and optimizing it) in the commit history,
or in prior PRs on github, or searching for is_scalar in externals.io
Stanislav Malyshev [Tue, 12 Nov 2019 07:08:52 +0000 (23:08 -0800)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Fix bug #78804 - Segmentation fault in Locale::filterMatches
Stanislav Malyshev [Tue, 12 Nov 2019 07:08:44 +0000 (23:08 -0800)]
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
Fix bug #78804 - Segmentation fault in Locale::filterMatches
Stanislav Malyshev [Tue, 12 Nov 2019 07:08:38 +0000 (23:08 -0800)]
Merge branch 'PHP-7.2' into PHP-7.3
* PHP-7.2:
Fix bug #78804 - Segmentation fault in Locale::filterMatches
Stanislav Malyshev [Tue, 12 Nov 2019 06:30:08 +0000 (22:30 -0800)]
Fix bug #78804 - Segmentation fault in Locale::filterMatches
Christoph M. Becker [Mon, 11 Nov 2019 17:08:00 +0000 (18:08 +0100)]
Make test more resilient
`socket_bind()` may raise `E_WARNING` on failure, which would cause the
test to fail.