The slower I/O as a traditional bottleneck on Windows which is
the target of this patch. The recursive path resolution, while being
an allround solution, is expensive when it comes to the common case.
Files with proper ACLs set can be resolved in one go by usage of specific
API. Those are available since Vista, so actually can be called old. Those
simpler api is used for the cases where no CWD_EXPAND is requested. For
the cases where ACLs are improper, the existing solution based on
FindFirstFile still does good job also partially providing quirks. Cases
involing reparse tags and other non local filesystems are also partially
server by new APIs.
The approach uses both APIs - the quick one for the common case still
integrating realpath cache, and the existing one as a fallback. The tests
show the I/O load drop on the realpath resolution part due to less
system calls for the sub part resolution of paths. In most case it is
justified, as the sub parts were otherwise cached or unused as well. The
realpath() implementation in ioutil is also closer to the POSIX.
Zend Extensions should now be declared in their config.w32 with a ZEND_EXTENSION() call instead of EXTENSION(), the parameters sent is identical.
For a cross version compatible config.w32, the following will do:
if (typeof(ZEND_EXTENSION) == 'undefined') {
EXTENSION(...);
} else {
ZEND_EXTENSION(...);
}
New macro ZVAL_COPY_OR_DUP() is used perform duplication, if necessary.
This should eliminate related race-coditions in ZTS build and prevent reference-counting bugs after unclean shutdown.
* master: (26 commits)
Better fix for bug #75451 (Assertion fails while foreach on empty xpath query)
Catch with the latest AppVeyor unzip errors
Fixed type inference
Fix bug #75453 Incorrect reflection on ibase_connect and ibase_pconnect
Fix compiler warnings
We don't use a specific model for a MAKERNOTE so remove these checks that doesn't do anything anyway
Remove these old comments, as for the TODO, there is already a FR for this
Re-enable AppVeyor cache
make sure run-tests reports exit status upon prerequisite error
Remove implicit constants from test case
Fix invalid read in zend_use_undefined_constant()
Fix invalid read in mb_ord()
Remove --with-libmbfl configure option
Fixed bug #75451 (Assertion fails while foreach on empty xpath query)
Add tests for UConverter::getStandards()
convert spaces to tabs in ext/ftp/tests/server.inc
Add tests for ftp_rename
Fix bug #75434 Wrong reflection for mysqli_fetch_all function
Don't optimize input arrays with suffix holes
Fix bug #75307 Wrong reflection for openssl_open function
...