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.
