Revision tags: php-8.0.0, php-7.3.25, php-7.4.13, php-8.0.0RC5, php-7.4.13RC1, php-8.0.0RC4, php-7.3.25RC1, php-7.4.12, php-8.0.0RC3, php-7.3.24, php-8.0.0RC2, php-7.4.12RC1, php-7.3.24RC1, php-7.2.34, php-8.0.0rc1, php-7.4.11, php-7.3.23, php-8.0.0beta4, php-7.4.11RC1, php-7.3.23RC1, php-8.0.0beta3, php-7.4.10, php-7.3.22, php-8.0.0beta2, php-7.3.22RC1, php-7.4.10RC1 |
|
#
8b37c1e9 |
| 15-Aug-2020 |
Benjamin Eberlei |
Change Attribute Syntax from @@ to #[]
|
Revision tags: php-8.0.0beta1, php-7.4.9, php-7.2.33, php-7.3.21, php-8.0.0alpha3, php-7.4.9RC1, php-7.3.21RC1, php-7.4.8, php-7.2.32, php-8.0.0alpha2, php-7.3.20, php-8.0.0alpha1, php-7.4.8RC1, php-7.3.20RC1, php-7.4.7, php-7.3.19, php-7.4.7RC1, php-7.3.19RC1, php-7.4.6, php-7.2.31, php-7.4.6RC1, php-7.3.18RC1, php-7.2.30, php-7.4.5, php-7.3.17 |
|
#
d92229d8 |
| 06-Apr-2020 |
Nikita Popov |
Implement named parameters From an engine perspective, named parameters mainly add three concepts: * The SEND_* opcodes now accept a CONST op2, which is the argument nam
Implement named parameters From an engine perspective, named parameters mainly add three concepts: * The SEND_* opcodes now accept a CONST op2, which is the argument name. For now, it is looked up by linear scan and runtime cached. * This may leave UNDEF arguments on the stack. To avoid having to deal with them in other places, a CHECK_UNDEF_ARGS opcode is used to either replace them with defaults, or error. * For variadic functions, EX(extra_named_params) are collected and need to be freed based on ZEND_CALL_HAS_EXTRA_NAMED_PARAMS. RFC: https://wiki.php.net/rfc/named_params Closes GH-5357.
show more ...
|
#
470d1696 |
| 02-Jul-2020 |
Theodore Brown |
Implement Shorter Attribute Syntax RFC: https://wiki.php.net/rfc/shorter_attribute_syntax Closes GH-5796. Co-authored-by: Martin Schröder <m.schroeder2007@gmail.com>
|
#
9bf11983 |
| 24-May-2020 |
Ilija Tovilo |
Implement nullsafe ?-> operator RFC: https://wiki.php.net/rfc/nullsafe_operator Closes GH-5619. Co-authored-by: Nikita Popov <nikita.ppv@gmail.com>
|
#
7a3dcc3e |
| 15-Jun-2020 |
Nikita Popov |
Treat namespaced names as single token Namespace names are now lexed as single tokens of type T_NAME_QUALIFIED, T_NAME_FULLY_QUALIFIED or T_NAME_RELATIVE. RFC: https://wiki.php.
Treat namespaced names as single token Namespace names are now lexed as single tokens of type T_NAME_QUALIFIED, T_NAME_FULLY_QUALIFIED or T_NAME_RELATIVE. RFC: https://wiki.php.net/rfc/namespaced_names_as_token Closes GH-5827.
show more ...
|
#
4cf8b6f1 |
| 01-Jul-2020 |
Tyson Andre |
Support optional comma in closure use list RFC: https://wiki.php.net/rfc/trailing_comma_in_closure_use_list Discussion: https://externals.io/message/110715 The release manager h
Support optional comma in closure use list RFC: https://wiki.php.net/rfc/trailing_comma_in_closure_use_list Discussion: https://externals.io/message/110715 The release manager has agreed to allow merging of RFCs that have near-unanimous votes. If an RFC ends up not achieving the required 2/3 majority at the time the announced voting period closes, this implementation commit will be reverted in time for the feature freeze. Closes GH-5793
show more ...
|
#
55a15f32 |
| 11-Jun-2020 |
Rowan Tommins |
Improve output of tokens in Parse Errors Currently, unexpected tokens in the parser are shown as the text found, plus the internal token name, including the notorious "unexpected '::
Improve output of tokens in Parse Errors Currently, unexpected tokens in the parser are shown as the text found, plus the internal token name, including the notorious "unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM)". This commit replaces that with a more user-friendly format, with two main types of token: * Tokens which always represent the same text are shown like 'unexpected token "::"' and 'expected "::"' * Tokens which have variable text are given a user-friendly name, and show like 'unexpected identifier "foo"', and 'expected identifer'. A few tokens have special cases: * unexpected token """ -> unexpected double-quote mark * unexpected quoted string "'foo'" -> unexpected single-quoted string "foo" * unexpected quoted string ""foo"" -> unexpected double-quoted string "foo" * unexpected illegal character "_" -> unexpected character 0xNN (where _ is almost certainly a control character, and NN is the hexadecimal value of the byte) The \ token has a special case in the implementation just to stop bison making a mess of escaping it and it coming out as \\
show more ...
|
#
9fa1d133 |
| 09-Apr-2020 |
Ilija Tovilo |
Implement match expression RFC: https://wiki.php.net/rfc/match_expression_v2 Closes GH-5371.
|
#
4a0d6901 |
| 06-Jul-2020 |
moliata <7127204+moliata@users.noreply.github.com> |
refactor: class constants parsing As part of my work on typed class constants, I wanted to make a separate pull request for unrelated changes. These include: * Moving
refactor: class constants parsing As part of my work on typed class constants, I wanted to make a separate pull request for unrelated changes. These include: * Moving from ast->child[0]->attr to ast->attr * Making zend_ast_export_ex() export class constants' visibility * Extracting an additional zend_compile_class_const_group() function Closes GH-5812.
show more ...
|
#
6a195cac |
| 02-Jul-2020 |
Nikita Popov |
Treat attribute argument lists like normal argument lists Allow trailing comma. Syntactically allow unpacking, but forbid it during compilation. The trailing comma test-case is
Treat attribute argument lists like normal argument lists Allow trailing comma. Syntactically allow unpacking, but forbid it during compilation. The trailing comma test-case is adopted from GH-5796.
show more ...
|
#
55717656 |
| 19-Jun-2020 |
Nikita Popov |
Forbid use of <?= as a semi-reserved identifier One of the weirdest pieces of PHP code I've ever seen. In terms of tokens, this gets internally translated to use x as y; ech
Forbid use of <?= as a semi-reserved identifier One of the weirdest pieces of PHP code I've ever seen. In terms of tokens, this gets internally translated to use x as y; echo as my_echo; On master it crashes because this "echo" does not have attached identifier metadata. Make sure it is added and then reject the use of "<?=" as an identifier inside zend_lex_tstring. Fixes oss-fuzz #23547.
show more ...
|
#
2a3ac4a8 |
| 08-Jun-2020 |
Ilija Tovilo |
Add missing terminators in zend_language_parser.y Closes GH-5688
|
#
3d4f79d6 |
| 08-Jun-2020 |
Nikita Popov |
Don't allow variables as attribute name Attributes require a static class name... This fixes https://oss-fuzz.com/testcase-detail/6267052359942144.
|
#
b03cafd1 |
| 05-Jun-2020 |
Nikita Popov |
Fix bug #77966: Cannot alias a method named "namespace" This is a bit tricky: In this cases we have "namespace as", which means that we will only recognize "namespace" as an identifier w
Fix bug #77966: Cannot alias a method named "namespace" 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.
show more ...
|
Revision tags: php-7.4.5RC1, php-7.3.17RC1 |
|
#
064b4644 |
| 24-Mar-2020 |
Nikita Popov |
Implement "Constructor Promotion" RFC RFC: https://wiki.php.net/rfc/constructor_promotion Closes GH-5291.
|
#
a7908c2d |
| 24-May-2020 |
Benjamin Eberlei |
Add Attributes Co-authored-by: Martin Schröder <m.schroeder2007@gmail.com>
|
#
23ee4d4b |
| 03-Apr-2020 |
Max Semenik |
Support catching exceptions without capturing them to variables RFC: https://wiki.php.net/rfc/non-capturing_catches Closes GH-5345.
|
#
f545ee2c |
| 26-Mar-2020 |
Nikita Popov |
Allow optional trailing comma in parameter list RFC: https://wiki.php.net/rfc/trailing_comma_in_parameter_list Closes GH-5306.
|
#
0810fcd0 |
| 18-Mar-2020 |
Ilija Tovilo |
Make throw statement an expression RFC: https://wiki.php.net/rfc/throw_expression This has an open issue with temporaries that are live at the time of the throw being leaked. La
Make throw statement an expression RFC: https://wiki.php.net/rfc/throw_expression This has an open issue with temporaries that are live at the time of the throw being leaked. Landing this now for easier testing and will revert if we cannot resolve the issue. Closes GH-5279.
show more ...
|
Revision tags: php-7.3.18, php-7.4.4, php-7.2.29, php-7.3.16, php-7.4.4RC1, php-7.3.16RC1, php-7.4.3, php-7.2.28, php-7.3.15RC1, php-7.4.3RC1, php-7.3.15, php-7.2.27, php-7.4.2, php-7.3.14 |
|
#
43443857 |
| 07-Jan-2020 |
Nikita Popov |
Add static return type 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
Add static return type 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.
show more ...
|
Revision tags: php-7.3.14RC1, php-7.4.2RC1 |
|
#
c141ee3f |
| 06-Jan-2020 |
Nikita Popov |
Allow arbitrary expressions in new/instanceof using () syntax
|
#
357fbc99 |
| 06-Jan-2020 |
Nikita Popov |
Treat magic constants like normal constants
|
#
ab154b7a |
| 06-Jan-2020 |
Nikita Popov |
Make class constants fully dereferencable
|
#
de7c7efe |
| 06-Jan-2020 |
Nikita Popov |
Unify array and object dereferencability
|
#
465e6f53 |
| 06-Jan-2020 |
Nikita Popov |
Split into fully_dereferencable and array_dereferencable
|