3 =head1 Deprecation in Parrot
5 This is a list of currently deprecated features of Parrot. Every deprecation
6 has an associated RT ticket. Each item indicates the last release it's
7 guaranteed to appear in. Items marked with a release of ??? are still
8 deprecated, but a firm deadline for their removal has not yet been established.
10 When deprecated items are removed, all usage of the feature in the
11 repository should be updated or removed; including documentation.
13 When deprecating opcodes, in addition to the ticket, be sure to mark the
14 opcode with the :deprecated flag; this will allow users to enable deprecation
15 warnings selectively with:
17 .include 'include/warnings.pasm'
18 warningson .PARROT_WARNINGS_DEPRECATED_FLAG
20 And then receive runtime warnings if they are using any deprecated opcodes.
21 The C<-w> command line option for parrot can also be used to enable all
28 =item * C<type_keyed> [post 0.5.2]
32 =item * C<type_keyed_int> [post 0.5.2]
36 =item * C<type_keyed_str> [post 0.5.2]
40 =item * C<type> [post 0.5.2]
44 =item * C<new_from_string> [post 0.5.0]
54 =item * C<pioctl> [post 0.5.1]
58 =item * C<store_global> [post 0.5.0]
60 See RT #48016. Replace usage with set_[hll,root]_global variants.
62 =item * C<find_global> [post 0.5.0]
64 See RT #48018. Replace usage with get_[hll,root]_global variants.
66 =item * C<new>(out PMC, in INT, in STR) [post 0.5.0]
70 =item * C<get_mro> [post 0.5.0]
80 =item * Integer Type IDs [post 0.5.0]
82 See RT #48024. Instead of C<$P0 = new Integer> or C<$P0 = new .Integer>,
83 use the following syntax, which works for both PMCs and objects.
87 =item * PMC union struct [post 0.5.0]
89 See RT #48014. This will be removed once all core PMCs have been updated.
97 =item * old-style PASM registers [post 0.6.4]
99 Old-style PASM registers without the C<$> character are deprecated; use
100 PIR-style registers only.
104 =item * C<global> keyword [post 0.6.4]
109 =item * bare method names [post 0.6.4]
111 C<foo.bar()>, where C<bar> is not a local identifier (thus indicating
112 a method name) is no longer supported.
116 =item * C<#line> [post 0.6.4]
118 Will be replaced by C<.line> to be more consistent with other PIR syntax.
120 See [RT#45857], [RT#43269], and [RT#47141].
122 =item * C<.pragma n_operators> [post 0.6.4]
126 =item * C<<.namespace <identifier> >> syntax [post 0.5.1]
130 =item * Use of C<::> in identifiers [post 0.5.1]
134 =item * C<.namespace [ "a" .. "b" ]> [post 0.5.0]
138 =item * C<.namespace> (without brackets) [post 0.6.2]
140 All should C<.namespace> directives without brackets should take
141 empty brackets to indicate the root namespace.
144 =item * C<.HLL_map> <string> ',' <string> [post 0.6.4]
146 This will be replaced by C<.HLL_map> <string> '=' <string>
150 =item * C<.HLL> <string> ',' <string> [post 0.6.4]
152 This will be replaced by C<.HLL> <string>; the second string (and
153 comma to separate them) will no longer be accepted. Use C<.loadlib>
154 for specifying the library name.
158 =item * vtable name .constants and __vtable overrides [post 0.5.2]
162 =item * Assignment syntax with opcodes [post ???]
164 See RT #36283. When the first argument of an opcode is C<OUT>, then
165 the assignment syntax will be allowed, as it is today.
167 In any other case (i.e. C<INOUT>, C<IN>), this will become
168 a syntax error. For example:
171 $P0 = substr 1, 2, "x"
176 substr $P0, 1, 2, "x"
178 =item * mmdvtregister and mmdvtablefind opcodes [post 0.7.0]
180 These opcodes are part of the old MMD system, now deprecated and to be removed
181 when the branch is merged in after the release.
185 =head1 Parrot Compiler tools
187 =head2 Capture-based objects
191 =item get_array, get_hash, get_scalar deprecations [post 0.6.2]
193 See RT#54000. The 'get_array', 'get_hash', and 'get_scalar'
194 methods are now called 'list', 'hash', and 'item' respectively.