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