More fixes.
[mpsl.git] / RELEASE_NOTES
bloba16a396c1bde5f6a379bd6193adbad635b5be813
1 MPSL Release Notes
2 ==================
4 2.0.2
5 -----
7  - New features:
8     - New function tr(), to transliterate strings.
10 2.0.1
11 -----
13  - New features:
14     - An abbreviated way of defining hashes (ala JavaScript).
15  - Bugfixes:
16     - Several fixes to for() construction: fixed incorrect
17       calling order and for (;;) is accepted for infinite loops.
19 2.0.0
20 -----
22  - A new C-like for() control flow construction.
23  - Updated to match MPDM refactoring (no more sweeping /
24    garbage collection).
25  - New multithreading support:
26     - A function can be prefixed with & (ampersand) to execute
27       it in a new thread; the new thread handler is returned.
28     - Support for mutex values.
29     - Support for semaphore values.
30  - Any function argument not explicitly declared and
31    sent as argument in the function call is stored
32    in the local array _ (underscore).
33  - The adel() function no longer returns the deleted element.
34  - mpsl_compile_file() now has an additional argument
35    holding the source file search path.
36  - The following functions had had their arguments swapped:
37     - split().
38     - join().
39     - sscanf().
40     - map().
41     - grep().
42     - regex().
43     - sregex().
45 1.0.9
46 -----
48  * New syntax for _inverse_ calling functions; the new
49    construction `val1->func(val2)' is equivalent
50    to `func(val1, val2)'. This way, chained function
51    calls where the first argument of one is the return
52    of the other are much easier to write and understand.
53  * Numbers prefixed by `0b' are accepted as binary numbers
54    and `sprintf()' accepts `%b' to print them.
55  * New operands >> and << (bit shifting).
56  * New operands &=, |= and ^=, <<= and >>=.
57  * New operand ** (power).
58  * New function `random()'.
59  * New trapping functionality.
61 1.0.8
62 -----
64  * New function `sscanf()'.
65  * New function `compile()', to compile a string of MPSL code
66    to an executable value.
67  * New function `bincall()', to create an executable value
68    given a pointer to binary code.
69  * The `mpsl' executable now ignores the first line of an MPSL
70    script if it starts with #!.
71  * Real numbers can be expressed in scientific notation.
73 1.0.7
74 -----
76  * The `write()' allows a variable argument of values to write.
77  * Values are dumped as MPSL instead of MPDM's low-level format.
78  * New function `chdir()'.
80 1.0.6
81 -----
83  * Fixed a strange but annoying bug regarding local variables
84    losing their values in anonymous subroutines.
86 1.0.5
87 -----
89  * New `g' flag in regex().
90  * Fix backslash parsing in strings.
92 1.0.4
93 -----
95  * The iterator variable in foreach() is _always_ created
96    as a local variable inside the block. Also, the old
97    construction foreach(local v, ...) issues a warning,
98    as it's redundant.
100 1.0.3
101 -----
103  * Anonymous subroutines now run inside a block frame
104    instead of a subroutine frame. This way, they can have
105    access to local variables defined in the subroutine
106    they are called from. So, for example, if you run
107    map() inside a subroutine, its anonymous code block
108    can access the local variables defined there.
109  * getenv() doesn't crash if the environment variable
110    does not exist.
112 1.0.2
113 -----
115  * Small internal refactoring regarding subroutine and
116    block frames. Frame creation code has been unified,
117    so block frames don't crash when a NULL local symbol
118    table is sent as argument, and can have arguments.
119    This change is not visible from outside; only a step
120    towards closing bug #1107.