summaryrefslogtreecommitdiff
path: root/UPGRADING
Commit message (Collapse)AuthorAgeFilesLines
...
* Remove support for EBCDICNikita Popov2020-04-201-0/+3
| | | | Closes GH-5390.
* Store default parameter values of internal functions in arg infoMáté Kocsis2020-04-081-0/+6
| | | | | | | Closes GH-5353. From now on, PHP will have reflection information about default values of parameters of internal functions. Co-authored-by: Nikita Popov <nikita.ppv@gmail.com>
* news / UPGRADING for zip 1.19.0Remi Collet2020-04-021-1/+6
|
* Add PhpToken classNikita Popov2020-03-261-0/+6
| | | | | | | | | RFC: https://wiki.php.net/rfc/token_as_object Relative to the RFC, this also adds a __toString() method, as discussed on list. Closes GH-5176.
* Check abstract method signatures coming from traitsNikita Popov2020-03-261-1/+18
| | | | | | RFC: https://wiki.php.net/rfc/abstract_trait_method_validation Closes GH-5068.
* Fix #75958 Return void instead of trueMáté Kocsis2020-03-251-0/+3
|
* bump zip versionRemi Collet2020-03-201-1/+1
|
* ZipArchive::open(): Using empty file as ZipArchive is deprecatedRemi Collet2020-03-201-0/+5
|
* Revert "Fetch for read in nested property assignments"Nikita Popov2020-03-181-15/+2
| | | | | | | | | | | | | | | | | | | This reverts commit bb43a3822e42dbd15b1d416a166549d3980b379a. After thinking about this a bit more, this is now going to be a complete solution for the "readonly properties" case, for example: unset($foo->readOnly->bar); should also be legal and $foo->readOnly['bar'] = 42; should also be legal if $foo->readOnly is not an array but an ArrayAccess object. I think it may be better to distinguish better on the BP_VAR flag level. Reverting for now.
* bump zp to 1.18.1 + docRemi Collet2020-03-181-3/+8
|
* Fetch for read in nested property assignmentsNikita Popov2020-03-181-2/+15
| | | | | | | | | | | | | | | | | | $a->b->c = 'd'; is now compiled the same way as $b = $a->b; $b->c = 'd'; That is, we perform a read fetch on $a->b, rather than a write fetch. This is possible, because PHP 8 removed auto-vivification support for objects, so $a->b->c = 'd' may no longer modify $a->b proper (i.e. not counting interior mutability of the object). Closes GH-5250.
* Drop support for iconv without proper errno settingChristoph M. Becker2020-03-171-0/+4
| | | | | | | | It is hard to impossible to work around iconv() implementations which do not properly set errno according to POSIX. We therefore do no longer allow to build against such iconv() implementations. Co-Authored-By: Nikita Popov <nikita.ppv@googlemail.com>
* Add str_contains() functionPhilipp Tanlak2020-03-161-1/+4
| | | | | | RFC: https://wiki.php.net/rfc/str_contains Closes GH-5179.
* Update Unicode tables to 13.0.0Nikita Popov2020-03-121-0/+3
|
* Require non-absolute trait method refs to be unambiguousNikita Popov2020-03-101-0/+14
| | | | | | | | | | | | | | | | | | | | | | Currently, when writing something like class X { use T1, T2 { func as otherFunc; } function func() {} } where both T1::func() and T2::func() exist, we will simply assume that func refers to T1::func(). This is surprising, and it doesn't really make sense that this particular method gets picked. This commit validates that non-absolute method references are unambiguous, i.e. refer to exactly one method. If there is ambiguity, it is required to write T1::func as otherFunc or similar. Closes GH-5232.
* Fix #50678 files extracted by ZipArchive class lost their original modified timeRemi Collet2020-03-091-0/+1
|
* [ci skip] fix for #72374 is no more a BC breakRemi Collet2020-03-061-5/+3
|
* upgrade information about changs in ZipRemi Collet2020-03-051-0/+22
|
* Automatically implement Stringable interfaceNikita Popov2020-03-021-0/+2
|
* Add upgrading note regarding merge of RFC for new DOMParentNode/DOMChildNode ↵Benjamin Eberlei2020-02-281-0/+4
| | | | APIs.
* Add preg_last_error_msg() functionNicolas Oelgart2020-02-251-0/+5
| | | | | | | | Provides the last PCRE error as a human-readable message, similar to functionality existing in other extensions, such as json_last_error_msg(). Closes GH-5185.
* Use serialize_precision for var_dump()Nikita Popov2020-02-251-0/+4
| | | | | | | | | | | | var_dump() is debugging functionality, so it should print floating-point numbers accurately. We do this by switching to serialize_precision, which (by default) will print with as much precision as necessary to preserve the exact value of the float. This also affects debug_zval_dump(). Closes GH-5172.
* Update UPGRADINGMáté Kocsis2020-02-201-0/+2
| | | | [skip ci]
* Deprecate required param after optionalNikita Popov2020-02-181-0/+7
| | | | | | | | As an exception, we allow "Type $foo = null" to occur before a required parameter, because this pattern was used as a replacement for nullable types in PHP versions older than 7.1. Closes GH-5067.
* Make quoting of cmd execution functions consistentChristoph M. Becker2020-02-171-0/+5
| | | | | | | | | | | | | | | | | | | | | While the `$command` passed to `proc_open()` had to be wrapped in double-quotes manually, that was implicitly done for all other program execution functions. This could easily introduce bugs and even security issues when switching from one to another program execution function. Furthermore we ensure that the additional quotes are always unwrapped regardless of what is passed as `$command` by passing the `/s` flag to cmd.exe. As it was, `shell_exec('path with spaces/program.exe')` did execute program.exe, but adding an argument (`shell_exec('path with spaces/program.exe -h)`) failed to execute program.exe, because cmd.exe stripped the additional quotes. While these changes obviously can cause BC breaks, we feel that in the long run the benefits of having consistent behavior for all program execution functions outweighs the drawbacks of potentially breaking some code now.
* Improve generated names for anonymous classesNikita Popov2020-02-171-1/+12
| | | | | | | | | | | | | | | | In order of preference, the generated name will be: new class extends ParentClass {}; // -> ParentClass@anonymous new class implements FirstInterface, SecondInterface {}; // -> FirstInterface@anonymous new class {}; // -> class@anonymous This is intended to display a more useful class name in error messages and stack traces, and thus make debugging easier. Closes GH-5153.
* Add static return typeNikita Popov2020-02-171-0/+9
| | | | | | | | | | RFC: https://wiki.php.net/rfc/static_return_type The "static" type is represented as MAY_BE_STATIC, rather than a class type like "self" and "parent", as it has special resolution semantics, and cannot be cached in the runtime cache. Closes GH-5062.
* [skip ci] Fix typos in UPGRADINGTyson Andre2020-02-161-1/+1
| | | | Closes GH-5183
* Add UPGRADING notesNikita Popov2020-02-111-0/+6
| | | | | | | Not listing the details here, I think the RFC is a better reference for the precise technical details. [ci skip]
* Add support for $obj::classNikita Popov2020-02-111-0/+3
| | | | | | | | | This allows $obj::class, which gives the same result as get_class($obj). Anything other than an object results in TypeError. RFC: https://wiki.php.net/rfc/class_name_literal_on_object Closes GH-5065.
* Make ASSIGN, ASSIGN_OP, INC and DEC opcodes to return IS_TMP_VAR instead of ↵Dmitry Stogov2020-02-071-0/+5
| | | | | | | | | IS_VAR. This helps to avoid unnecessary IS_REFERENCE checks. This changes some notices "Only variables should be passed by reference" to exception "Cannot pass parameter %d by reference". Also, for consistency, compile-time fatal error "Only variables can be passed by reference" was converted to exception "Cannot pass parameter %d by reference"
* Fix typo [ci skip]Markus Staab2020-01-261-1/+1
|
* Add mention about empty needles for strrch() functions in UPGRADING [ci skip]George Peter Banyard2020-01-251-3/+4
|
* Fix bug #64865: Use CONTEXT_DOCUMENT_ROOT for scanning dir treewbender2020-01-241-0/+4
| | | | | | | If CONTEXT_DOCUMENT_ROOT is set use that rather than DOCUMENT_ROOT to scan up the dir tree looking for .user.ini files. Closes GH-5051.
* Allow variadic arguments to replace non-variadic onesNikita Popov2020-01-231-0/+11
| | | | | | | | | | | | | | Any number of arguments can be replaced by a variadic one, so long as the variadic argument is compatible (in the sense of contravariance) with the subsumed arguments. In particular this means that function(...$args) becomes a near-universal signature: It is compatible with any function signature that does not accept parameters by-reference. This also fixes bug #70839, which describes a special case. Closes GH-5059.
* Add UPGRADING notes [skip ci]Máté Kocsis2020-01-221-0/+6
|
* Bump required libcurl version to 7.29.0Christoph M. Becker2020-01-191-0/+3
| | | | | | | libcurl 7.29.0 has been released almost eight years ago, so this version is supposed to be available practically everywhere. This bump also allows us to get rid of quite some conditional code and tests catering to very old libcurl versions.
* Rename run-test.php to run-tests.php in the test packsChristoph M. Becker2020-01-141-0/+4
| | | | | | | | | In the php-src repository, the test runner is named run-tests.php, but when it is copied to the tests packs, it is renamed to run-test.php. This renaming does not make sense, and is actually somewhat confusing. Although changing the name back to run-tests.php constitutes a BC break, we think the benefit of having a single name outweights the disadvantages in the long run.
* Add imagegetinterpolation()Christoph M. Becker2020-01-141-0/+2
| | | | | | | | | | | | | | | While `imagesetinterpolation()` is available as of PHP 5.5.0, there is no according getter function, so users would have to track the current interpolation method manually. To remedy this, we introduce `imagegetinterpolation()` as thin wrapper for `gdImageGetInterpolationMethod()` (which has been introduced with libgd 2.1.1), and use `im->interpolation_id` as fallback for older libgd. Since our bundled libgd does not yet have this function, we add it. We also simplify the recently introduced bug79068.phpt, where it is sufficient to check that the interpolation method has not been changed.
* Fixed #78385: Distinguish absent/empty query/fragmentIslam Israfilov2020-01-131-0/+8
| | | | | | | | | http://example.com/foo => query = null, fragment = null http://example.com/foo? => query = "", fragment = null http://example.com/foo# => query = null, fragment = "" http://example.com/foo?# => query = "", fragment = "" Closes GH-5078.
* [ci skip] Update UPGRADINGGeorge Peter Banyard2020-01-091-0/+4
|
* Adding DateTime(Immutable)::createFromInterface()mike2020-01-031-0/+4
| | | | | | | | | | | These are like DateTime::createFromImmutable() DateTimeImmutable::createFromMutable() but accept any DateTimeInterface instead. Closes GH-5016.
* Implement WeakMapNikita Popov2020-01-031-0/+2
| | | | RFC: https://wiki.php.net/rfc/weak_maps
* Add FILTER_VALIDATE_BOOL as alias for FILTER_VALIDATE_BOOLEANWouter Wijsman2019-12-301-0/+4
| | | | | | | | | | Both filters are equivalent, but FILTER_VALIDATE_BOOL uses our canonical name for the type (the only one permitted in type declarations for example), so the new name is preferred long term. The old name may be deprecated in the future, but no specific timeline is planned.
* Add setAuthorizer method to SQLite3BohwaZ2019-12-201-0/+6
| | | | | This adds the possibility to define a userland callback that will be used to authorize or not an action on the database.
* Add upgrading note about implode() [ci skip]Máté Kocsis2019-12-191-0/+2
|
* Remove deprecated behaviour of passing encoding as third parameter in ↵George Peter Banyard2019-12-131-0/+2
| | | | | | mb_strrpos() Merged GH-5011
* Add upgrading notes about removed functionality that were deprecated in PHP 7.4Máté Kocsis2019-12-051-0/+6
|
* Make the $num_points parameter of php_imagepolygon optionalChristoph M. Becker2019-11-151-0/+6
| | | | | | | | | | | | 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`.
* Implement union typesNikita Popov2019-11-081-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.