PHP 7.2 INTERNALS UPGRADE NOTES 1. Internal API changes a. Path related functions b. php_win32_get_random_bytes() c. nice() Windows implementation d. ZEND_ACC_CLONE removed e. IS_TYPE_IMMUTABLE removed f. zend_arg_info.class_name removed g. ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX changed h. valid_symbol_table removed 2. Build system changes a. Unix build system changes b. Windows build system changes 3. Module changes ======================== 1. Internal API changes ======================== a. Path related functions - CWD_API void realpath_cache_del(const char *path, size_t path_len); - CWD_API realpath_cache_bucket* realpath_cache_lookup(const char *path, size_t path_len, time_t t); - PHPAPI void php_clear_stat_cache(zend_bool clear_realpath_cache, const char *filename, size_t filename_len); - PHPAPI void php_stat(const char *filename, size_t filename_length, int type, zval *return_value); b. php_win32_get_random_bytes() The internal randomness source on Windows switched to use CNG API. c. nice() now have a Windows alternative that is implemented in win32/nice.c, using SetPriorityClass(). See the implementation for more in-depth details. This also defines HAVE_NICE. d. ZEND_ACC_CLONE is removed, but was not used in previous versions e. IS_TYPE_IMMUTABLE is removed, IS_TYPE_COPYABLE can be used instead Z_IMMUTABLE() check function is still available f. zend_arg_info class_name member is removed, use ZEND_TYPE_NAME instead g. ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX classname option is removed use ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX for simple type use ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX for object h. valid_symbol_table is removed from executor_globals. Use EG(active) instead of removed EG(valid_symbol_table) ======================== 2. Build system changes ======================== a. Unix build system changes b. Windows build system changes . Minimum supported Windows versions are Windows 7/Server 2008 R2. . --enable-one-shot configure option is removed, --with-mp is usable. . The new binary tools SDK is required for Windows builds, the documentation is available under https://wiki.php.net/internals/windows/stepbystepbuild_sdk_2 . Visual Studio 2017 is utilized for the Windows builds . Clang build with ASAN is supported with clang 5+ ======================== 3. Module changes ======================== - Pcre: . php_pcre_replace and php_pcre_replace_impl expect a zend_string instead of a zval and is_callable_replace options is removed: - PHPAPI zend_string *php_pcre_replace(zend_string *regex, zend_string *subject_str, char *subject, int subject_len, zend_string *replace_str, int limit, int *replace_count); - PHPAPI zend_string *php_pcre_replace_impl(pcre_cache_entry *pce, zend_string *subject_str, char *subject, int subject_len, zend_string *replace_str, int limit, int *replace_count); - Session: . php_session_start()/session_reset_id() return value is changed from void to int. It returns SUCCESS/FAILURE. . Session module manages session status correctly. - OpenSSL: . Windows builds ship with OpenSSL 1.1 by default, lower versions are still supported with custom deps.