#
3725717d |
| 04-Aug-2022 |
Go Kudo |
Remove ZEND_DVAL_TO_LVAL_CAST_OK (#9215) * Remove ZEND_DVAL_TO_LVAL_CAST_OK As far as I can see, this operation should always use the _slow method, and the results seem to be wrong when
Remove ZEND_DVAL_TO_LVAL_CAST_OK (#9215) * Remove ZEND_DVAL_TO_LVAL_CAST_OK As far as I can see, this operation should always use the _slow method, and the results seem to be wrong when ZEND_DVAL_TO_LVAL_CAST_OK is enabled. * update NEWS
show more ...
|
#
efc8f0eb |
| 17-Jun-2022 |
Arnaud Le Blanc |
Deprecate zend_atol() / add zend_ini_parse_quantity() (#7951) Add zend_ini_parse_quantity() and deprecate zend_atol(), zend_atoi() zend_atol() and zend_atoi() don't just do number p
Deprecate zend_atol() / add zend_ini_parse_quantity() (#7951) Add zend_ini_parse_quantity() and deprecate zend_atol(), zend_atoi() zend_atol() and zend_atoi() don't just do number parsing. They also check for a 'K', 'M', or 'G' at the end of the string, and multiply the parsed value out accordingly. Unfortunately, they ignore any other non-numerics between the numeric component and the last character in the string. This means that numbers such as the following are both valid and non-intuitive in their final output. * "123KMG" is interpreted as "123G" -> 132070244352 * "123G " is interpreted as "123 " -> 123 * "123GB" is interpreted as "123B" -> 123 * "123 I like tacos." is also interpreted as "123." -> 123 Currently, in php-src these functions are used only for parsing ini values. In this change we deprecate zend_atol(), zend_atoi(), and introduce a new function with the same behavior, but with the ability to report invalid inputs to the caller. The function's name also makes the behavior less unexpected: zend_ini_parse_quantity(). Co-authored-by: Sara Golemon <pollita@php.net>
show more ...
|
Revision tags: php-8.1.7RC1, php-8.1.4RC1, php-8.1.3 |
|
#
7b90ebeb |
| 05-Feb-2022 |
Tyson Andre |
Fix `-Werror=sign-compare` warning in `zend_memnistr` (#8042) `error: comparison of integer expressions of different signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘long int’ [-Werro
Fix `-Werror=sign-compare` warning in `zend_memnistr` (#8042) `error: comparison of integer expressions of different signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘long int’ [-Werror=sign-compare]` This is asserting `end >= haystack` as a precondition for callers (in debug builds) and existing callers are correct. An alternate option is to cast the left side to `int64_t`, but that may be slightly inefficient for 32-bit builds.
show more ...
|
Revision tags: php-8.1.2RC1 |
|
#
2f529569 |
| 29-Dec-2021 |
Ilija Tovilo |
Optimize stripos/stristr Closes GH-7847 Closes GH-7852 Previously stripos/stristr would lowercase both the haystack and the needle to reuse strpos. The approach in this PR i
Optimize stripos/stristr Closes GH-7847 Closes GH-7852 Previously stripos/stristr would lowercase both the haystack and the needle to reuse strpos. The approach in this PR is similar to strpos. memchr is highly optimized so we're using it to search for the first character of the needle in the haystack. If we find it we compare the remaining characters of the needle manually. The new implementation seems to perform about half as well as strpos (as two memchr calls are necessary to find the next candidate).
show more ...
|
#
067df263 |
| 24-Nov-2021 |
Dmitry Stogov |
Use memrchr() when available On x86_64 glibc memrchr() uses SSE/AVX CPU extensions and works much faster then naive loop. On x86 32-bit we still use inlined version. memrchr() i
Use memrchr() when available On x86_64 glibc memrchr() uses SSE/AVX CPU extensions and works much faster then naive loop. On x86 32-bit we still use inlined version. memrchr() is a GNU extension. Its prototype becomes available when <string.h> is included with defined _GNU_SOURCE macro. Previously, we defined it in "php_config.h", but some sources may include <string.h> befire it. To avod mess we also pass -D_GNU_SOURCE to C compiler.
show more ...
|
Revision tags: php-8.1.0, php-7.3.33 |
|
#
c7484ef9 |
| 10-Nov-2021 |
Dmitry Stogov |
zend_memnstr() micro-optimization
|
Revision tags: php-7.3.32 |
|
#
da0c7050 |
| 29-Sep-2021 |
Tim Starling |
Add upper case functions to zend_operators.c and use them (#7521) Add a family of upper case conversion functions to zend_operators.c, by analogy with the lower case functions.
Add upper case functions to zend_operators.c and use them (#7521) Add a family of upper case conversion functions to zend_operators.c, by analogy with the lower case functions. Move the single-character conversion macros to the header so that they can be used as a locale-independent replacement for tolower() and toupper(). Factor out the ugly bits of the SSE2 case conversion so that the four functions that use it are easy to read and processor-independent. Use the new ASCII upper case functions in ext/xml, ext/pdo_dblib and as an optimization for strtoupper() when the locale is "C".
show more ...
|
#
49867405 |
| 24-Sep-2021 |
Nikita Popov |
Remove zend_binary_zval_strcasecmp() APIs These are thin wrappers ... around the wrong functions. They call the "_l()" version of the underlying APIs. For clarify, just call the wrap
Remove zend_binary_zval_strcasecmp() APIs These are thin wrappers ... around the wrong functions. They call the "_l()" version of the underlying APIs. For clarify, just call the wrapped API directly.
show more ...
|
#
26e42446 |
| 09-Nov-2021 |
Nikita Popov |
Fix bug #81598: Use C.UTF-8 as LC_CTYPE locale by default Unfortunately, libedit is locale based and does not accept UTF-8 input when the C locale is used. This patch switches the defaul
Fix bug #81598: Use C.UTF-8 as LC_CTYPE locale by default Unfortunately, libedit is locale based and does not accept UTF-8 input when the C locale is used. This patch switches the default locale to C.UTF-8 instead (if it is available). This makes libedit work and I believe it shouldn't affect behavior of single-byte locale-dependent functions that PHP otherwise uses. Closes GH-7635.
show more ...
|
Revision tags: php-7.3.31 |
|
#
7968ce93 |
| 16-Sep-2021 |
Nikita Popov |
Remove unnecessary const qualifier To fix -Wignored-qualifiers warning.
|
Revision tags: php-7.3.30 |
|
#
60484818 |
| 02-Aug-2021 |
Nikita Popov |
Add additional double to string APIs zend_double_to_str() converts a double to string in the way that (string) would (using %.*H using precision). smart_str_append_double() prov
Add additional double to string APIs zend_double_to_str() converts a double to string in the way that (string) would (using %.*H using precision). smart_str_append_double() provides some more fine control over the precision, and whether a zero fraction should be appeneded for whole numbers. A caveat here is that raw calls to zend_gcvt and going through s*printf has slightly different behavior for the degenarate precision=0 case. zend_gcvt will add a dummy E+0 in that case, while s*printf convert this to precision=1 and will not. I'm going with the s*printf behavior here, which is more common, but does result in a minor change to the precision.phpt test.
show more ...
|
#
a733b1ad |
| 16-Jul-2021 |
Nikita Popov |
Restore zend_atoi() I dropped this in preparation for changes that I didn't end up doing. Restore the function for now to avoid unnecessary churn for extensions.
|
#
1cba7764 |
| 13-Jul-2021 |
Nikita Popov |
Remove zend_atoi() (#7232) It's the same as (int) zend_atol() -- it doesn't try to do anything integer size specific. Canonicalize to one function in preparation for renaming zend_at
Remove zend_atoi() (#7232) It's the same as (int) zend_atol() -- it doesn't try to do anything integer size specific. Canonicalize to one function in preparation for renaming zend_atol() to something less misleading. FFI test is adjusted to use a zend_test function. It just calls zend_atol() internally, but could really be anything. Co-authored-by: Christoph M. Becker <cmbecker69@gmx.de>
show more ...
|
Revision tags: php-7.3.29 |
|
#
821a5a12 |
| 14-Jun-2021 |
Nikita Popov |
Drop fast_div_function This is the same as div_function nowadays.
|
#
b6958bb8 |
| 31-May-2021 |
George Peter Banyard |
Implement "Deprecate implicit non-integer-compatible float to int conversions" RFC. (#6661) RFC: https://wiki.php.net/rfc/implicit-float-int-deprecate Co-authored-by: Nikita Popov <
Implement "Deprecate implicit non-integer-compatible float to int conversions" RFC. (#6661) RFC: https://wiki.php.net/rfc/implicit-float-int-deprecate Co-authored-by: Nikita Popov <nikita.ppv@gmail.com>
show more ...
|
Revision tags: php-7.3.28 |
|
#
0c571185 |
| 13-Apr-2021 |
Nikita Popov |
Add zend_ulong_to_str() API No point in going through a smart_str and append_unsigned if we can construct the result directly...
|
#
65a5c184 |
| 13-Apr-2021 |
Nikita Popov |
Add functions to convert i64/u64 to string PDO implement half of this, but this functionality is generally useful. Provide these as zend_u64_to_str and zend_i64_to_str to complement
Add functions to convert i64/u64 to string PDO implement half of this, but this functionality is generally useful. Provide these as zend_u64_to_str and zend_i64_to_str to complement zend_long_to_str.
show more ...
|
#
5e015425 |
| 19-Feb-2021 |
Dmitry Stogov |
Improve basename(). Avoid calling mblen() for ASCII compatible locales.
|
Revision tags: php-7.3.27 |
|
#
3e01f5af |
| 15-Jan-2021 |
Nikita Popov |
Replace zend_bool uses with bool We're starting to see a mix between uses of zend_bool and bool. Replace all usages with the standard bool type everywhere. Of course, zend_bool
Replace zend_bool uses with bool We're starting to see a mix between uses of zend_bool and bool. Replace all usages with the standard bool type everywhere. Of course, zend_bool is retained as an alias.
show more ...
|
#
16cf1b91 |
| 15-Jan-2021 |
Nikita Popov |
compare_function() returns zend_result
|
#
058756b3 |
| 15-Jan-2021 |
Nikita Popov |
Remove the convert_to_long_base function This function is unused in php-src, and has somewhat dubious semantics, especially since we switched convert_to_long to not use strtol for th
Remove the convert_to_long_base function This function is unused in php-src, and has somewhat dubious semantics, especially since we switched convert_to_long to not use strtol for the base 10 case. If you want to convert strings from a different base, use ZEND_STRTOL directly.
show more ...
|
#
b4292284 |
| 14-Jan-2021 |
Nikita Popov |
Remove zend_locale_sprintf_double() This function is unused, and also not particularly useful now that PHP no longer prints doubles in a locale-sensitive way unless someone really go
Remove zend_locale_sprintf_double() This function is unused, and also not particularly useful now that PHP no longer prints doubles in a locale-sensitive way unless someone really goes out of their way to force it.
show more ...
|
#
422d1665 |
| 14-Jan-2021 |
Nikita Popov |
Make convert_to_*_ex simple aliases of convert_to_* Historically, the _ex variants separated the zval first, if a conversion was necessary. This distinction no longer makes sense sin
Make convert_to_*_ex simple aliases of convert_to_* Historically, the _ex variants separated the zval first, if a conversion was necessary. This distinction no longer makes sense since PHP 7. The only difference that was still left is that _ex checked whether the type is the same first, but the usage of these macros did not actually distinguish on whether such an inlined check is valuable or not in a given context. Also drop the unused convert_to_explicit_type macros.
show more ...
|
Revision tags: php-7.3.26, php-7.3.26RC1, php-7.3.25, php-7.3.25RC1, php-7.3.24, php-7.3.24RC1, php-7.3.23, php-7.3.23RC1, php-7.3.22 |
|
#
fa8d9b11 |
| 28-Aug-2020 |
George Peter Banyard |
Improve type declarations for Zend APIs Voidification of Zend API which always succeeded Use bool argument types instead of int for boolean arguments Use bool return type for functio
Improve type declarations for Zend APIs Voidification of Zend API which always succeeded Use bool argument types instead of int for boolean arguments Use bool return type for functions which return true/false (1/0) Use zend_result return type for functions which return SUCCESS/FAILURE as they don't follow normal boolean semantics Closes GH-6002
show more ...
|
Revision tags: php-7.3.22RC1, php-7.3.21 |
|
#
b2248789 |
| 29-Jul-2020 |
George Peter Banyard |
Implement 'Saner Numeric Strings' RFC: RFC: https://wiki.php.net/rfc/saner-numeric-strings This removes the -1 allow_error mode from is_numeric_string functions and replaces it by
Implement 'Saner Numeric Strings' RFC: RFC: https://wiki.php.net/rfc/saner-numeric-strings This removes the -1 allow_error mode from is_numeric_string functions and replaces it by a trailing boolean out argument to preserve BC in a couple of places. Most of the changes can be resumed to "numeric" strings which emitted a E_NOTICE now emit a E_WARNING and "numeric" strings which emitted a E_WARNING now throw a TypeError. This mostly affects: - String offsets - Arithmetic operations - Bitwise operations Closes GH-5762
show more ...
|