]>
granicus.if.org Git - php/log
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.
Christoph M. Becker [Mon, 11 Nov 2019 14:56:44 +0000 (15:56 +0100)]
Fix clean section of test case
Christoph M. Becker [Mon, 11 Nov 2019 14:39:52 +0000 (15:39 +0100)]
iconv_strlen() cannot return a string
Máté Kocsis [Fri, 8 Nov 2019 22:29:12 +0000 (23:29 +0100)]
Add union return types for function stubs
Christoph M. Becker [Mon, 11 Nov 2019 11:56:32 +0000 (12:56 +0100)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Fix test case for Windows
Christoph M. Becker [Mon, 11 Nov 2019 11:48:17 +0000 (12:48 +0100)]
Fix test case for Windows
Christoph M. Becker [Mon, 11 Nov 2019 11:34:50 +0000 (12:34 +0100)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Fix test cases which fail on Windows debug builds
Christoph M. Becker [Mon, 11 Nov 2019 11:14:05 +0000 (12:14 +0100)]
Fix test cases which fail on Windows debug builds
We use the portable {TMP} instead of the hard-coded /tmp, and skip
mysqli_debug_append.phpt on Windows, because unlinking the trace file
while the connection is still open won't work there.
Christoph M. Becker [Mon, 11 Nov 2019 09:57:13 +0000 (10:57 +0100)]
Properly declare methods
While declaring methods with `PHP_FALIAS` kind of works, it is
semantically confusing, and also doesn't allow to specify access flags.
Dmitry Stogov [Mon, 11 Nov 2019 09:09:47 +0000 (12:09 +0300)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Fixed bug #78714 (funcs returning pointer can't use call convention spec)
Dmitry Stogov [Mon, 11 Nov 2019 09:07:48 +0000 (12:07 +0300)]
Fixed bug #78714 (funcs returning pointer can't use call convention spec)
Christoph M. Becker [Mon, 11 Nov 2019 09:06:21 +0000 (10:06 +0100)]
Revert "Fix #78790: mysqli_get_client_info() expects exactly 0 parameters"
This reverts commit
87fad8cdf0b978bb7dca5123cb77efd1449c0132 , since,
apparently, `mysqli_get_client_info()` is also supposed to be called
without argument.
Christoph M. Becker [Mon, 11 Nov 2019 08:58:10 +0000 (09:58 +0100)]
Fix #78790: mysqli_get_client_info() expects exactly 0 parameters
`mysqli_get_client_info()` and `mysqli_thread_safe()` can also be
called as methods, so we have to cater to this when parsing the
arguments.
Benjamin Eberlei [Sat, 9 Nov 2019 20:30:25 +0000 (21:30 +0100)]
Merge branch 'DomFaliasCleanup'
Benjamin Eberlei [Sat, 9 Nov 2019 19:36:15 +0000 (20:36 +0100)]
ext/dom: Replace usages of PHP_FUNCTION and aliases with PHP_METHOD.
Benjamin Eberlei [Sat, 9 Nov 2019 14:16:09 +0000 (15:16 +0100)]
Merge branch 'dom-arginfo-stubs'
Fabien Villepinte [Sat, 9 Nov 2019 12:56:23 +0000 (13:56 +0100)]
Merge branch 'PHP-7.4'
Fabien Villepinte [Sat, 9 Nov 2019 12:55:42 +0000 (13:55 +0100)]
Fix conflicts in windows ACL tests
Closes GH-4898.
Fabien Villepinte [Fri, 8 Nov 2019 19:36:55 +0000 (20:36 +0100)]
Merge branch 'PHP-7.4'
Fabien Villepinte [Fri, 8 Nov 2019 19:33:19 +0000 (20:33 +0100)]
Make test runner runnable without arguments
The default PHP executable was not set when no args were provided.
Closes GH-4894.
Nikita Popov [Fri, 8 Nov 2019 14:38:00 +0000 (15:38 +0100)]
Add support for union types in stubs
This is the MVP for supporting union types in PHP stubs. Return
types with only builtin types work, which is the part we mainly
need.
Closes GH-4895.
Tyson Andre [Fri, 8 Nov 2019 14:58:05 +0000 (09:58 -0500)]
Fix compile error using zend_parse_parameters_throw()
Fixes a bug introduced in
4008704f62
The trailing comma is followed by `)` when the varargs list
is empty in the macro, which is a syntax error in C
This fixes compilation of code such as the following
PHP_FUNCTION(get_metadata) {
if (zend_parse_parameters_throw(ZEND_NUM_ARGS(), "") == FAILURE) {
return;
}
Closes GH-4896.
Levi Morrison [Fri, 8 Nov 2019 15:04:52 +0000 (08:04 -0700)]
Merge branch 'PHP-7.4'
Levi Morrison [Fri, 8 Nov 2019 15:02:49 +0000 (08:02 -0700)]
Merge branch 'PHP-7.3' into PHP-7.4
Levi Morrison [Thu, 7 Nov 2019 21:51:21 +0000 (14:51 -0700)]
Wrap php_random.h in C++ portability macros
Also remove portability headers. This goes against the existing
conventions of these files.
Nikita Popov [Wed, 25 Sep 2019 11:21:13 +0000 (13:21 +0200)]
Implement union types
According to RFC: https://wiki.php.net/rfc/union_types_v2
The type representation now makes use of both the pointer payload
and the type mask at the same time. Additionall, zend_type_list is
introduced as a new kind of pointer payload, which is used to store
multiple class types. Each of the class types is a tagged pointer,
which may be either a class name or class entry. The latter is only
used for typed properties, while arguments/returns will instead use
cache slots. A type list can contain a mix of both names and CEs at
the same time, as not all classes may be resolvable.
One thing this is missing is support for union types in arginfo
and stubs, which I want to handle separately.
I've also dropped the special object code from the JIT implementation
for now -- I plan to add this back in a different form at a later time.
For now I did not want to include non-trivial JIT changes together
with large functional changes.
Another possible piece of follow-up work is to implement "iterable"
as an internal alias for "array|Traversable". I believe this will
eliminate quite a few special-cases that had to be implemented.
Closes GH-4838.
Nikita Popov [Fri, 20 Sep 2019 15:01:19 +0000 (17:01 +0200)]
Make zend_type a 2-field struct
We now store the pointer payload and the type mask separately. This
is in preparation for union types, where we will be using both at
the same time.
To avoid increasing the size of arginfo structures, the
pass_by_reference and is_variadic fields are now stored as part of
the type_mask (8-bit are reserved for custom use).
Different types of pointer payloads are distinguished based on bits
in the type_mask.
Benjamin Eberlei [Fri, 8 Nov 2019 14:05:35 +0000 (15:05 +0100)]
Convert ext/dom to use arginfo stub.
Fabien Villepinte [Thu, 7 Nov 2019 20:31:47 +0000 (21:31 +0100)]
Clean DONE tags from tests
Remove most of the `===DONE===` tags and its variations.
Keep `===DONE===` if the test output otherwise becomes empty.
Closes GH-4872.
Nikita Popov [Thu, 7 Nov 2019 20:07:58 +0000 (21:07 +0100)]
Reduce reallocations in exif parsing
Instead of reallocating lists element by element, increase the
allocated list size exponentially.
Nikita Popov [Thu, 7 Nov 2019 19:47:04 +0000 (20:47 +0100)]
Reduce size limit in parser fuzzer
Avoid stack overflows during compilation of deeply nested
expressions.
Máté Kocsis [Fri, 1 Nov 2019 14:00:14 +0000 (15:00 +0100)]
Add stubs for standard lib functions
Máté Kocsis [Thu, 7 Nov 2019 00:11:57 +0000 (01:11 +0100)]
Promote register_tick_function() callback validation warning to an exception
Máté Kocsis [Thu, 7 Nov 2019 00:10:52 +0000 (01:10 +0100)]
Remove PHP_SLEEP_NON_VOID as it is not useful anymore
Nikita Popov [Fri, 11 Oct 2019 13:32:02 +0000 (15:32 +0200)]
Add compile warning for "confusable" types
We have a number of "types" like integer which are not actually
supported as builtin types -- instead they are silently interpreted
as class types.
I've seen this cause confusion a few types already. This change adds
a warning in this case. In the unlikely case that someone legitimately
wants to type against an integer class, the warning can be suppressed
by writing \integer or "use integer", or using Integer (this warning
will only trigger for lowercase spellings).
Closes GH-4815.
Nikita Popov [Thu, 7 Nov 2019 13:42:16 +0000 (14:42 +0100)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Wrap hrtime in `extern "c" {}`
Nikita Popov [Thu, 7 Nov 2019 13:42:11 +0000 (14:42 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
Wrap hrtime in `extern "c" {}`
Levi Morrison [Wed, 6 Nov 2019 17:30:09 +0000 (10:30 -0700)]
Wrap hrtime in `extern "c" {}`
This allows it to be used by C++ extensions without them having to do their own forward declares.
Closes GH-4890.
Nikita Popov [Thu, 7 Nov 2019 13:32:03 +0000 (14:32 +0100)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Fix php_pcre_mutex_free()
Nikita Popov [Thu, 7 Nov 2019 13:31:55 +0000 (14:31 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
Fix php_pcre_mutex_free()
Nikita Popov [Thu, 7 Nov 2019 13:29:51 +0000 (14:29 +0100)]
Fix php_pcre_mutex_free()
We should only set the mutex to NULL if we actually freed it.
Due to missing braces non-main threads may currently set it to
NULL first.
Nikita Popov [Thu, 7 Nov 2019 13:06:53 +0000 (14:06 +0100)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Remove outdated comments in test
Nikita Popov [Thu, 7 Nov 2019 13:06:48 +0000 (14:06 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
Remove outdated comments in test
Nikita Popov [Thu, 7 Nov 2019 13:06:33 +0000 (14:06 +0100)]
Merge branch 'PHP-7.2' into PHP-7.3
* PHP-7.2:
Remove outdated comments in test
Nikita Popov [Thu, 7 Nov 2019 13:06:23 +0000 (14:06 +0100)]
Remove outdated comments in test
Nikita Popov [Thu, 7 Nov 2019 12:11:58 +0000 (13:11 +0100)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Disable ifunc resolvers under thread sanitizer as well
Nikita Popov [Thu, 7 Nov 2019 12:08:03 +0000 (13:08 +0100)]
Disable ifunc resolvers under thread sanitizer as well
Nikita Popov [Thu, 7 Nov 2019 10:48:47 +0000 (11:48 +0100)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Add UPGRADING note about default object from empty value
[ci skip]
Nikita Popov [Thu, 7 Nov 2019 10:48:02 +0000 (11:48 +0100)]
Add UPGRADING note about default object from empty value
Fixes bug #75921.
[ci skip]
Nikita Popov [Thu, 7 Nov 2019 10:17:38 +0000 (11:17 +0100)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Fixed bug #78759
Nikita Popov [Thu, 7 Nov 2019 10:17:14 +0000 (11:17 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
Fixed bug #78759
Nikita Popov [Thu, 7 Nov 2019 10:16:03 +0000 (11:16 +0100)]
Merge branch 'PHP-7.2' into PHP-7.3
* PHP-7.2:
Fixed bug #78759
Nikita Popov [Thu, 7 Nov 2019 10:15:29 +0000 (11:15 +0100)]
Fixed bug #78759
Handle INDIRECT values in array.
Christoph M. Becker [Thu, 7 Nov 2019 09:01:43 +0000 (10:01 +0100)]
Merge branch 'PHP-7.4'
* PHP-7.4:
Fix #78788: ./configure generates invalid php_version.h
max [Thu, 7 Nov 2019 06:45:55 +0000 (07:45 +0100)]
Fix #78788: ./configure generates invalid php_version.h
Change $SED to "${SED}" such that the IFS is not used to split the
output of that variable.
Nikita Popov [Wed, 6 Nov 2019 16:50:48 +0000 (17:50 +0100)]
Move extra checks after zpp in get_browser()