This is a list of currently deprecated features of Parrot. Every deprecation has an associated RT ticket. Each item indicates the last release it's guaranteed to appear in. Items marked with a release of ??? are still deprecated, but a firm deadline for their removal has not yet been established.
When deprecated items are removed, all usage of the feature in the repository should be updated or removed; including documentation.
When deprecating opcodes, in addition to the ticket, be sure to mark the opcode with the :deprecated flag; this will allow users to enable deprecation warnings selectively with:
.include 'include/warnings.pasm' warningson .PARROT_WARNINGS_DEPRECATED_FLAG
And then receive runtime warnings if they are using any deprecated opcodes. The -w command line option for parrot can also be used to enable all warnings.
-w
type_keyed [post 0.5.2]
type_keyed
See RT #48577.
type_keyed_int [post 0.5.2]
type_keyed_int
See RT #48579.
type_keyed_str [post 0.5.2]
type_keyed_str
See RT #48581.
type [post 0.5.2]
type
See RT #48567.
new_from_string [post 0.5.0]
new_from_string
See RT #47011.
cmodulus and variants [post 0.7.0]
cmodulus
See RT #58550.
pioctl [post 0.5.1]
pioctl
See RT #48589.
store_global [post 0.5.0]
store_global
See RT #48016. Replace usage with set_[hll,root]_global variants.
find_global [post 0.5.0]
find_global
See RT #48018. Replace usage with get_[hll,root]_global variants.
new(out PMC, in INT, in STR) [post 0.5.0]
new
get_mro [post 0.5.0]
get_mro
See RT #47976.
n_* math opcode variants [post 0.7.1]
n_*
See RT #58410.
Integer Type IDs [post 0.5.0]
See RT #48024. Instead of $P0 = new Integer or $P0 = new .Integer, use the following syntax, which works for both PMCs and objects.
$P0 = new Integer
$P0 = new .Integer
$P0 = new 'Integer'
PMC union struct [post 0.5.0]
See RT #48014. This will be removed once all core PMCs have been updated.
old-style PASM registers [post 0.6.4]
Old-style PASM registers without the $ character are deprecated; use PIR-style registers only.
$
See RT #57638.
global keyword [post 0.6.4]
global
See RT #48016 and RT #48018.
bare method names [post 0.6.4]
foo.bar(), where bar is not a local identifier (thus indicating a method name) is no longer supported.
foo.bar()
bar
See RT #45859.
#line [post 0.6.4]
#line
Will be replaced by .line to be more consistent with other PIR syntax.
.line
See [RT#45857], [RT#43269], and [RT#47141].
.pragma n_operators [post 0.6.4]
.pragma n_operators
See RT #57438.
<.namespace <identifier >> syntax [post 0.5.1]
<.namespace <identifier
See RT #48737.
Use of :: in identifiers [post 0.5.1]
::
See RT #48735.
.namespace [ "a" .. "b" ] [post 0.5.0]
.namespace [ "a" .. "b" ]
See RT #46715.
.namespace (without brackets) [post 0.6.2]
.namespace
All should .namespace directives without brackets should take empty brackets to indicate the root namespace. See RT #48549.
.HLL_map <string> ',' <string> [post 0.6.4]
.HLL_map
This will be replaced by .HLL_map <string> '=' <string>
See RT #57430.
.HLL <string> ',' <string> [post 0.6.4]
.HLL
This will be replaced by .HLL <string>; the second string (and comma to separate them) will no longer be accepted. Use .loadlib for specifying the library name.
.loadlib
See RT #57428.
vtable name .constants and __vtable overrides [post 0.5.2]
See RT #48877.
Assignment syntax with opcodes [post ???]
See RT #36283. When the first argument of an opcode is OUT, then the assignment syntax will be allowed, as it is today.
OUT
In any other case (i.e. INOUT, IN), this will become a syntax error. For example:
INOUT
IN
$S0 = print $P0 = substr 1, 2, "x"
Will have to be:
print $S0 substr $P0, 1, 2, "x"
mmdvtregister and mmdvtablefind opcodes [post 0.7.0]
These opcodes are part of the old MMD system, now deprecated and to be removed when the branch is merged in after the release.
addr shortcut for set_addr op [post 0.7.1]
addr
set_addr
The addr shortcut that is mapped to the set_addr will no longer be supported. Instead, use the set_addr directly.
See RT#58238.
get_*_keyed_int VTABLE methods change the size of Resizable*Arrays [post 0.7.1]
get_*_keyed_int
The get_{String|PMC|Integer|Number|Boolean}_keyed_int VTABLE methods increase the size of Resizable{String|PMC|Integer|Number|Boolean}Arrays when they're used to search for an element past the end of the array. This behavior is deprecated and will be removed after the 0.7.1 release.
get_{String|PMC|Integer|Number|Boolean}_keyed_int
See RT #52778.
See RT#54000. The 'get_array', 'get_hash', and 'get_scalar' methods are now called 'list', 'hash', and 'item' respectively.
See RT #58932. Strings passed as class names to P6object will be automatically separated on double-colons.
To install Parrot::Op, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Parrot::Op
CPAN shell
perl -MCPAN -e shell install Parrot::Op
For more information on module installation, please visit the detailed CPAN module installation guide.