summaryrefslogtreecommitdiff
path: root/UPGRADING.INTERNALS
blob: 56243d1f81ead0204a8189bf78ed3f385446d320 (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
$Id$

UPGRADE NOTES - PHP X.Y

1. Internal API changes
  a. Streams pooling API
  b. Lowercasing and locales
  c. zend_qsort_r

2. Build system changes
  a. Unix build system changes
  b. Windows build system changes


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

	a. Streams pooling API

The streams pooling API has been removed. The following functions no longer
exist:

PHPAPI int php_stream_context_get_link(php_stream_context *context,
		const char *hostent, php_stream **stream);
PHPAPI int php_stream_context_set_link(php_stream_context *context,
		const char *hostent, php_stream *stream);
PHPAPI int php_stream_context_del_link(php_stream_context *context,
		php_stream *stream);

	b. Lowercasing and locales

The lowercasing functions in zend_operators.c were split into those that do 
lowercasing according to locale rules and those that do ASCII lowercasing.
ASCII:

                zend_str_tolower_copy
                zend_str_tolower_dup
                zend_str_tolower
                zend_binary_strcasecmp
                zend_binary_strncasecmp

Locale-based:
                zend_binary_strncasecmp_l
                zend_binary_strcasecmp_l
                zend_binary_zval_strcasecmp
                zend_binary_zval_strncasecmp
                string_compare_function_ex
                string_case_compare_function

Internal engine lowercasing will be using ASCII-only rules. User-facing functions,
such as strcasecmp, will be using locale rules. 

Two new functions - zend_binary_strncasecmp_l and zend_binary_strcasecmp_l - added as 
locale-based counterparts to zend_binary_strcasecmp and zend_binary_strncasecmp.

	c. zend_qsort_r

Added the function zend_qsort_r():

typedef int  (*compare_r_func_t)(const void *, const void * TSRMLS_DC, void *);
void zend_qsort_r(void *base, size_t nmemb, size_t siz, compare_r_func_t compare, void *arg TSRMLS_DC);

The extra argument it has (relatively to zend_qsort()) is passed to the
comparison function.

	d. get_current_key

The signature of the get_current_key iteration handler has been changed to:

void (*get_current_key)(zend_object_iterator *iter, zval *key TSRMLS_DC);

The key should be written into the zval* using the ZVAL_* macros.

========================
2. Build system changes
========================

  a. Unix build system changes
    - 

  b. Windows build system changes
    - Drop Windows XP and 2003 support.