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