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