7 * Adapted to MPDM 2.0.0.
8 * Any function argument not explicitly declared and
9 sent as argument in the function call is stored
10 in the local array _ (underscore).
11 * The adel() function no longer returns the deleted element.
12 * mpsl_compile_file() now has an additional argument
13 holding the source file search path.
18 * New syntax for _inverse_ calling functions; the new
19 construction `val1->func(val2)' is equivalent
20 to `func(val1, val2)'. This way, chained function
21 calls where the first argument of one is the return
22 of the other are much easier to write and understand.
23 * Numbers prefixed by `0b' are accepted as binary numbers
24 and `sprintf()' accepts `%b' to print them.
25 * New operands >> and << (bit shifting).
26 * New operands &=, |= and ^=, <<= and >>=.
27 * New operand ** (power).
28 * New function `random()'.
29 * New trapping functionality.
34 * New function `sscanf()'.
35 * New function `compile()', to compile a string of MPSL code
36 to an executable value.
37 * New function `bincall()', to create an executable value
38 given a pointer to binary code.
39 * The `mpsl' executable now ignores the first line of an MPSL
40 script if it starts with #!.
41 * Real numbers can be expressed in scientific notation.
46 * The `write()' allows a variable argument of values to write.
47 * Values are dumped as MPSL instead of MPDM's low-level format.
48 * New function `chdir()'.
53 * Fixed a strange but annoying bug regarding local variables
54 losing their values in anonymous subroutines.
59 * New `g' flag in regex().
60 * Fix backslash parsing in strings.
65 * The iterator variable in foreach() is _always_ created
66 as a local variable inside the block. Also, the old
67 construction foreach(local v, ...) issues a warning,
73 * Anonymous subroutines now run inside a block frame
74 instead of a subroutine frame. This way, they can have
75 access to local variables defined in the subroutine
76 they are called from. So, for example, if you run
77 map() inside a subroutine, its anonymous code block
78 can access the local variables defined there.
79 * getenv() doesn't crash if the environment variable
85 * Small internal refactoring regarding subroutine and
86 block frames. Frame creation code has been unified,
87 so block frames don't crash when a NULL local symbol
88 table is sent as argument, and can have arguments.
89 This change is not visible from outside; only a step
90 towards closing bug #1107.