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.
type_keyed
[post 0.5.2]
See RT #48577.
type_keyed_int
[post 0.5.2]
See RT #48579.
type_keyed_str
[post 0.5.2]
See RT #48581.
type
[post 0.5.2]
See RT #48567.
new_from_string
[post 0.5.0]
See RT #47011.
cmodulus
and variants [post 0.7.0]
See RT #58550.
pioctl
[post 0.5.1]
See RT #48589.
store_global
[post 0.5.0]
See RT #48016. Replace usage with set_[hll,root]_global variants.
find_global
[post 0.5.0]
See RT #48018. Replace usage with get_[hll,root]_global variants.
new
(out PMC, in INT, in STR) [post 0.5.0]
See RT #47011.
get_mro
[post 0.5.0]
See RT #47976.
n_*
math opcode variants [post 0.7.1]
See RT #58410.
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'
See RT #48014. This will be removed once all core PMCs have been updated.
Old-style PASM registers without the $
character are deprecated; use
PIR-style registers only.
See RT #57638.
global
keyword [post 0.6.4]
See RT #48016 and RT #48018.
foo.bar()
, where bar
is not a local identifier (thus indicating
a method name) is no longer supported.
See RT #45859.
#line
[post 0.6.4]
Will be replaced by .line
to be more consistent with other PIR syntax.
See [RT#45857], [RT#43269], and [RT#47141].
.pragma n_operators
[post 0.6.4]
See RT #57438.
<.namespace <identifier
>> syntax [post 0.5.1]
See RT #48737.
::
in identifiers [post 0.5.1]
See RT #48735.
.namespace [ "a" .. "b" ]
[post 0.5.0]
See RT #46715.
.namespace
(without brackets) [post 0.6.2]
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]
This will be replaced by .HLL_map
<string> '=' <string>
See RT #57430.
.HLL
<string> ',' <string> [post 0.6.4]
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.
See RT #57428.
See RT #48877.
See RT #36283. When the first argument of an opcode is OUT
, then
the assignment syntax will be allowed, as it is today.
In any other case (i.e. INOUT
, IN
), this will become
a syntax error. For example:
$S0 = print $P0 = substr 1, 2, "x"
Will have to be:
print $S0 substr $P0, 1, 2, "x"
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]
The addr
shortcut that is mapped to the set_addr
will no longer be
supported. Instead, use the set_addr
directly.
See RT#58238.
.return
in tailcall context [post 0.7.2]
The .return
directive in a tailcall context will be replaced by the more
explicit .tailcall
directive.
See RT #58974.
.return
in .begin_return
/ .end_return
[post 0.7.2]
The .return
directive in a .begin_return
sequence will be replaced by
the .set_return
directive. Likewise, .yield
in a .begin_yield
sequence will be replaced by .set_yield
.
See RT #58980.
.arg
will become .set_arg
[post 0.7.2]
In a .begin_call
sequence, the .arg
directive will be replaced by
.set_arg
.
See RT #58976.
.result
will become .get_result
[post 0.7.2]
In a .begin_call
sequence, the .result
direcive will be replaced by
the more descriptive .get_result
.
See RT #58978.
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.
Parrot_mmd_deref, Parrot_mmd_ensure_writeable, Parrot_mmd_add_function, mmd_expand_x, mmd_expand_y, Parrot_mmd_add_by_class, Parrot_mmd_register, Parrot_mmd_register_sub, Parrot_mmd_destroy, Parrot_MMD_search_default_infix, mmd_arg_tuple_inline, Parrot_mmd_search_default, mmd_cvt_to_types, Parrot_mmd_rebuild_table.
See RT #45967.