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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
<chapter title="Backward Compatibility">
<p>Pike is a language under active development. This can lead to
incompatibilities between different versions of Pike. To alleviate
this problem Pike has a backward compatibility layer.</p>
<p>The backward compatibility layer can be engaged in two ways;
either by starting the Pike interpreter with the <tt>-V</tt> option,
or by using the <tt>#pike</tt> preprocessor directive.</p>
<p>The backward compatibility layer affects both the compiler and the
available modules.</p>
<p>Note that the backward compatibility layer does not necessarily
compensate for all incompatibilities documented here, and that
there may be other incompatibilities that have not been documented.</p>
<p>The remainder of this chapter describes the main incompatibilities
between the various versions of Pike and the current version.</p>
<section title="Pike 7.8">
<subsection title="Global Functions">
<p><ref>decode_value()</ref> used to be able to decode programs using
the 'old style' program encoding.</p>
</subsection>
<subsection title="Modules">
<p>The SSL module API has had major changes since Pike 7.8.</p>
<p>The following modules and functions have moved, been renamed or
been deleted:
<matrix>
<r><c><ref>7.8::Gdbm.gdbm</ref></c>
<c><ref>Gdbm.DB</ref></c></r>
<r><c><ref>7.8::Locale.Charset</ref></c>
<c><ref>Charset</ref></c></r>
<r><c><ref>7.8::SSL.alert</ref></c>
<c><ref>SSL.Alert</ref></c></r>
<r><c><ref>7.8::SSL.connection</ref> +
<ref>7.8::SSL.handshake</ref></c>
<c><ref>SSL.ClientConnection</ref> +
<ref>SSL.ServerConnection</ref></c></r>
<r><c><ref>7.8::SSL.context</ref></c>
<c><ref>SSL.Context</ref></c></r>
<r><c><ref>7.8::SSL.packet</ref></c>
<c><ref>SSL.Packet</ref></c></r>
<r><c><ref>7.8::SSL.session</ref></c>
<c><ref>SSL.Session</ref></c></r>
<r><c><ref>7.8::SSL.sslfile</ref></c>
<c><ref>SSL.File</ref></c></r>
<r><c><ref>7.8::SSL.sslport</ref></c>
<c><ref>SSL.Port</ref></c></r>
<r><c><ref>7.8::SSL.state</ref></c>
<c><ref>SSL.State</ref></c></r>
<r><c><ref>7.8::Tools.PEM</ref></c>
<c><ref>Standards.PEM</ref></c></r>
<r><c><ref>7.8::Tools.X509</ref></c>
<c><ref>Standards.X509</ref></c></r>
<r><c><ref>7.8::Yabu.db</ref></c>
<c><ref>Yabu.DB</ref></c></r>
<r><c><ref>7.8::Yabu.table</ref></c>
<c><ref>Yabu.Table</ref></c></r>
<r><c><ref>7.8::_PGsql</ref></c>
<c>(deleted)</c></r>
<r><c><ref>7.8:_files</ref></c>
<c><ref>_Stdio</ref></c></r>
</matrix>
</p>
</subsection>
<subsection title="Compiler">
<p>The compiler used to not complain about use of
the keyword <tt>static</tt>.</p>
<p>The ancient syntax for arrays (<tt>string *</tt> was an alias for
<tt>array(string)</tt>) used to be supported (but complained about),
but has now been removed completely.</p>
</subsection>
<subsection title="Build options">
<p>The builtin security sandbox has been deprecated.</p>
<p>Compiling without support for bignums is no longer supported.</p>
<p>The (optional) support for facet classes has been removed.</p>
</subsection>
</section>
<section title="Pike 7.6">
<subsection title="Modules">
<p>Signal handlers in GTK2 used to get their arguments in the
form of an array.</p>
<p>Sql.mysql used to automatically attempt to reconnect on
broken connection.</p>
<p>The following modules and functions have moved, been renamed or
been deleted:
<matrix>
<r><c><ref>ADT.Heap.size()</ref></c>
<c>Deprecated by <ref>ADT.Heap._sizeof()</ref></c></r>
<r><c><ref>ADT.Heap.top()</ref></c>
<c>Deprecated by <ref>ADT.Heap.pop()</ref></c></r>
<r><c><ref>7.6::Array.transpose_old</ref></c>
<c>(deleted)</c></r>
<r><c><ref>7.6::Image.colortable</ref></c>
<c><ref>Image.Colortable</ref></c></r>
<r><c><ref>7.6::Image.font</ref></c>
<c><ref>Image.Font</ref></c></r>
<r><c><ref>7.6::Image.image</ref></c>
<c><ref>Image.Image</ref></c></r>
<r><c><ref>7.6::_Charset</ref></c>
<c><ref>Locale.Charset.module</ref></c></r>
<r><c><ref>7.6::spider.isbasechar()</ref></c>
<c><ref>Parser.XML.isbasechar()</ref></c></r>
<r><c><ref>7.6::spider.iscombiningchar()</ref></c>
<c><ref>Parser.XML.iscombiningchar()</ref></c></r>
<r><c><ref>7.6::spider.isdigit()</ref></c>
<c><ref>Parser.XML.isdigit()</ref></c></r>
<r><c><ref>7.6::spider.isextender()</ref></c>
<c><ref>Parser.XML.isextender()</ref></c></r>
<r><c><ref>7.6::spider.isfirstnamechar()</ref></c>
<c><ref>Parser.XML.isfirstnamechar()</ref></c></r>
<r><c><ref>7.6::spider.ishexchar()</ref></c>
<c><ref>Parser.XML.ishexchar()</ref></c></r>
<r><c><ref>7.6::spider.isidographic()</ref></c>
<c><ref>Parser.XML.isidographic()</ref></c></r>
<r><c><ref>7.6::spider.isletter()</ref></c>
<c><ref>Parser.XML.isletter()</ref></c></r>
<r><c><ref>7.6::spider.isnamechar()</ref></c>
<c><ref>Parser.XML.isnamechar()</ref></c></r>
<r><c><ref>7.6::spider.isspace()</ref></c>
<c><ref>Parser.XML.ispace()</ref></c></r>
</matrix>
</p>
</subsection>
<subsection title="Compiler">
<p>The compiler used to not complain about use of
the keyword <tt>nomask</tt>.</p>
</subsection>
<subsection title="Runtime">
<p>The <tt>main()</tt> function used to get the environment
as a mapping in argument number three.</p>
<p>The API for <ref>Debug.describe_program()</ref> was different.</p>
</subsection>
</section>
<section title="Pike 7.4 and earlier">
<subsection title="Deprecated">
<p>The backward compatibility code for Pike 7.4 and earlier
has been removed in Pike 8.0.</p>
</subsection>
</section>
</chapter>
|