Updated TODO.
[mpdm.git] / RELEASE_NOTES
blob608541154193651ccfdbc5e1121f00196e388d23
1 MPDM Release Notes
2 ==================
4 2.0.2
5 -----
7  - New features:
8    - New function mpdm_tr(), to transliterate strings.
9  - Bugfixes:
10    - The pclose() win32 implementation returns the process exit
11      status correctly.
13 2.0.1
14 -----
16  - Optimizations:
17    - Numeric values created with MPDM_I() and MPDM_R() do not have
18      their string representation created until needed by a call to
19      mpdm_string() (which can never happen).
20  - New features:
21    - New function mpdm_sget_i().
22    - New macros MPDM_AA() and MPDM_AS(), for local stack-allocated
23      (i.e. using alloca()) arrays and strings, meant to be used
24      for optimized, short-lived temporary values.
26 2.0.0
27 -----
29  - The system has been refactored to be a pure reference counting
30    system, so sweeping / garbage collection no longer exists.
31  - Executable values and functions now include a new argument to
32    hold a context (used to implement local symbol tables and such).
33  - mpdm_adel() and mpdm_hdel() no longer return the deleted element.
34  - mpdm_aset() and mpdm_hset() no longer return the old element.
35  - mpdm_sort() sorts the array instead of returning a new one.
36  - New functions mpdm_strcat_sn(), mpdm_pokewsn(),
37    mpdm_join_s(), mpdm_split_s(), mpdm_cmp_s(), mpdm_strcat_s().
38  - Some refactoring to diminish memory usage (no more `prev'
39    pointers in the value list, less residual values).
40  - mpdm_regex() always return an array in global searches (maybe
41    an empty one) and if searching for an array of regexes (maybe
42    be a partial one).
43  - The following functions had had their arguments swapped:
44     - mpdm_split() and mpdm_split_s().
45     - mpdm_join() and mpdm_join_s().
46     - mpdm_sscanf().
47     - mpdm_regex().
48     - mpdm_sregex().
50 1.0.9
51 -----
53  * mpdm_ival() now accepts numbers prefixed by `0b' as binary
54    numbers.
55  * Similarly, mpdm_sprintf() now accepts the `%b' code to
56    print a value as a binary number.
57  * Fixed mpdm_sset() when the previous-to-last value to be
58    assigned is executable (this is bug 1114).
59  * New function mpdm_iterator().
61 1.0.8
62 -----
64  * New function mpdm_sscanf().
65  * Fixed mpdm_encoding() to allow again empty strings as its
66    argument to fall back to default encoding.
67  * Improved file encoding autodetection by looking at the
68    UTF BOM marks. The detected encoding is stored in the
69    `DETECTED_ENCODING' root key.
71 1.0.7
72 -----
74  * Fixed a bug when processing backslashes in the substitution
75    string in sregex(), that made them dissappear if they were
76    not escaping an ampersand.
77  * Fixed a bug in win32 globbing.
78  * The dump_1() function is now pluggable.
79  * New function mpdm_chdir().
81 1.0.6
82 -----
84  * The environment is stored in a hash called ENV in mpdm_root().
85  * Under win32, the LANG environment variable is hand-built if
86    none is set.
87  * If the third argument to sregex() is a hash, the values can
88    now also be executable ones.
89  * New internal flag for values to mark them as deleted.
91 1.0.5
92 -----
94  * The mpdm_regex() function now accepts a new flag, `g', to match
95    globally; in this case, an array of matches are returned instead
96    of a string scalar.
97  * The mpdm_stat() function now returns a 14 element array, with a
98    newly #13 argument containing the canonicalized file name, if
99    the underlying system supports it.
100  * A bunch of embedded charset encoders have been implemented for
101    iso8859-1, utf-16 and utf-32 with or without BOM autodetection.
103 1.0.4
104 -----
106  * API Changes; const has been added wherever possible.
108 1.0.3
109 -----
111  * The hashing function has changed to a less accurate but faster one.
112  * There is a new, adaptive way of sweeping: if default_sweep if set
113    to a negative value (different from -1), it's used as a divisor
114    of the total count of values; this will be the number of values
115    that will be swept on each call to mpdm_sweep(0). This way, the
116    number of swept values depend on the total count.
117  * New functions mpdm_set_ival() and mpdm_set_rval().
118  * New function mpdm_get_filehandle().
120 1.0.2
121 -----
123  * Components of a compact symbol can be executable, apart from
124    hashes and arrays.
125  * mpdm_cmp() is optimized to return 0 when comparing the same value.
127 1.0.1
128 -----
130  * mpdm_cmp() now correctly compares NULL and NULL as equal.
131  * %c in mpdm_sprintf() now works with Unicode (wchar_t) characters.
132  * The substitution string in mpdm_sregex() now can include the
133    special character & to select the matched string. To include a
134    literal &, escape it with \.