1
  
2
  
3
  
4
  
5
  
6
  
7
  
8
  
9
  
10
  
11
  
12
  
13
  
14
  
15
  
16
  
17
  
18
  
19
  
20
  
21
  
22
  
23
  
24
  
25
  
26
  
27
  
28
  
29
  
30
  
31
  
32
  
33
  
34
  
35
  
36
  
37
  
38
  
39
  
40
  
41
  
42
  
43
  
44
  
45
  
46
  
47
  
48
  
49
  
50
  
51
  
52
  
53
  
54
  
55
  
56
  
57
  
58
  
59
  
60
  
61
  
62
  
63
  
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 Several declarations and definitions (most notably the debug and 
  runtime flags) have moved from main.h to pike_embed.h, in an attempt 
  to add support for embedding. 
 
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.