summaryrefslogtreecommitdiff
path: root/NEWS
Commit message (Collapse)AuthorAgeFilesLines
* Fixed bug #79867Nikita Popov2020-07-171-0/+2
| | | | | | In line with usual rules, give untyped properties a null default value. Otherwise constructor promotion would give you a property declaration that cannot be achieved through any other means.
* Retrofit description of recent PR changesChristopher Jones2020-07-151-0/+4
|
* Fixed bug #79852Nikita Popov2020-07-141-0/+2
|
* Fixed bug #79828Nikita Popov2020-07-131-0/+2
|
* Fixed bug #79841Nikita Popov2020-07-131-0/+2
|
* Fixed bug #79791Nikita Popov2020-07-071-0/+2
| | | | | | First throw the undefined variable warning, and then set the variable to null. Otherwise we're not guaranteed that it's actually null afterwards.
* Fixed bug #79790Nikita Popov2020-07-071-0/+3
| | | | | | I haven't tracked down in detail where the interaction with increment_function comes from, but the root problem here is failure to handle the illegal offset type exception.
* Update NEWS for 8.0.0alpha3Gabriel Caruso2020-07-071-0/+3
|
* Update NEWS for PHP 8.0.0alpha2Gabriel Caruso2020-07-071-1/+1
|
* Update to PCRE2 10.35Christoph M. Becker2020-07-021-0/+3
| | | | | We also port a fix for the build system regarding the `-fcf-protection` gcc flag; cf. <https://bugs.exim.org/show_bug.cgi?id=2578>.
* Move to alpha2 sectionXinchen Hui2020-06-301-2/+4
|
* Fix #79749: Converting FFI instances to bool failsChristoph M. Becker2020-06-291-1/+6
| | | | | | Casting objects to bool is supposed to yield `true`. Since the `cast_object` handler is required now, we have to implement the `_IS_BOOL` conversion there.
* Fixed bug #79743 (Fatal error when assigning to array property with JIT enabled)Xinchen Hui2020-06-291-0/+2
| | | | simple typo
* Convert shmop resources to opaque objectsChristoph M. Becker2020-06-241-0/+3
| | | | | We make `shmop_close()` a NOP, and deprecate the function right away; detaching from SHM now happens when the wrapper object is freed.
* Fix #63575: Root elements are not properly clonedChristoph M. Becker2020-06-171-0/+1
| | | | | Cloning of root elements has to preserve that property, so they require some special treatment.
* FR #79344: xmlwriter_write_attribute_ns: $prefix should be nullableChristoph M. Becker2020-06-161-0/+2
| | | | | | | | The `$prefix` parameter of `xmlwriter_write_element_ns()` and `xmlwriter_start_element_ns()` is nullable, what allows these functions to be used instead of their non NS variants. Consequently, we make the `$prefix` parameter of `xmlwriter_write_attribute_ns()` and `xmlwriter_start_attribute_ns()` nullable as well.
* Fix #73529: session_decode() silently fails on wrong inputChristoph M. Becker2020-06-101-0/+1
| | | | | | | | The `php_serialize` decode function has to return `FAILURE`, if the unserialization failed on anything but an empty string. The `php` decode function has also to return `FAILURE`, if there is trailing garbage in the string.
* Fix bug #65006Nikita Popov2020-06-101-0/+2
| | | | | | | | | | | | | | The "callable name" may be the same for multiple distinct callables. The code already worked around this for the case of instance methods, but there are other cases in which callable names clash, such as the use of self:: reported in the referenced bug. Rather than trying to generate a unique name for callables, compare the content of the alfi structures. This is less efficient if there are many autoload functions, but autoload *registration* does not need to be particularly efficient. As a side-effect, this no longer permits unregistering non-callables.
* Cleanup SPL autoload implementationNikita Popov2020-06-101-0/+4
| | | | | | | | | | | | | | | | | Replace EG(autoload_func) with a C level zend_autoload hook. This avoids having to do one indirection through PHP function calls. The need for EG(autoload_func) was a leftover from the __autoload() implementation. Additionally, drop special-casing of spl_autoload(), and instead register it just like any other autoloading function. This fixes bug #71236 as a side-effect. Finally, change spl_autoload_functions() to always return an array. The distinction between false and an empty array no longer makes sense here. Closes GH-5696.
* Fix bug #77966: Cannot alias a method named "namespace"Nikita Popov2020-06-081-0/+1
| | | | | | | | | | | | | | | | | | | | This is a bit tricky: In this cases we have "namespace as", which means that we will only recognize "namespace" as an identifier when the lookahead token is already at the "as". This means that zend_lex_tstring picks up the wrong identifier. We solve this by actually assigning the identifier as the semantic value on the parser stack -- as in almost all cases we will not actually need the identifier, this is just an (offset, size) reference, not a copy of the string. Additionally, we need to teach the lexer feedback mechanism used by tokenizer TOKEN_PARSE mode to apply feedback to something other than the very last token. To that purpose we pass through the token text and check the tokens in reverse order to find the right one. Closes GH-5668.
* Update NEWS and UPGRADING for the OpenSSL ext CMS additionJakub Zelenka2020-06-071-0/+3
|
* Add $filter parameter for ReflectionClass::(getConstants|getReflectionConstants)Gabriel Caruso2020-06-071-0/+2
| | | | | | | | | | | | | | | | This solves [#79628](https://bugs.php.net/79628). Similar to `ReflectionClass::getMethods()` and `ReflectionClass::getProperties()`, this new `$filter` argument allows the filtering of constants defined in a class by their visibility. For that, we create three new constants for `ReflectionClassConstant`: * `IS_PUBLIC` * `IS_PROTECTED` * `IS_PRIVATE` Closes GH-5649.
* Fixed bug #72089: Throw Error on require failureNikita Popov2020-06-051-0/+2
| | | | | | | | It should be noted that we still throw the usual fopen warnings, but the final fatal error becomes an Error exception. Combine with @ to suppress FS warnings. Closes GH-5641.
* Implement #47074: phpinfo() reports "On" as 1 for the some extensionsChristoph M. Becker2020-06-041-0/+2
| | | | What is modified as boolean, should also be displayed as boolean.
* Fix #79665: ini_get() and opcache_get_configuration() inconsistencyChristoph M. Becker2020-06-031-0/+2
| | | | | | Overriding the given INI values in modifier callbacks is not possible, so instead of enforcing "normalized" internal values, we just reject the attempted changes.
* [RFC] Always enable JSON support in php 8.0Tyson Andre2020-05-271-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, it's possible to disable the json extension with `./configure --disable-json` (for historical reasons that no longer apply). However, JSON is widely used in many use cases - web sites, logging output, and as a data format that can be used to share data with many applications and programming languages, so I'd personally find it useful if it was always enabled. Examples of where this would be useful: - For internal classes to be able to implement `JsonSerializable` which currently requires a hard dependency on the JSON extension. - For PHP users to publish single-file scripts that use json_encode and json_decode and don't require polyfills or less readable var_export output. (polyfills are less efficient and may have issues with recursive data structures) - So that php-src's own modules, tools and test cases can start using JSON if it's a good choice for encoding a value. (same for PECLs) https://wiki.php.net/rfc/jsond mentions that in PHP 5, > The current Json Parser in the json extension does not have a free license > which is a problem for many Linux distros. > This has been referenced at Bug #63520. > That results in not packaging json extension in the many Linux distributions. Starting in php 7.0 with the switch to jsond, It looks like licensing is no longer an issue. Changes: - Remove all flags related to JSON such as `configure --disable-json` - Require that JSON be compiled statically instead of as a shared library Examples of uses of JSON in various distros (backwards incompatible changes such as changing packaging are typically reserved for major versions, and 8.0 is a major version) - JSON is required by `php-cli` or `php` in ubuntu: https://packages.ubuntu.com/focal/php/ - The php-json package has to be installed separately from the PHP binary in Fedora repos. Closes GH-5495
* PGSQL and POD_SQL: don't include pg_config.hChristoph M. Becker2020-05-251-1/+4
| | | | | | | | | | | | | | | | | | | | | Even if that header file is available, we better consider it private, and don't include it. The information about whether SSL support is enabled is now missing (`USE_(OPEN)SSL`), and it seems there is no alternative way to get it (`PQinitSSL()` is always defined), so we remove it from the PHP info. Furthermore, the `PG_VERSION` and `PG_VERSION_STR` macros are no longer available, but as of libpq 9.1 there is `PQlibVersion()` which allows us to construct `PG_VERSION` in a most likely backwards compatible manner. The additional information available through `PG_VERSION_STR` is lost, though, so we define `PGSQL_LIBPQ_VERSION_STR` basically as alias of `PGSQL_LIBPQ_VERSION`, and deprecate it right away. Since we are now requiring at least libpq 9.1, we can remove some further compatibility code and additional checks. Regarding the raised requirements: official support for PostGreSQL 9.0 ended on 2015-10-08, and even CentOS 7 already has PostGreSQL 9.2, so this is not supposed to be too much of an issue.
* Raise ext/pgsql requirements to PostGreSQL 7.4Christoph M. Becker2020-05-221-0/+3
| | | | | | | We can safely assume that users have at the very least libpq 7.4, for which official support ended on 2010-10-01; even CentOS 6 has 8.4 now. It is also noteworthy that PDO_PGSQL already requires libpq 7.4 or later.
* Add support for replaying warnings in opcacheNikita Popov2020-05-201-0/+1
| | | | | | | | | If opcache.record_warnings is enabled, opcache will record compilation warnings and replay them when the file is included again. The primary use case I have in mind for this is automated testing of the opcache file cache. This resolves bug #76535.
* Revert "doc for enchant Object move"Remi Collet2020-05-131-4/+1
| | | | This reverts commit 2c63324a4eabf3f8bdf9585c8dae4527dca2e41f.
* doc for enchant Object moveRemi Collet2020-05-131-1/+4
|
* Fixed #79582 (Crash seen when opcache.jit=1235 and opcache.jit_debug=2)Xinchen Hui2020-05-131-0/+2
|
* Change the default PDO error mode to exceptionsAllenJB2020-05-041-0/+1
| | | | According to <https://www.php.net/manual/en/pdo.error-handling.php>.
* Use libenchant-2 when availableRemi Collet2020-05-041-0/+1
|
* Fix #79467: data:// wrappers are writableChristoph M. Becker2020-05-031-0/+1
| | | | | | | | Despite the docs claiming that data: wrappers would not be writable[1], they are implemented as writing to a memory stream. That does not seem to be particularly sensible, so we disallow writing altogether. [1] <https://www.php.net/manual/en/wrappers.data.php#refsect1-wrappers.data-options>
* doc enchant changesRemi Collet2020-04-301-0/+6
|
* Check `__set_state` structureGabriel Caruso2020-04-281-0/+1
| | | | | | Fix Bug #79521. Closes GH-5462.
* update NEWSXinchen Hui2020-04-281-0/+1
|
* Fix #36365: scandir duplicates file name at every 65535th fileChristoph M. Becker2020-04-241-0/+2
| | | | | | Since DIR_W32.offset is declared as `uint16_t`, we have an overflow for directories with many entries. This patch changes the field to `uint32_t`.
* Fix #71417: fread() does not report zlib.inflate errorsChristoph M. Becker2020-04-201-0/+3
| | | | | If the zlib.inflate filter fails to decompress the stream, we raise a notice instead of failing silently.
* Fix #71263: fread() does not report bzip2.decompress errorsChristoph M. Becker2020-04-201-0/+3
| | | | | If the bzip2.decompress filter fails to decompress the stream, we raise a notice instead of failing silently.
* Syntax errors caused by unclosed {, [, ( mention specific locationAlex Dowad2020-04-141-0/+2
| | | | | | | | | | | | | | | | | | | | | | Aside from a few very specific syntax errors for which detailed exceptions are thrown, generally PHP just emits the default error messages generated by bison on syntax error. These messages are very uninformative; they just say "Unexpected ... at line ...". This is most problematic with constructs which can span an arbitrary number of lines, such as blocks of code delimited by { }, 'if' conditions delimited by ( ), and so on. If a closing delimiter is missed, the block will run for the entire remainder of the source file (which could be thousands of lines), and then at the end, a parse error will be thrown with the dreaded words: "Unexpected end of file". Therefore, track the positions of opening and closing delimiters and ensure that they match up correctly. If any mismatch or missing delimiter is detected, immediately throw a parse error which points the user to the offending line. This is best done in the *lexer* and not in the parser. Thanks to Nikita Popov and George Peter Banyard for suggesting improvements. Fixes bug #79368. Closes GH-5364.
* Fix #79462: method_exists and property_exists incoherent behaviorChristoph M. Becker2020-04-091-0/+2
| | | | | Both functions are closely related, so should behave the same for wrong input types, i.e. both should throw a TypeError.
* news / UPGRADING for zip 1.19.0Remi Collet2020-04-021-0/+3
|
* Fix #47983: mixed LF and CRLF line endings in mail()Christoph M. Becker2020-04-021-0/+1
| | | | Email headers are supposed to be separated with CRLF. Period.
* Fix #76999: mb_regex_set_options() return current optionsChristoph M. Becker2020-03-271-0/+1
| | | | | When setting new options, `mb_regex_set_options()` is supposed to return the *previous* options.
* bump zp to 1.18.1 + docRemi Collet2020-03-181-0/+2
|
* Drop support for iconv without proper errno settingChristoph M. Becker2020-03-171-0/+3
| | | | | | | | 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>
* Fixed bug #75902Nikita Popov2020-03-101-0/+2
| | | | | | | | | | Don't special-case nested arrays/objects in str_replace(), instead perform a string cast on them as well. For arrays, this will always result in the usual conversion warning. This behavior is consistent with preg_replace(). If we didn't want to cast the array to string here, we should instead perform the replacement recursively. Silently copying it is just confusing.
* Fix #50678 files extracted by ZipArchive class lost their original modified timeRemi Collet2020-03-091-0/+2
|