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 will 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
- 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]
- Hash changes to AssociativePMCArray [eligible in 1.5]
-
Also OrderedHash to OrderedAssociativePMCArray.
- Method stdhandle in ParrotInterpreter [experimental]
- VTABLE nomenclature. [eligible in 1.5]
-
Current list of VTABLE functions will be reviewed and cleaned.
- 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.
- packfile structure [eligible in 1.1]
- opcode numbering [eligible in 1.1]
- PMC numbering [eligible in 1.1]
[Nothing at this time.]
Assigning to registers [experimental]
- Assignment syntax with opcodes [eligible in 1.1]
- named class/pmc lookup in pir syntax such as new, isa, subclass, get_class, etc [eligible in 1.1]
-
Class PMC name resolution will be the following.
if the arg is a STRING Relative to the current Namespace
if the arg is a Array (of any sort) or Key Relative to the current HLL Namespace
if the arg is a Namespace or Class PMC The passed in class or the class attatched to the passed in namespace.
- load or include paths prefixed with 'library/' or 'include/' [eligible in 1.5]
- 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. If you depend on these functions in an extending/embedding interface or C-level custom PMCs, check in 1.4 or 2.0 for the new names.
- 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 TT #895
- PDB_compile and PDB_eval [eligible in 2.1]
-
The function PDB_compile doesn't work since some time, and his implementation was a hack. His functionality may be reimplemented in another way. Until the end of deprecation cycle it just throws an excpetion.
The PDB_eval function, that used in the debugger to support the eval command, was using PDB_compile. His functionality must be reimplemented in another way and with a name that follows current conventions, in the meantime and until the end of the deprecation cycle it just shows a diagnostic message.
PASM1 compiler
[eligible in 2.1]-
See PDB_compile. Note that the current version of the
PASM1
compiler issues a warning and is not functional. (However, it used to segfault.)
- 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.
$(...)
syntax [eligible in 1.5]-
The
$(...)
syntax for obtaining a result object from a Match object will no longer work. The new syntax is to invoke the.ast
method on the Match object. - Quoted items [eligible in 1.5]
-
Double-quoted strings will interpret unescaped $-names as interpolated variables in the string. Bare slashes will introduce regular expressions. The
<foo bar>
syntax will produce an array of strings instead of a single string. PIR q:to:<xyz>
inline PIR [eligible in 1.5]-
The
PIR q:to:<xyz>
form of inline PIR in NQP scripts is deprecated. UseQ:PIR { ... }
orQ:PIR {{ ... }}
instead.
- tools/build/dynoplibs.pl and tools/build/dynpmc.pl [eligible in 1.1]
-
Replaced with makefiles.
- JSON, JSON, and Config;JSON [eligible in 1.5]
- Cross-HLL library loading [experimental]
- OpenGL bindings and libraries [experimental]