re-generate MANIFEST
[parrot.git] / DEPRECATED.pod
blobdf891777ec1d20768716520450d116fa5969d6a6
1 # $Id$
3 =head1 Purpose
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 supported, even though they may
11 have shipped in a supported 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
36 =head1 PMCS
38 =over 4
40 =item RetContinuation [eligible in 2.4]
42 In future, just use Continuation.
44 L<https://trac.parrot.org/parrot/ticket/1427>
46 =item moved to dynpmc [eligible in 1.1]
48 AddrRegistry, CodeString, Env, Eval, File, OS, PCCMETHOD_Test, StringHandle,
49 and Timer.
51 L<https://trac.parrot.org/parrot/ticket/448>
53 =item multiple dispatch within core PMCs [eligible in 1.1]
55 L<https://trac.parrot.org/parrot/ticket/452>
57 =item Method stdhandle in ParrotInterpreter [experimental]
59 L<https://trac.parrot.org/parrot/ticket/264>
61 =item Overriding vtable invoke in PIR objects [experimental]
63 The VTABLE invoke in object.pmc puts SELF at the start of the
64 signature call arguments when there is no current object and is
65 not already here. This allows the usage of $P0() instead of $P0($P0).
67 L<https://trac.parrot.org/parrot/ticket/103>
69 =item NCI without signature ("raw" pointers) [eligible in 2.4]
71 No equivalent functionality is promised. You shouldn't be using this. Here be
72 segfaults.
74 L<https://trac.parrot.org/parrot/ticket/1549>
76 =item UnManagedStruct handling nested structure [eligible in 2.4]
78 UnManagedStruct will be simplified to only support flat structures. This means
79 that elements which themselves have structure - struct pointers and function
80 pointers will be stored as C<void *> and C<void (*)(void)> respectively. To use
81 these, they will need to be cast to the appropriate signature on access.
83 L<https://trac.parrot.org/parrot/ticket/1551>
85 =item UnManagedStruct initializer structure [eligible in 2.4]
87 The initializer structure will cease to be an array of triples. In stead, an
88 array of flags (no counts or offsets), or a string representation of the same
89 information may be used.
91 L<https://trac.parrot.org/parrot/ticket/1552>
93 =item UnManagedStruct get_integer, set_integer_native [eligible in 2.4]
95 These will no longer refer to the byte length of the buffer, but to the number
96 of times the struct is repeated; emulating an array of structs.
98 L<https://trac.parrot.org/parrot/ticket/1553>
100 =item ManagedStruct reallocations based on shape changes [eligible in 2.4]
102 Since shape changes may simply be used for re-interpreting data, and may also
103 occur in several steps, re-allocating after any one shape change may be
104 undesirable. In stead, an explicit allocate/reallocate method will be provided.
106 L<https://trac.parrot.org/parrot/ticket/1554>
108 =item Auto-vivification of nested aggregates [eligible in 2.4]
110 Auto-vivifation of nested aggregated is deprecated.
112 E.g.
114   $P0 = new ['Hash']
115   $S1 = $P0['foo';'bar';'baz']
117 will not auto-vivify nested hashes and return PMCNULL early.
119 L<https://trac.parrot.org/parrot/ticket/1561>
121 =item PMC must use manual_attrs or auto_attrs flag [eligible in 2.4]
123 PMCs must no longer use default value for manual/auto attribute allocation,
124 manual_attrs or auto_attrs must be specified.
126 L<http://trac.parrot.org/parrot/ticket/1506>
128 =back
130 =head1 Opcodes
132 =over 4
134 =item moved to dynop [eligible in 1.1]
136 Parts or all of: bit.ops, debug.ops, io.ops, math.ops, set.ops
137 (the obscure and rarely used parts), sys.ops.
139 L<https://trac.parrot.org/parrot/ticket/449>
141 =item get_addr and set_addr [eligible in 1.5]
143 L<https://trac.parrot.org/parrot/ticket/218>
145 These opcodes are being repurposed. They will always return a unique memory
146 address of the PMC. Uses of get_addr and set_addr that would set label values
147 for Sub, Exception, and related PMC types will instead be handled by
148 get_label and set_label.
150 =item sizeof [eligible in 2.4]
152 This opcode uses the old integer ID for a PMC type; this opcode should be changed
153 to use the current methods to lookup a PMC or removed entirely.
155 L<https://trac.parrot.org/parrot/ticket/633>
157 =item All bitwise ops [eligible in 2.1]
159 All bitwise ops (all ops containing C<bitwise> in their names) will be provided
160 by dynops.  B<NOTE>: Before removing the bitwise ops, make sure that the
161 equivalent dynops are available and that the major HLLs (Rakudo, Partcl, Lua,
162 etc) have switched to using them.
164 L<https://trac.parrot.org/parrot/ticket/1260>
166 =item get_results opcode order and features [eligible in 2.1]
168 get_results no longer used to fetch exception object.
170 L<https://trac.parrot.org/parrot/ticket/1406>
172 =item GC_SYS_NAME option to interpinfo_s_i [experimental]
174 Ability to get the string name of the current GC core from the interpinfo_s_i.
175 See r43900 and r43904 for details.
177 =item NCI_FB_CB and NCI_FB_UD in iglobals [experimental]
179 Hooks allowing a runtime-loadable dynamic frame builder.
181 =item loadlib_p_s_p [experimental]
183 Ability to use non-default dynamic loading behaviour.
185 =item pushaction, pushmark, popmark [eligible in 2.4]
187 L<https://trac.parrot.org/parrot/ticket/876>
189 =item new_callback_p_p_p_s [eligible in 2.4]
191 To be replaced with new_callback_p_p_p_p_s.
193 L<https://trac.parrot.org/parrot/ticket/1548>
195 =item dlfunc and new_callback signature string format [eligible in 2.4]
197 These will be changed to allow more flexibility in types.
199 L<https://trac.parrot.org/parrot/ticket/1565>
201 =item find_lex [eligible in 2.4]
203 find_lex will not throw exception for non-existing lexicals.
205 L<https://trac.parrot.org/parrot/ticket/1207>
207 =item substr_s_i_i_s [eligible in 2.4]
209 This op will be replaced with replace_s_s_i_i_s op to clearly indicate
210 semantic. Part of COW removal.
212 L<https://trac.parrot.org/parrot/ticket/1540>
214 =item substr_s_s_i_i_s [eligible in 2.4]
216 This op is deprecated. Use replace_s_s_i_i_s or substr_s_s_i_i (or both)
217 instead. Part of COW removal.
219 L<https://trac.parrot.org/parrot/ticket/1540>
221 =item inplace string updates. [eligible in 2.4]
223 All "inplace" string update ops are deprecated. E.g. "chopn_s", etc.
224 Part of COW removal.
226 L<https://trac.parrot.org/parrot/ticket/1540>
228 =back
230 =head1 Runcores
232 =over 4
234 =item Unused Runcores [eligible in 2.4]
236 The following Runcores do not appear to be used.  Accordingly they will
237 be eligible for removal.
239 CGoto
241 Switch
243 L<https://trac.parrot.org/parrot/ticket/1563>
245 =back
247 =head1 Bytecode
249 =over 4
251 =item packfile structure [experimental]
253 L<https://trac.parrot.org/parrot/ticket/451>
255 =item opcode numbering [experimental]
257 L<https://trac.parrot.org/parrot/ticket/451>
259 =item PMC numbering [experimental]
261 L<https://trac.parrot.org/parrot/ticket/451>
263 =back
265 =head1 Debugger
267 Assigning to registers [experimental]
269 =head1 PIR syntax
271 =over 4
273 =item Assignment syntax with opcodes [eligible in 1.1]
275 L<https://trac.parrot.org/parrot/ticket/906>
277 =item continuation-based ExceptionHandlers [eligible in 2.1]
279 L<https://trac.parrot.org/parrot/ticket/1091>
281 =item implicit optional named parameters [eligible in 2.1]
283 L<https://trac.parrot.org/parrot/ticket/1103>
285 =back
287 =head1 Functions
289 =over 4
291 =item mmd_cvt_to_types [eligible in 1.1]
293 L<https://trac.parrot.org/parrot/ticket/907>
295 =item C API coding standards cleanup [eligible in 1.1]
297 All C API functions that aren't currently named according to the
298 'Parrot_<system>_*' scheme will be renamed. A list of renamed
299 functions will be kept in the ticket at:
301 L<https://trac.parrot.org/parrot/ticket/443>
303 =item PMC Attributes Allocation Functions [experimental]
305  Parrot_gc_allocate_pmc_attributes
306  Parrot_gc_free_pmc_attributes
308 These items and related helper functions are added as experimental support
309 for L<https://trac.parrot.org/parrot/ticket/895>
311 =item STRING Out parameters in Parrot_str_* functions [eligible in 2.1]
313 All STRING modification functions will return a STRING pointer; capture and use
314 this rather than relying on in-place modification of an existing pointer.
316 =item STRING_is_null function [eligible in 2.4]
318 renamed to Parrot_str_is_null
320 =item Parrot_string_* [eligible in 2.4]
322 rename Parrot_string_cstring to Parrot_str_cstring
324 =item STRING COW [eligible in 2.4]
326 COW strings are to be removed. All "inplace" string modification
327 functions and all "inplace" string ops are deprecated.
329 L<https://trac.parrot.org/parrot/ticket/1540>
331 =item Parrot_PMC_* in src/extend.c [eligible in 2.4]
333 These are duplicates of functions in src/extend_vtable.c. Exceptions:
335   Parrot_PMC_new
336   Parrot_PMC_typenum
337   Parrot_PMC_null
338   Parrot_PMC_set_vtable
339   Parrot_PMC_newclass
341 =item Parrot_VTABLE, Parrot_get_vtable, Parrot_PMC_set_vtable [eligible in 2.4]
343 These do not expose any functionality that should be available to code outside
344 of parrot core.
346 These might get revived in some form to allow for creating new types and adding
347 vtable-overrides, if that functionality becomes desired.
349 =back
351 =head1 Compiler tools
353 =head2 Parrot Grammar Engine (PGE)
355 =over 4
357 =item Action methods in rules
359 Per Synopsis 5, all regexes will have an implied {*} token at the
360 end which cause invocation of an action method if a C<:action>
361 object is supplied.
363 L<https://trac.parrot.org/parrot/ticket/843>
365 =back
367 =head2 Parrot Compiler Toolkit
369 =over 4
371 =item PCT::HLLCompiler stages [eligible in 1.1]
373 The interface of various methods for adding, removing, and modifying
374 the list stages in a PCT::HLLCompiler object is subject to change.
375 The existing actual stages will remain; only the mechanism for specifying
376 the order of individual stages is likely to change.
378 L<https://trac.parrot.org/parrot/ticket/462>
380 =item PCT::HLLCompiler from Perl 5's Test::Harness [eligible in 1.1]
382 In order to facilitate using PCT::HLLCompiler with test harnesses,
383 the C<command_line> method of PCT::HLLCompiler object exits silently
384 if it detects that it is being run in a sample run from Perl's
385 Test::Harness.  Currently this detection is done by checking the
386 second command line argument for "@INC"; future releases may
387 use a different detection mechanism or eliminate it altogether.
389 L<https://trac.parrot.org/parrot/ticket/463>
391 =item PAST::Val node generation [eligible in 1.5]
393 The PAST::Compiler may generate the code for PAST::Val nodes
394 (i.e., constants) at the beginning of the block (Parrot sub) instead
395 of the location where they occur in the PAST tree.
397 L<https://trac.parrot.org/parrot/ticket/868>
399 =back
401 =head1 Compilers
403 =over 4
405 =item json [eligible in 2.4]
407 The json compiler was dupicated into data_json some time ago. If you're
408 using json, just use data_json instead, it's the same code. See TT #1461.
410 =item nqp [eligible in 2.4]
412 Replaced by ext/nqp-rx and parrot-nqp.
414 L<http://trac.parrot.org/parrot/ticket/1462>
416 =back
418 =head1 Parrot library
420 =over 4
422 =item PARROT_LIBRARY and PARROT_INCLUDE environment variables [experimental]
424 L<https://trac.parrot.org/parrot/ticket/1429>
426 A way to provide an equivalent of -L and -I parrot command line options
427 to language that doesn't support it.
429 =item JSON, JSON, and Config;JSON [eligible in 1.5]
431 L<https://trac.parrot.org/parrot/ticket/508>
433 =item Cross-HLL library loading [experimental]
435 L<https://trac.parrot.org/parrot/ticket/754>
437 =item OpenGL bindings and libraries [experimental]
439 L<https://trac.parrot.org/parrot/ticket/852>
441 =back
443 =head1 Footnotes
445 =over 4
447 =item 1
449 L<Trac|http://trac.parrot.org/> is parrot's primary issue tracking system.
451 =item 2
453 For an item to be considered experimental, it can B<never> have shipped in
454 a supported release without the C<[experimental]> tag; otherwise, it must be
455 deprecated normally before removal or incompatible change.
457 =back
459 =cut