summaryrefslogtreecommitdiff
path: root/UPGRADING.INTERNALS
blob: a4e3c83b9c5fc3d142eed46f9010fa6da8bc34e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
$Id$

UPGRADE NOTES - PHP X.Y

1. Internal API changes
  a. virtual_file_ex
  b. stat/lstat support
  c. readlink support
  d. layout of some core ZE structures (zend_op_array, zend_class_entry, ...)
  e. Zend\zend_fast_cache.h has been removed
  f. API Signature changes

========================
1. Internal API changes
========================

	a. virtual_file_ex

virtual_file_ex takes now a TSRM context as last parameter:
CWD_API int virtual_file_ex(cwd_state *state, const char *path, 
 verify_path_func verify_path, int use_realpath TSRLS_DC);

	b. stat/lstat support

lstat is now available on all platforms. On unix-like platform
php_sys_lstat is an alias to lstat (when avaible). On Windows it is now 
available using php_sys_lstat. php_sys_stat and php_sys_lstat usage is recommended 
instead of calling lstat directly, to ensure portability.

	c. readlink support

readlink is now available on all platforms. On unix-like platform
php_sys_readlink is an alias to readlink (when avaible). On Windows it is now 
available using php_sys_readlink. php_sys_readlink usage is recommended 
instead of calling readlink directly, to ensure portability.

	d. layout of some core ZE structures (zend_op_array, zend_class_entry, ...)

. zend_function.pass_rest_by_reference is replaced by
  ZEND_ACC_PASS_REST_BY_REFERENCE in zend_function.fn_flags
. zend_function.return_reference is replaced by ZEND_ACC_RETURN_REFERENCE
  in zend_function.fn_flags
. zend_arg_info.required_num_args removed. it was needed only for internal
  functions. Now the first arg_info for internal function (which has special
  meaning) is represented by zend_internal_function_info structure.
. zend_op_array.size, size_var, size_literal, current_brk_cont,
  backpatch_count moved into CG(context), because they are used only during
  compilation.
. zend_op_array.start_op is moved into EG(start_op), because it's used
  only for 'interactive' execution of single top-level op-array.
. zend_op_array.done_pass_two is replaced by ZEND_ACC_DONE_PASS_TWO in
  zend_op_array.fn_flags.
. op_array.vars array is trimmed (reallocated) during pass_two.
. zend_class_entry.constants_updated is replaced by
  ZEND_ACC_CONSTANTS_UPDATED in zend_class_entry.ce_flags
. the size of zend_class_entry is reduced by sharing the same memory space
  by different information for internal and user classes.
  See zend_class_inttry.info union. 
  
	e. Zend\zend_fast_cache.h 
It should not have been used anymore since php5, but now this header has
been removed. The following macros are not available anymore:

ZEND_FAST_ALLOC(p, type, fc_type)
ZEND_FAST_FREE(p, fc_type)
ZEND_FAST_ALLOC_REL(p, type, fc_type)
ZEND_FAST_FREE_REL(p, fc_type)

Use emalloc, emalloc_rel, efree or efree_rel instead.

	f. API Signature changes
. zend_list_insert
  ZEND_API int zend_list_insert(void *ptr, int type TSRMLS_DC);
  call: zend_list_insert(a, SOMETYPE TSRMLS_CC);
  NB: If zend_list_insert is used to register a resource, 
  ZEND_REGISTER_RESOURCE could be used instead.

. php_le_stream_context(TSRMLS_C)
  PHPAPI php_stream_context *php_stream_context_alloc(TSRMLS_D)
  call: context  = php_stream_context_alloc(TSRMLS_C);

. php_stream_context_alloc
  PHPAPI php_stream_context *php_stream_context_alloc(TSRMLS_D);
  call: context  = php_stream_context_alloc(TSRMLS_C);
. sapi_register_default_post_reader
  SAPI_API int sapi_register_default_post_reader(void (*default_post_reader)(TSRMLS_D) TSRMLS_DC);

. sapi_register_treat_data
  SAPI_API int sapi_register_treat_data(void (*treat_data)(int arg, char *str, zval *destArray TSRMLS_DC) TSRMLS_DC);

. sapi_register_input_filter
  SAPI_API int sapi_register_input_filter(unsigned int (*input_filter)(int arg, char *var, char **val, unsigned int val_len, unsigned int *new_val_len TSRMLS_DC), unsigned int (*input_filter_init)(TSRMLS_D) TSRMLS_DC);
 
. tsrm_win32_access
  TSRM_API int tsrm_win32_access(const char *pathname, int mode TSRMLS_DC);

. popen_ex (win32)
  TSRM_API FILE *popen_ex(const char *command, const char *type, const char *cwd, char *env TSRMLS_DC);

. php_get_current_user
  PHPAPI php_get_current_user(TSRMLS_D)
  Call: char *user = php_get_current_user(TSRMLS_C);

. php_idate
  PHPAPI php_idate(char format, time_t ts, int localtime TSRMLS_DC)
  Call: int ret = php_idate(format, ts, localtime TSRMLS_CC)