Provide a list of deprecated and experimental items in parrot. All items in this list should have a corresponding Trac ticket.
These features are not considered stable,
even though they may have shipped in a stable release of parrot.
Use them at your own risk,
as they can be removed or changed in any release.
These items are marked below with
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,
[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
.include 'warnings.pasm' warningson .PARROT_WARNINGS_DEPRECATED_FLAG
- Alternate GC configurations [eligible in 1.5]
libcwill be removed as potential options for the
- pair (dynamic PMC) [eligible in 1.5]
- random [eligible in 1.1]
- 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]
- moved to dynop [eligible in 1.1]
Parts or all of: bit.ops, debug.ops, io.ops, math.ops, obscure.ops, set.ops (the obscure and rarely used parts), sys.ops.
- experimental ops [eligible in 1.1]
src/ops/experimental.ops - only the
- myops [eligible in 1.1]
- get_addr and set_addr [eligible in 1.5]
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.
ret[eligible in 1.5]
branch_cs[eligible in 1.5]
- packfile structure [eligible in 1.1]
- opcode numbering [eligible in 1.1]
- PMC numbering [eligible in 1.1]
- Assignment syntax with opcodes [eligible in 1.1]
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.
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"
- 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]
- src/pic.c and src/pic_jit.c [eligible in 1.1]
These two files were a thin prototype implementation of Polymorphic Inline Caching that only ever applied to 4 opcodes, one of which has now been removed. The files (and all functions in them) are deprecated, and will be removed.
- Subs marked with
:methodaren't in namespace [eligible in 1.1]
Subs marked with
:methodflags are no longer given a namespace entry by default. Use the
:nsentryflag 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.
- parrot_new_pmc_hash [eligible in 1.5]
This function will be removed. parrot_new_hash should be used in its place.
- Parrot_get_namespace_autobase [eligible in 1.5]
- Parrot_find_global_k [eligible in 1.5]
- Parrot_MMD_method_name [eligible in 1.5]
- pobject_lives [eligible in 1.5]
- functions in src/stack.c [eligible in 1.5]
https://trac.parrot.org/parrot/ticket/702 Here is a list of functions in this file which are currently being exported:
stack_system_init cst_new_stack_chunk new_stack mark_stack stack_height stack_entry stack_prepare_push stack_push stack_prepare_pop stack_pop pop_dest stack_peep Parrot_dump_dynamic_environment Parrot_push_action* Parrot_push_mark* Parrot_pop_mark*
* = item may be kept but reimplemented.
- Deprecated rules and methods [eligible in 1.1]
The following "built-in" PGE rules and methods are from previous versions of Synopsis 5.
- Stringification, numification [eligible in 1.1]
PGE::Matchobjects will stringify or numify based on the text that is matched, not the result object.
- 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_linemethod 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.
$(...)syntax [eligible in 1.5]
$(...)syntax for obtaining a result object from a Match object will no longer work. The new syntax is to invoke the
.astmethod on the Match object.
- tools/build/dynoplibs.pl and tools/build/dynpmc.pl [eligible in 1.1]
Replaced with makefiles.
- "pmclass" with name not matching file's basename [eligible in 1.5]
When foo.pmc contains a the line "pmclass bar", pmc2c generates a pmc_foo.h but tries to include pmc_bar.h. This is a bug, but it's possible someone out there is using it. This usage will result in a warning for now; after the 1.4 release, this warning will be upgraded to an error.
- Data::Replace [eligible in 1.5]
- JSON, JSON, and Config;JSON [eligible in 1.5]
- NCI::call_toolkit_init [eligible in 1.5]
- Cross-HLL library loading [experimental]