Provide a list of deprecated and experimental items in parrot. All items in this list should have a corresponding Trac ticket[1].
These features are not considered stable, even though they may have shipped in a stable release of parrot[2]. Use them at your own risk, as they can be removed or changed in any release. These items are marked below with [experimental]
.
Please see docs/project/support_policy.pod for the parrot project's policy regarding deprecated features.
Each item shows the first release in which it is eligible for removal, e.g. [eligible in 1.5]
. If the release listed is one that has already shipped, this feature may be removed in any upcoming release, and you should no longer rely on it.
Whenever deprecated items are removed, information regarding how to cope with the removal should be added to https://trac.parrot.org/parrot/wiki/Deprecation.
When running parrot, you can receive warnings about deprecated opcodes. Either run parrot with the -w
option to enable all warnings, or specifically by including this PIR
code:
.include 'warnings.pasm'
warningson .PARROT_WARNINGS_DEPRECATED_FLAG
- RetContinuation [eligible in 2.4]
-
In future, just use Continuation.
- moved to dynpmc [eligible in 1.1]
-
AddrRegistry, CodeString, Env, Eval, File, OS, PCCMETHOD_Test, StringHandle, and Timer.
- multiple dispatch within core PMCs [eligible in 1.1]
- Method stdhandle in ParrotInterpreter [experimental]
- Overriding vtable invoke in PIR objects [experimental]
-
The VTABLE invoke in object.pmc puts SELF at the start of the signature call arguments when there is no current object and is not already here. This allows the usage of $P0() instead of $P0($P0).
- CPointer PMC [eligible in 2.1]
-
And all uses in the Parrot calling conventions.
- Digest dynpmcs [eligible in 2.4]
-
The digest dynpmcs are, since the posting of this notice, available on http://gitorious.org/digest-dynpmcs and will no longer be distributed with parrot after 2.3.
- gdbmhash dynpmc [eligible in 2.4]
-
The gdbmhash dynpmc is, since the posting of this notice, available on http://gitorious.org/dbm-dynpmcs and will no longer be distributed with parrot after 2.3.
- moved to dynop [eligible in 1.1]
-
Parts or all of: bit.ops, debug.ops, io.ops, math.ops, set.ops (the obscure and rarely used parts), sys.ops.
- get_addr and set_addr [eligible in 1.5]
-
https://trac.parrot.org/parrot/ticket/218
These opcodes are being repurposed. They will always return a unique memory address of the PMC. Uses of get_addr and set_addr that would set label values for Sub, Exception, and related PMC types will instead be handled by get_label and set_label.
- sizeof [eligible in 2.4]
-
This opcode uses the old integer ID for a PMC type; this opcode should be changed to use the current methods to lookup a PMC or removed entirely.
- All bitwise ops [eligible in 2.1]
-
All bitwise ops (all ops containing
bitwise
in their names) will be provided by dynops. NOTE: Before removing the bitwise ops, make sure that the equivalent dynops are available and that the major HLLs (Rakudo, Partcl, Lua, etc) have switched to using them. - get_results opcode order and features [eligible in 2.1]
-
Move get_results to follow invoke.
https://trac.parrot.org/parrot/ticket/1405
get_results no longer used to fetch exception object.
- GC_SYS_NAME option to interpinfo_s_i [experimental]
-
Ability to get the string name of the current GC core from the interpinfo_s_i. See r43900 and r43904 for details.
- packfile structure [experimental]
- opcode numbering [experimental]
- PMC numbering [experimental]
Assigning to registers [experimental]
- Assignment syntax with opcodes [eligible in 1.1]
- continuation-based ExceptionHandlers [eligible in 2.1]
- implicit optional named parameters [eligible in 2.1]
- mmd_cvt_to_types [eligible in 1.1]
- Subs marked with
:vtable
/:method
aren't in namespace [eligible in 1.1] -
Subs marked with
:vtable
or:method
flags are no longer given a namespace entry by default. Use the:nsentry
flag to cause this to happen. - C API coding standards cleanup [eligible in 1.1]
-
All C API functions that aren't currently named according to the 'Parrot_<system>_*' scheme will be renamed. A list of renamed functions will be kept in the ticket at:
- PMC Attributes Allocation Functions [experimental]
-
Parrot_gc_allocate_pmc_attributes Parrot_gc_free_pmc_attributes
These items and related helper functions are added as experimental support for https://trac.parrot.org/parrot/ticket/895
- STRING Out parameters in Parrot_str_* functions [eligible in 2.1]
-
All STRING modification functions will return a STRING pointer; capture and use this rather than relying on in-place modification of an existing pointer.
- STRING_is_null function [eligible in 2.4]
-
renamed to Parrot_str_is_null
- Parrot_string_* [eligible in 2.4]
-
rename Parrot_string_cstring to Parrot_str_cstring
- STRING functions which don't have Parrot_str_ prefix
-
The string subsytem is gradually getting an overhaul.
- Action methods in rules
-
Per Synopsis 5, all regexes will have an implied {*} token at the end which cause invocation of an action method if a
:action
object is supplied.
- PCT::HLLCompiler stages [eligible in 1.1]
-
The interface of various methods for adding, removing, and modifying the list stages in a PCT::HLLCompiler object is subject to change. The existing actual stages will remain; only the mechanism for specifying the order of individual stages is likely to change.
- PCT::HLLCompiler from Perl 5's Test::Harness [eligible in 1.1]
-
In order to facilitate using PCT::HLLCompiler with test harnesses, the
command_line
method of PCT::HLLCompiler object exits silently if it detects that it is being run in a sample run from Perl's Test::Harness. Currently this detection is done by checking the second command line argument for "@INC"; future releases may use a different detection mechanism or eliminate it altogether. - PAST::Val node generation [eligible in 1.5]
-
The PAST::Compiler may generate the code for PAST::Val nodes (i.e., constants) at the beginning of the block (Parrot sub) instead of the location where they occur in the PAST tree.
- json [eligible in 2.4]
-
The json compiler was dupicated into data_json some time ago. If you're using json, just use data_json instead, it's the same code. See TT #1461.
- nqp [eligible in 2.4]
-
Replaced by ext/nqp-rx and parrot-nqp.
- PARROT_LIBRARY and PARROT_INCLUDE environment variables [experimental]
-
https://trac.parrot.org/parrot/ticket/1429
A way to provide an equivalent of -L and -I parrot command line options to language that doesn't support it.
- JSON, JSON, and Config;JSON [eligible in 1.5]
- Cross-HLL library loading [experimental]
- OpenGL bindings and libraries [experimental]
Trac is parrot's primary issue tracking system.
For an item to be considered experimental, it can never have shipped in a stable release without the
[experimental]
tag; otherwise, it must be deprecated normally before removal or incompatible change.