5 Provide a list of deprecated and experimental items in parrot.
6 All items in this list should have a corresponding Trac ticket[1].
8 =head1 Experimental Status
10 These features are not considered stable, even though they may
11 have shipped in a stable release of parrot[2]. Use them at your own
12 risk, as they can be removed or changed in any release. These
13 items are marked below with C<[experimental]>.
15 =head1 Deprecated Status
17 Please see F<docs/project/support_policy.pod> for the parrot
18 project's policy regarding deprecated features.
20 Each item shows the first release in which it is eligible for removal, e.g.
21 C<[eligible in 1.5]>. If the release listed is one that has already
22 shipped, this feature may be removed in B<any> upcoming release, and
23 you should no longer rely on it.
25 Whenever deprecated items are removed, information
26 regarding how to cope with the removal should be added to
27 L<https://trac.parrot.org/parrot/wiki/Deprecation>.
29 When running parrot, you can receive warnings about deprecated opcodes.
30 Either run parrot with the C<-w> option to enable all warnings, or
31 specifically by including this C<PIR> code:
33 .include 'warnings.pasm'
34 warningson .PARROT_WARNINGS_DEPRECATED_FLAG
40 =item moved to dynpmc [eligible in 1.1]
42 AddrRegistry, CodeString, Env, Eval, File, OS, PCCMETHOD_Test, StringHandle,
45 L<https://trac.parrot.org/parrot/ticket/448>
47 =item multiple dispatch within core PMCs [eligible in 1.1]
49 L<https://trac.parrot.org/parrot/ticket/452>
51 =item Method stdhandle in ParrotInterpreter [experimental]
53 L<https://trac.parrot.org/parrot/ticket/264>
55 =item Overriding vtable invoke in PIR objects [experimental]
57 The VTABLE invoke in object.pmc puts SELF at the start of the
58 signature call arguments when there is no current object and is
59 not already here. This allows the usage of $P0() instead of $P0($P0).
61 L<https://trac.parrot.org/parrot/ticket/103>
63 =item CPointer PMC [eligible in 2.1]
65 And all uses in the Parrot calling conventions.
67 L<https://trac.parrot.org/parrot/ticket/1407>
69 =item Digest dynpmcs [eligible in 2.4]
71 The digest dynpmcs are, since the posting of this notice, available on
72 http://gitorious.org/digest-dynpmcs and will no longer be distributed
73 with parrot after 2.3.
75 L<https://trac.parrot.org/parrot/ticket/1467>
77 =item gdbmhash dynpmc [eligible in 2.4]
79 The gdbmhash dynpmc is, since the posting of this notice, available on
80 http://gitorious.org/dbm-dynpmcs and will no longer be distributed
81 with parrot after 2.3.
83 L<https://trac.parrot.org/parrot/ticket/1469>
91 =item moved to dynop [eligible in 1.1]
93 Parts or all of: bit.ops, debug.ops, io.ops, math.ops, set.ops
94 (the obscure and rarely used parts), sys.ops.
96 L<https://trac.parrot.org/parrot/ticket/449>
98 =item get_addr and set_addr [eligible in 1.5]
100 L<https://trac.parrot.org/parrot/ticket/218>
102 These opcodes are being repurposed. They will always return a unique memory
103 address of the PMC. Uses of get_addr and set_addr that would set label values
104 for Sub, Exception, and related PMC types will instead be handled by
105 get_label and set_label.
107 =item sizeof [eligible in 2.4]
109 This opcode uses the old integer ID for a PMC type; this opcode should be changed
110 to use the current methods to lookup a PMC or removed entirely.
112 L<https://trac.parrot.org/parrot/ticket/633>
114 =item All bitwise ops [eligible in 2.1]
116 All bitwise ops (all ops containing C<bitwise> in their names) will be provided
117 by dynops. B<NOTE>: Before removing the bitwise ops, make sure that the
118 equivalent dynops are available and that the major HLLs (Rakudo, Partcl, Lua,
119 etc) have switched to using them.
121 L<https://trac.parrot.org/parrot/ticket/1260>
123 =item get_results opcode order and features [eligible in 2.1]
125 Move get_results to follow invoke.
127 L<https://trac.parrot.org/parrot/ticket/1405>
129 get_results no longer used to fetch exception object.
131 L<https://trac.parrot.org/parrot/ticket/1406>
133 =item GC_SYS_NAME option to interpinfo_s_i [experimental]
135 Ability to get the string name of the current GC core from the interpinfo_s_i.
136 See r43900 and r43904 for details.
144 =item packfile structure [experimental]
146 L<https://trac.parrot.org/parrot/ticket/451>
148 =item opcode numbering [experimental]
150 L<https://trac.parrot.org/parrot/ticket/451>
152 =item PMC numbering [experimental]
154 L<https://trac.parrot.org/parrot/ticket/451>
160 Assigning to registers [experimental]
166 =item Assignment syntax with opcodes [eligible in 1.1]
168 L<https://trac.parrot.org/parrot/ticket/906>
170 =item continuation-based ExceptionHandlers [eligible in 2.1]
172 L<https://trac.parrot.org/parrot/ticket/1091>
174 =item implicit optional named parameters [eligible in 2.1]
176 L<https://trac.parrot.org/parrot/ticket/1103>
184 =item mmd_cvt_to_types [eligible in 1.1]
186 L<https://trac.parrot.org/parrot/ticket/907>
188 =item Subs marked with C<:vtable>/C<:method> aren't in namespace [eligible in 1.1]
190 Subs marked with C<:vtable> or C<:method> flags are no longer given a
191 namespace entry by default. Use the C<:nsentry> flag to cause this
194 L<https://trac.parrot.org/parrot/ticket/389>
196 =item C API coding standards cleanup [eligible in 1.1]
198 All C API functions that aren't currently named according to the
199 'Parrot_<system>_*' scheme will be renamed. A list of renamed
200 functions will be kept in the ticket at:
202 L<https://trac.parrot.org/parrot/ticket/443>
204 =item PMC Attributes Allocation Functions [experimental]
206 Parrot_gc_allocate_pmc_attributes
207 Parrot_gc_free_pmc_attributes
209 These items and related helper functions are added as experimental support
210 for L<https://trac.parrot.org/parrot/ticket/895>
212 =item STRING Out parameters in Parrot_str_* functions [eligible in 2.1]
214 All STRING modification functions will return a STRING pointer; capture and use
215 this rather than relying on in-place modification of an existing pointer.
219 =head1 Compiler tools
221 =head2 Parrot Grammar Engine (PGE)
225 =item Action methods in rules
227 Per Synopsis 5, all regexes will have an implied {*} token at the
228 end which cause invocation of an action method if a C<:action>
231 L<https://trac.parrot.org/parrot/ticket/843>
235 =head2 Parrot Compiler Toolkit
239 =item PCT::HLLCompiler stages [eligible in 1.1]
241 The interface of various methods for adding, removing, and modifying
242 the list stages in a PCT::HLLCompiler object is subject to change.
243 The existing actual stages will remain; only the mechanism for specifying
244 the order of individual stages is likely to change.
246 L<https://trac.parrot.org/parrot/ticket/462>
248 =item PCT::HLLCompiler from Perl 5's Test::Harness [eligible in 1.1]
250 In order to facilitate using PCT::HLLCompiler with test harnesses,
251 the C<command_line> method of PCT::HLLCompiler object exits silently
252 if it detects that it is being run in a sample run from Perl's
253 Test::Harness. Currently this detection is done by checking the
254 second command line argument for "@INC"; future releases may
255 use a different detection mechanism or eliminate it altogether.
257 L<https://trac.parrot.org/parrot/ticket/463>
259 =item PAST::Val node generation [eligible in 1.5]
261 The PAST::Compiler may generate the code for PAST::Val nodes
262 (i.e., constants) at the beginning of the block (Parrot sub) instead
263 of the location where they occur in the PAST tree.
265 L<https://trac.parrot.org/parrot/ticket/868>
273 =item json [eligible in 2.4]
275 The json compiler was dupicated into data_json some time ago. If you're
276 using json, just use data_json instead, it's the same code. See TT #1461.
278 =item nqp [eligible in 2.4]
280 Replaced by ext/nqp-rx and parrot-nqp.
282 L<http://trac.parrot.org/parrot/ticket/1462>
286 =head1 Parrot library
290 =item PARROT_LIBRARY and PARROT_INCLUDE environment variables [experimental]
292 L<https://trac.parrot.org/parrot/ticket/1429>
294 A way to provide an equivalent of -L and -I parrot command line options
295 to language that doesn't support it.
297 =item JSON, JSON, and Config;JSON [eligible in 1.5]
299 L<https://trac.parrot.org/parrot/ticket/508>
301 =item Cross-HLL library loading [experimental]
303 L<https://trac.parrot.org/parrot/ticket/754>
305 =item OpenGL bindings and libraries [experimental]
307 L<https://trac.parrot.org/parrot/ticket/852>
317 L<Trac|http://trac.parrot.org/> is parrot's primary issue tracking system.
321 For an item to be considered experimental, it can B<never> have shipped in
322 a stable release without the C<[experimental]> tag; otherwise, it must be
323 deprecated normally before removal or incompatible change.