summaryrefslogtreecommitdiff
path: root/UPGRADING.INTERNALS
Commit message (Collapse)AuthorAgeFilesLines
* Document the signature change of zend_get_closure_method_def()Máté Kocsis2020-07-311-0/+2
|
* Remove PHP_CHECK_GCC_ARG()Nikita Popov2020-07-291-1/+5
| | | | | | | In favor of AX_CHECK_COMPILE_FLAG(), which we bundle since at least PHP 7. Closes GH-5904.
* Add error notification callbacks to UPGRADING.INTERNALSBenjamin Eberlei2020-07-171-0/+17
|
* Remove type argument from zend_get_zval_ptrNikita Popov2020-07-151-6/+6
| | | | | As pointed out by Levi, this is unused, and we already changed the signature of this function for PHP 8.
* Use consistent typesGeorge Peter Banyard2020-07-131-0/+18
| | | | | | | | uint32_t type for argument count size_t for length of char* zend_bool for a zval bool arg Closes GH-5845
* Add upgrading noteNikita Popov2020-07-131-1/+2
| | | | [ci skip]
* Voidify some ZEND_API functionsGeorge Peter Banyard2020-07-091-2/+14
| | | | Closes GH-5805
* Remove no_separation flagNikita Popov2020-07-071-0/+6
|
* [skip ci] add upgrade noteRemi Collet2020-07-061-0/+4
| | | | Closes GH-5798
* [ci skip] (Hopefully) clarify meaningChristoph M. Becker2020-07-011-1/+1
|
* Document zend_hash_sort and zend_ts_hash_sort signature changeChristoph M. Becker2020-07-011-1/+3
| | | | Cf. <https://github.com/php/php-src/pull/3936>.
* Update UPGRADING.INTERNALS re: removed --disable-inline-optimization switchAlex Dowad2020-06-241-5/+12
| | | | This build configuration switch was removed in 3a19726bce.
* Introduce InternalIteratorNikita Popov2020-06-241-0/+11
| | | | | | | | | | | | | | | | | | | Userland classes that implement Traversable must do so either through Iterator or IteratorAggregate. The same requirement does not exist for internal classes: They can implement the internal get_iterator mechanism, without exposing either the Iterator or IteratorAggregate APIs. This makes them usable in get_iterator(), but incompatible with any Iterator based APIs. A lot of internal classes do this, because exposing the userland APIs is simply a lot of work. This patch alleviates this issue by providing a generic InternalIterator class, which acts as an adapater between get_iterator and Iterator, and can be easily used by many internal classes. At the same time, we extend the requirement that Traversable implies Iterator or IteratorAggregate to internal classes as well. Closes GH-5216.
* Fix typoFabien Villepinte2020-06-151-3/+3
|
* Added noteDmitry Stogov2020-06-151-0/+5
|
* Control VCRT leak reporting via environment variable in debug buildsChristoph M. Becker2020-06-101-0/+5
| | | | | | | | Formerly, this had to be enabled by passing the configuration flag `--enable-crt-debug`; now it can be enabled by setting the environment variable `PHP_WIN32_DEBUG_HEAP`. The advantage is that it is no longer necessary to do separate builds, at the cost of a very minor performance penalty during process startup.
* Remove old ARG_COUNT() macroGeorge Peter Banyard2020-05-111-0/+3
| | | | | | Use ZEND_NUM_ARGS() instead. Clsoes GH-5551
* Make cast_object handler requiredNikita Popov2020-03-311-0/+4
| | | | | | | | Avoid subtle differences in behavior depending on whether the handler is absent or returns FAILURE. If you previously set cast_object to NULL, create a handler that always returns FAILURE instead.
* Use separate typedef for bucket comparison functionNikita Popov2020-03-041-0/+8
| | | | | Avoid performing the same casting dance inside each sort compare function.
* Require all internal functions to have arginfoNikita Popov2020-02-261-0/+4
|
* [skip ci] Fix typos in UPGRADINGTyson Andre2020-02-161-2/+2
| | | | Closes GH-5183
* Make ASSIGN, ASSIGN_OP, INC and DEC opcodes to return IS_TMP_VAR instead of ↵Dmitry Stogov2020-02-071-0/+9
| | | | | | | | | 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"
* Apply custom format/length modifier removal to spprintfGeorge Peter Banyard2020-01-231-3/+3
| | | | | | | | This mimicks the changes made to the custom snprintf implementation by removing the custom 'v' format and custom 'I' length modifier from the spprintf implementation. Closes GH-5108
* Drop the custom 'v' format from snprintf custom implementation.George Peter Banyard2020-01-211-0/+3
| | | | | | Extensions should instead use the standard 's' format. Closes GH-5100
* Drop the custom I length modifier from snprintf custom implementation.George Peter Banyard2020-01-201-0/+5
| | | | | | | Extensions should rather use the ZEND_LONG_FMT, ZEND_ULONG_FMT and ZEND_XLONG_FMT macros defined in php-src/Zend/zend_long.h Closes GH-5089
* Fix typo [ci skip]Markus Staab2019-10-071-1/+1
|
* Comparison cleanup:Dmitry Stogov2019-10-071-0/+5
| | | | | - introduce zend_compare() that returns -1,0,1 dirctly (without intermediate zval) - remove compare_objects() object handler, and keep only compare() handler
* [ci skip] Update UPGRADING.INTERNALSChristoph M. Becker2019-09-241-0/+5
| | | | Cf. <http://git.php.net/?p=php-src.git;a=commit;h=0c7124e6beff0a7b0540691db370148be06d242a>.
* upgrading notes for ValueError/zend_value_error()Peter Cowburn2019-09-101-0/+5
|
* Simplify TMP/VAR operand releasingDmitry Stogov2019-07-241-0/+9
|
* Update changelogPeter Kokot2019-07-211-0/+1
|
* Symbol HAVE_PCRE has been removedPeter Kokot2019-07-141-0/+2
|
* [ci skip] Mention HAVE_HASH_EXTPeter Kokot2019-06-261-3/+5
|
* Don't verify arginfo types for internal functionsNikita Popov2019-06-171-0/+5
| | | | | | | | | To avoid duplicate type checks. In debug builds arginfo is still checked and will generate an assertions if the function doesn't subsequently throw an exception. Some test results change due to differences in zpp and arginfo error messages.
* Fix typoChristoph M. Becker2019-06-031-1/+1
|
* Remove zpp L specifierNikita Popov2019-06-031-0/+4
| | | | | We don't use this internally anymore, and external usages should be encouraged to move towards 'l'.
* Remove get() object handlerNikita Popov2019-05-291-4/+7
| | | | | | | | Now that set() is gone, there is little point in keeping get(), as it is essentially just a different way of writing cast_object() now. Closes GH-4202.
* Remove set() object handlerNikita Popov2019-05-291-0/+5
|
* Merge branch 'master' of git://github.com/php/php-srcJoe Watkins2019-03-251-1/+1
|\
* | TSRM cleanup for PHP8Joe Watkins2019-03-251-0/+15
|/
* For consistency with Windows, and because ZTS is not experimental or a ↵Joe Watkins2019-03-231-0/+3
| | | | "maintainer" feature, this commits renames --enable-maintainer-zts to --enable-zts in the autotools build, and related documentation
* Remove ZEND_OVERLOADED_FUNCTION and corresponding call_method object handlerDmitry Stogov2019-02-071-3/+9
|
* fixed typo in UPGRADING.INTERNALSMarkus Staab2019-02-041-1/+1
|
* Added note anout object habdlers API changeDmitry Stogov2019-02-041-2/+5
|
* Clear NEWS, UPGRADING and UPGRADING.INTERNALSNikita Popov2019-01-281-172/+3
|
* Implement typed propertiesNikita Popov2019-01-111-0/+13
| | | | | | | | | | RFC: https://wiki.php.net/rfc/typed_properties_v2 This is a squash of PR #3734, which is a squash of PR #3313. Co-authored-by: Bob Weinand <bobwei9@hotmail.com> Co-authored-by: Joe Watkins <krakjoe@php.net> Co-authored-by: Dmitry Stogov <dmitry@zend.com>
* Revert HASH_FLAG_INITIALIZED into HASH_FLAG_UNINITIALIZED.Dmitry Stogov2018-12-281-0/+5
|
* Added note about changes in class declaration opcodesDmitry Stogov2018-12-241-0/+7
|
* Removed add_get_assoc_*() and add_get_index_*() API functionsDmitry Stogov2018-12-191-0/+4
|
* Allow empty $escape to eschew escaping CSVChristoph M. Becker2018-12-151-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Albeit CSV is still a widespread data exchange format, it has never been officially standardized. There exists, however, the “informational” RFC 4180[1] which has no notion of escape characters, but rather defines `escaped` as strings enclosed in double-quotes where contained double-quotes have to be doubled. While this concept is supported by PHP's implementation (`$enclosure`), the `$escape` sometimes interferes, so that `fgetcsv()` is unable to correctly parse externally generated CSV, and `fputcsv()` is sometimes generating non-compliant CSV. Since PHP's `$escape` concept is availble for many years, we cannot drop it for BC reasons (even though many consider it as bug). Instead we allow to pass an empty string as `$escape` parameter to the respective functions, which results in ignoring/omitting any escaping, and as such is more inline with RFC 4180. It is noteworthy that this is almost no userland BC break, since formerly most functions did not accept an empty string, and failed in this case. The only exception was `str_getcsv()` which did accept an empty string, and used a backslash as escape character then (which appears to be unintended behavior, anyway). The changed functions are `fputcsv()`, `fgetcsv()` and `str_getcsv()`, and also the `::setCsvControl()`, `::getCsvControl()`, `::fputcsv()`, and `::fgetcsv()` methods of `SplFileObject`. The implementation also changes the type of the escape parameter of the PHP_APIs `php_fgetcsv()` and `php_fputcsv()` from `char` to `int`, where `PHP_CSV_NO_ESCAPE` means to ignore/omit escaping. The parameter accepts the same values as `isalpha()` and friends, i.e. “the value of which shall be representable as an `unsigned char` or shall equal the value of the macro `EOF`. If the argument has any other value, the behavior is undefined.” This is a subtle BC break, since the character `chr(128)` has the value `-1` if `char` is signed, and so likely would be confused with `EOF` when converted to `int`. We consider this BC break to be acceptable, since it's rather unlikely that anybody uses `chr(128)` as escape character, and it easily can be fixed by casting all `escape` arguments to `unsigned char`. This patch implements the feature requests 38301[2] and 51496[3]. [1] <https://tools.ietf.org/html/rfc4180> [2] <https://bugs.php.net/bug.php?id=38301> [3] <https://bugs.php.net/bug.php?id=51496>