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