+ (invoke): Signal a METH_NOT_FOUND exception (instead of a
[parrot.git] / DEPRECATED.pod
blob867533163a262972904d99b0da22a723c29fbad2
1 =head1 Deprecated opcodes
3 All are gone. Please read the history of this file for more.
5 =head1 .imc file extension
7 http://xrl.us/jc4u
9  IMC vs. PIR 
10  Two names enter 
11  One name leaves 
13  /me giggles 
14  -- Chip Salzenberg
16 =head1 Deprecated APIs
18 =over 4
20 =item * 
22 All Parrot_char_is_* functions from src/string_primitives.c will
23 be removed. Please use Parrot_string_is_cclass() instead.
25 =back
27 =head1 Deprecated methods
29 =over 4
31 =item PGE
33 PGE::P6Rule is now a registered compiler, and should be used like so:
35  <@pmichaud> it's easy; instead of  $P0 = find_global "PGE", "p6rule"   
36    one now does  $P0 = compreg "PGE::P6Rule"
38 This syntax is also true for PGE::Glob and PGE::P5Regexp
40 =back
42 =head1 FUTURE changes
44 Not yet deprecated, but it's recommended to use the new syxtax and
45 gradually change the old.
47 =over 4
49 =item Chip's colon
51 Subroutine attributes will use the colon syntax:
53   .sub foo method, @MULTI(x,y)    => .sub foo :method :multi(x,y)
54   .sub foo @ANON, @LOAD           => .sub foo :anon :load
56 The new syntax uses no comma separators and all sub attributes are lower
57 case and prefixed by a colon.
59 =item Class name IDs
61 ... will require a dot in front
63   $P0 = new Integer               => $P0 = new .Integer
65 =item Assignment syntax with opcodes [#36283]
67 When the first argument of an opcode is C<OUT>, then the assignment syntax
68 will be allowed, as it is today.
70 In any other case (i.e. C<INOUT>, C<IN>), this will become
71 a syntax error. For example:
73         $S0 = print
74         $P0 = substr 1, 2, "x"
76 Will have to be:
78         print $S0
79         substr $P0, 1, 2, "x"
81 =item Assignment Syntax
83 Currently, C<=> is used for both assignment and aliasing. Chip says that, 
84 once this change is in effect, we'll use the following syntax:
86    P0 := P1      # aliasing:   P0 and P1 point to same PMC
87    P0 := opcode  # aliasing:   P0 points to PMC returned by opcode
88    P0 = ...      # assignment: modifies P0, NO MATTER WHAT '...' IS
90    S0 := S1      # aliasing:   S0 and S1 point to same header
91    S0 := opcode  # aliasing:   S0 points to header returned by opcode
92    S0 = ...      # assignment: modifies S0, NO MATTER WHAT '...' IS
94    I0 := ...     # ILLEGAL
95    I0 = ...      # assignment: modifies I0
97    N0 := ...     # ILLEGAL
98    N0 = ...      # assignment: modifies N0
100 =back