Skip to content

var_export dom stuff #108

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1,913 commits into
base: master
Choose a base branch
from
Open

var_export dom stuff #108

wants to merge 1,913 commits into from

Conversation

nielsdos
Copy link
Owner

@nielsdos nielsdos commented Jun 5, 2024

No description provided.

TimWolla and others added 30 commits May 8, 2024 20:35
* [skip ci] Update CODING_STANDARDS for the acronym casing RFC

see https://wiki.php.net/rfc/class-naming-acronyms

* Improve formatting in CODING_STANDARDS.md

Co-authored-by: Larry Garfield <[email protected]>

---------

Co-authored-by: Larry Garfield <[email protected]>
In preparation of the opaque object to resource conversion
…14166)

Changed to count trailing zeros using SIMD when converting a string to
a bc_num structure if possible.

Removed unnecessary pointer resetting.

Added UNEXPECTED to some branches.
* PHP-8.3:
  ext/hash: Swap the checking order of __has_builtin and __GNUC__ (php#14185)
* PHP-8.3:
  Fix phpGH-14183: XMLReader::open() can't be overridden
* PHP-8.3:
  Fix phpGH-14189: PHP Interactive shell input state incorrectly handles quoted heredoc literals.
* PHP-8.3:
  Update NEWS for ICU regression fix
using getcpuid having similar signature too.

close phpGH-14188
* PHP-8.3:
  Fix missing deref in C14N (php#14203)
The serialization process uses the system allocator and requires a copy
to request allocated memory once finished. This patch improves this by
using smart_str to build the resulting string, reducing the number of
copies and reducing total peak memory usage.
* PHP-8.3:
  Fix crash in ParentNode::append() when dealing with a fragment containing text nodes
…p#14196)

The code for _bc_do_add and _bc_do_sub were written slightly differently for
similar processing (and add was slower than sub), so I changed the code to one
similar to sub.

Also, _bc_do_add has been changed to use SIMD to perform faster calculations
when possible.
* PHP-8.3:
  [skip ci] Adjust port for gh13860.phpt
* PHP-8.3:
  [skip ci] Fix typo
devnexen and others added 27 commits June 1, 2024 21:50
This one can be undefined or defined to value 1.
* PHP-8.3:
  ext/standard: Fix test conflict with I/O tests
The php_cv_func_clock_get_time cache variable enables cross-compiling
edge cases to manually override the AC_RUN_IFELSE check.
Cache variables php_cv_shm_ipc and php_cv_shm_mmap_anon enable manual
overriding of checks when cross-compiling.
The php_cv_have_stack_limit cache variable enables cross-compiling edge
cases to override the check manually.
Cross-compiling in this case is passed but for the sake of consistency
this check is also cached to enable manual overriding with the
php_cv_iconv_errno cache variable.
This syncs the configure time dependencies for ext/simplexml:
- ext/spl was once optional but since being always available,
  conditional usage was removed
- ext/libxml required
Prefer:

	ZEND_PARSE_PARAMETERS_NONE();

Over:

	if (zend_parse_parameters_none() == FAILURE) {
		RETURN_THROWS();
	}

It's shorter, more modern, and they do the same thing. Technically,
ZEND_PARSE_PARAMETERS_NONE doesn't check that there's an exception,
but it generates one, so it's still cohesive.
This enables cross-compiling edge cases to manually override the checks
with the php_cv_lib_gd_gdImageCreateFrom* cache variables.
Instead of the PHP_SUBST_OLD, which also adds redundant variables to the
generated Makefile, these two can be done with AC_SUBST to be
substituted in the generated main/build-defs.h header and
scripts/php-config script.
IR commit: 97555e12b525b825ab3b2f12bfdfd5cb6c00b2b4
PDO include paths can be simplified and synced as done in other
extensions: either the project root directory or the phpincludedir (for
the system installation). The 'ext' include is automatically appended
when doing phpize build. In php-src it is only present on Windows build.
The PHP_CHECK_PDO_INCLUDES is left intact working as before and checks
if PDO headers are found.
This enables cross-compiling edge cases to override checks with
php_cv_have_common_page_size and php_cv_have_max_page_size cache
variables when target matches one of the conditions in case pattern.

Not done as link check yet due to Clang 9 bug and similar issues:
php#5123
This isn't reachable since ab32d36, because since then the library
itself checks this condition during compilation. The compilation failure
that results of it makes this code not reachable.

This is split off of phpGH-14424.
* PHP-8.3:
  Fix phpGH-11188: Error when building TSRM in ARM64
Recreating this over and over is pointless, cache this as well.
Fixes phpGH-14423.
* PHP-8.3:
  [skip ci] update NEWS for phpGH-14457
  [skip ci] update NEWS for phpGH-14457
  Remove use of SDWORD and SWORD in ODBC extensions (phpGH-14457)
…rs (php#14466)

I had a case where I was intentionally storing a `NULL` pointer within a
HashTable to mark an entry as “blocked”, without paying for the overhead of
checking the entry type when reading the pointer, resulting in semantics that
are similar to using `isset()` instead of `array_key_exists()` in userland.

This worked fine in unoptimized test builds, but due to the `ZEND_ASSUME()` in
the `zend_hash_find_ptr` functions, the optimized release builds turned the
logic of:

    my_pointer = zend_hash_find_ptr(ht, key);
    if (my_pointer == NULL) {
        return;
    }
    *my_pointer;

into

    zv = zend_hash_find(ht, key);
    if (zv) {
        *Z_PTR_P(zv);
    } else {
        return;
    }

thus introducing a hard-to-debug and compiler-dependent crash when the entry
exists, but the stored pointer is `NULL`.

Change the `ZEND_ASSUME()` in the setters to `ZEND_ASSERT()`. This would have
made my mistake immediately obvious in debug builds when storing the pointer.
The getters still use `ZEND_ASSUME()` under the assumption that they are called
much more often, reducing the impact on debug builds: Assuming the developer
uses the `_ptr` variants for both reading and writing the entries, the mistake
will be reliably caught during writing, making the assert during reading
unnecessary.

For release builds the `ZEND_ASSERT()` will be equivalent to `ZEND_ASSUME()`,
avoiding any performance impact for those.
@nielsdos nielsdos changed the title wip var_export dom stuff Jun 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.