Changes since Pike 7.6: |
---------------------------------------------------------------------- |
|
o New syntax to index from the end in range operations. |
A "<" can be added before an index in the [..] operator to count |
from the end instead. This is convenient to e.g. chop off the last |
element in an array: a[..<1]. |
|
o New `[..] operator function. |
Range operations have been separated from the `[] operator function |
and is handled by a new `[..] which provides greater control in how |
the range bounds are specified. For compatibility, if there is no |
`[..] then `[] is still called for range operations. |
|
o Generalized this and this_program. |
It is now possible to refer to inherits in objects. Example: |
class A { |
int a; |
void foo() { werror("A\n"); } |
} |
class B { |
inherit A; |
int b; |
void foo() { werror("B\n"); } |
A::this_program get_a() { return A::this; } |
} |
In the above B()->get_a() will return an object with two symbols, |
'a' and 'foo', but B()->get_a()->foo() will still write "B\n". |
|
o Unicode escapes. |
Pike now understands the common way to escape unicode chars, using |
\uxxxx and \Uxxxxxxxx escapes. These escapes works both in string |
and character literals and in the preprocessor. The latter means |
that unicode escapes can be used in identifiers, which is useful if |
they contain characters that can't be represented raw in the source |
code charset. |
|
o Stdio.* |
Stdio.cp can now work recursively in a directory tree. |
Stdio.cp now keeps permissions when copying. |
Added Stdio.recursive_mv which works on every OS and also when the |
destination isn't on the same filesystem as the source. |
|
o Process.popen |
Process.popen is now able to run in nonblocking mode. If a second |
argument is provided a file object will be opened with that mode |
and return, enabling two way communication with the new process. |
|
o bin/precompile.pike |
Voidable pointer types are no longer promoted to mixed. |
|
o PIKE_PORTABLE_BYTECODE |
--with-portable-bytecode is now the default. Pike programs that have |
been dumped on one architecture now can be decoded on another. |
|
o Math.Matrix |
Multiplication were bugged and gave B*A instead of A*B. Now fixed. |
|
|