Skip to content
This repository
tag: RELEASE_2_3_0
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 484 lines (280 sloc) 13.196 kb

Purpose

Provide a list of deprecated and experimental items in parrot. All items in this list should have a corresponding Trac ticket[1].

Experimental Status

These features are not considered supported, even though they may have shipped in a supported 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].

Deprecated Status

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

PMCS

RetContinuation [eligible in 2.4]

In future, just use Continuation.

https://trac.parrot.org/parrot/ticket/1427

moved to dynpmc [eligible in 1.1]

AddrRegistry, CodeString, Env, Eval, File, OS, PCCMETHOD_Test, StringHandle, and Timer.

https://trac.parrot.org/parrot/ticket/448

multiple dispatch within core PMCs [eligible in 1.1]

https://trac.parrot.org/parrot/ticket/452

Method stdhandle in ParrotInterpreter [experimental]

https://trac.parrot.org/parrot/ticket/264

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).

https://trac.parrot.org/parrot/ticket/103

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.

https://trac.parrot.org/parrot/ticket/1467

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.

https://trac.parrot.org/parrot/ticket/1469

NCI without signature ("raw" pointers) [eligible in 2.4]

No equivalent functionality is promised. You shouldn't be using this. Here be segfaults.

https://trac.parrot.org/parrot/ticket/1549

UnManagedStruct handling nested structure [eligible in 2.4]

UnManagedStruct will be simplified to only support flat structures. This means that elements which themselves have structure - struct pointers and function pointers will be stored as void * and void (*)(void) respectively. To use these, they will need to be cast to the appropriate signature on access.

https://trac.parrot.org/parrot/ticket/1551

UnManagedStruct initializer structure [eligible in 2.4]

The initializer structure will cease to be an array of triples. In stead, an array of flags (no counts or offsets), or a string representation of the same information may be used.

https://trac.parrot.org/parrot/ticket/1552

UnManagedStruct get_integer, set_integer_native [eligible in 2.4]

These will no longer refer to the byte length of the buffer, but to the number of times the struct is repeated; emulating an array of structs.

https://trac.parrot.org/parrot/ticket/1553

ManagedStruct reallocations based on shape changes [eligible in 2.4]

Since shape changes may simply be used for re-interpreting data, and may also occur in several steps, re-allocating after any one shape change may be undesirable. In stead, an explicit allocate/reallocate method will be provided.

https://trac.parrot.org/parrot/ticket/1554

Auto-vivification of nested aggregates [eligible in 2.4]

Auto-vivifation of nested aggregated is deprecated.

E.g.

  $P0 = new ['Hash']
  $S1 = $P0['foo';'bar';'baz']

will not auto-vivify nested hashes and return PMCNULL early.

https://trac.parrot.org/parrot/ticket/1561

PMC must use manual_attrs or auto_attrs flag [eligible in 2.4]

PMCs must no longer use default value for manual/auto attribute allocation, manual_attrs or auto_attrs must be specified.

http://trac.parrot.org/parrot/ticket/1506

Opcodes

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.

https://trac.parrot.org/parrot/ticket/449

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.

https://trac.parrot.org/parrot/ticket/633

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.

https://trac.parrot.org/parrot/ticket/1260

get_results opcode order and features [eligible in 2.1]

get_results no longer used to fetch exception object.

https://trac.parrot.org/parrot/ticket/1406

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.

NCI_FB_CB and NCI_FB_UD in iglobals [experimental]

Hooks allowing a runtime-loadable dynamic frame builder.

loadlib_p_s_p [experimental]

Ability to use non-default dynamic loading behaviour.

pushaction, pushmark, popmark [eligible in 2.4]

https://trac.parrot.org/parrot/ticket/876

new_callback_p_p_p_s [eligible in 2.4]

To be replaced with new_callback_p_p_p_p_s.

https://trac.parrot.org/parrot/ticket/1548

dlfunc and new_callback signature string format [eligible in 2.4]

These will be changed to allow more flexibility in types.

https://trac.parrot.org/parrot/ticket/1565

find_lex [eligible in 2.4]

find_lex will not throw exception for non-existing lexicals.

https://trac.parrot.org/parrot/ticket/1207

substr_s_i_i_s [eligible in 2.4]

This op will be replaced with replace_s_s_i_i_s op to clearly indicate semantic. Part of COW removal.

https://trac.parrot.org/parrot/ticket/1540

substr_s_s_i_i_s [eligible in 2.4]

This op is deprecated. Use replace_s_s_i_i_s or substr_s_s_i_i (or both) instead. Part of COW removal.

https://trac.parrot.org/parrot/ticket/1540

inplace string updates. [eligible in 2.4]

All "inplace" string update ops are deprecated. E.g. "chopn_s", etc. Part of COW removal.

https://trac.parrot.org/parrot/ticket/1540

Runcores

Unused Runcores [eligible in 2.4]

The following Runcores do not appear to be used. Accordingly they will be eligible for removal.

CGoto CGP Switch

https://trac.parrot.org/parrot/ticket/1563

Bytecode

packfile structure [experimental]

https://trac.parrot.org/parrot/ticket/451

opcode numbering [experimental]

https://trac.parrot.org/parrot/ticket/451

PMC numbering [experimental]

https://trac.parrot.org/parrot/ticket/451

Debugger

Assigning to registers [experimental]

PIR syntax

Assignment syntax with opcodes [eligible in 1.1]

https://trac.parrot.org/parrot/ticket/906

continuation-based ExceptionHandlers [eligible in 2.1]

https://trac.parrot.org/parrot/ticket/1091

implicit optional named parameters [eligible in 2.1]

https://trac.parrot.org/parrot/ticket/1103

Functions

mmd_cvt_to_types [eligible in 1.1]

https://trac.parrot.org/parrot/ticket/907

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.

https://trac.parrot.org/parrot/ticket/389

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:

https://trac.parrot.org/parrot/ticket/443

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 COW [eligible in 2.4]

COW strings are to be removed. All "inplace" string modification functions and all "inplace" string ops are deprecated.

https://trac.parrot.org/parrot/ticket/1540

Parrot_PMC_* in src/extend.c [eligible in 2.4]

These are duplicates of functions in src/extend_vtable.c. Exceptions:

  Parrot_PMC_new
  Parrot_PMC_typenum
  Parrot_PMC_null
  Parrot_PMC_set_vtable
  Parrot_PMC_newclass
Parrot_VTABLE, Parrot_get_vtable, Parrot_PMC_set_vtable [eligible in 2.4]

These do not expose any functionality that should be available to code outside of parrot core.

These might get revived in some form to allow for creating new types and adding vtable-overrides, if that functionality becomes desired.

Compiler tools

Parrot Grammar Engine (PGE)

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.

https://trac.parrot.org/parrot/ticket/843

Parrot Compiler Toolkit

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.

https://trac.parrot.org/parrot/ticket/462

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.

https://trac.parrot.org/parrot/ticket/463

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.

https://trac.parrot.org/parrot/ticket/868

Compilers

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.

http://trac.parrot.org/parrot/ticket/1462

Parrot library

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]

https://trac.parrot.org/parrot/ticket/508

Cross-HLL library loading [experimental]

https://trac.parrot.org/parrot/ticket/754

OpenGL bindings and libraries [experimental]

https://trac.parrot.org/parrot/ticket/852

Footnotes

  1. Trac is parrot's primary issue tracking system.
  2. For an item to be considered experimental, it can never have shipped in a supported release without the [experimental] tag; otherwise, it must be deprecated normally before removal or incompatible change.
Something went wrong with that request. Please try again.