8 - Numeric values created with MPDM_I() and MPDM_R() do not have
9 their string representation created until needed by a call to
10 mpdm_string() (which can never happen).
12 - New function mpdm_sget_i().
13 - New macros MPDM_AA() and MPDM_AS(), for local stack-allocated
14 (i.e. using alloca()) arrays and strings, meant to be used
15 for optimized, short-lived temporary values.
20 - The system has been refactored to be a pure reference counting
21 system, so sweeping / garbage collection no longer exists.
22 - Executable values and functions now include a new argument to
23 hold a context (used to implement local symbol tables and such).
24 - mpdm_adel() and mpdm_hdel() no longer return the deleted element.
25 - mpdm_aset() and mpdm_hset() no longer return the old element.
26 - mpdm_sort() sorts the array instead of returning a new one.
27 - New functions mpdm_strcat_sn(), mpdm_pokewsn(),
28 mpdm_join_s(), mpdm_split_s(), mpdm_cmp_s(), mpdm_strcat_s().
29 - Some refactoring to diminish memory usage (no more `prev'
30 pointers in the value list, less residual values).
31 - mpdm_regex() always return an array in global searches (maybe
32 an empty one) and if searching for an array of regexes (maybe
34 - The following functions had had their arguments swapped:
35 - mpdm_split() and mpdm_split_s().
36 - mpdm_join() and mpdm_join_s().
44 * mpdm_ival() now accepts numbers prefixed by `0b' as binary
46 * Similarly, mpdm_sprintf() now accepts the `%b' code to
47 print a value as a binary number.
48 * Fixed mpdm_sset() when the previous-to-last value to be
49 assigned is executable (this is bug 1114).
50 * New function mpdm_iterator().
55 * New function mpdm_sscanf().
56 * Fixed mpdm_encoding() to allow again empty strings as its
57 argument to fall back to default encoding.
58 * Improved file encoding autodetection by looking at the
59 UTF BOM marks. The detected encoding is stored in the
60 `DETECTED_ENCODING' root key.
65 * Fixed a bug when processing backslashes in the substitution
66 string in sregex(), that made them dissappear if they were
67 not escaping an ampersand.
68 * Fixed a bug in win32 globbing.
69 * The dump_1() function is now pluggable.
70 * New function mpdm_chdir().
75 * The environment is stored in a hash called ENV in mpdm_root().
76 * Under win32, the LANG environment variable is hand-built if
78 * If the third argument to sregex() is a hash, the values can
79 now also be executable ones.
80 * New internal flag for values to mark them as deleted.
85 * The mpdm_regex() function now accepts a new flag, `g', to match
86 globally; in this case, an array of matches are returned instead
88 * The mpdm_stat() function now returns a 14 element array, with a
89 newly #13 argument containing the canonicalized file name, if
90 the underlying system supports it.
91 * A bunch of embedded charset encoders have been implemented for
92 iso8859-1, utf-16 and utf-32 with or without BOM autodetection.
97 * API Changes; const has been added wherever possible.
102 * The hashing function has changed to a less accurate but faster one.
103 * There is a new, adaptive way of sweeping: if default_sweep if set
104 to a negative value (different from -1), it's used as a divisor
105 of the total count of values; this will be the number of values
106 that will be swept on each call to mpdm_sweep(0). This way, the
107 number of swept values depend on the total count.
108 * New functions mpdm_set_ival() and mpdm_set_rval().
109 * New function mpdm_get_filehandle().
114 * Components of a compact symbol can be executable, apart from
116 * mpdm_cmp() is optimized to return 0 when comparing the same value.
121 * mpdm_cmp() now correctly compares NULL and NULL as equal.
122 * %c in mpdm_sprintf() now works with Unicode (wchar_t) characters.
123 * The substitution string in mpdm_sregex() now can include the
124 special character & to select the matched string. To include a
125 literal &, escape it with \.