Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Fetching contributors…
Cannot retrieve contributors at this time
107 lines (63 sloc) 2.24 KB

Deprecated opcodes


Use the find_method opcode instead.

.imc file extension

 IMC vs. PIR 
 Two names enter 
 One name leaves 

 /me giggles 
 -- Chip Salzenberg

Deprecated APIs

  • All Parrot_char_is_* functions from src/string_primitives.c will be removed. Please use Parrot_string_is_cclass() instead.

Deprecated methods


PGE::P6Rule is now a registered compiler, and should be used like so:

 <@pmichaud> it's easy; instead of  $P0 = find_global "PGE", "p6rule"   
   one now does  $P0 = compreg "PGE::P6Rule"

This syntax is also true for PGE::Glob and PGE::P5Regexp

FUTURE changes

Not yet deprecated, but it's recommended to use the new syxtax and gradually change the old.

Chip's colon

Subroutine attributes will use the colon syntax:

  .sub foo method, @MULTI(x,y)    => .sub foo :method :multi(x,y)
  .sub foo @ANON, @LOAD           => .sub foo :anon :load

The new syntax uses no comma separators and all sub attributes are lower case and prefixed by a colon.

Class name IDs

... will require a dot in front

  $P0 = new Integer               => $P0 = new .Integer
Assignment syntax with opcodes [#36283]

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. INOUT, 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"
Assignment Syntax

Currently, = is used for both assignment and aliasing. Chip says that, once this change is in effect, we'll use the following syntax:

   P0 := P1      # aliasing:   P0 and P1 point to same PMC
   P0 := opcode  # aliasing:   P0 points to PMC returned by opcode
   P0 = ...      # assignment: modifies P0, NO MATTER WHAT '...' IS

   S0 := S1      # aliasing:   S0 and S1 point to same header
   S0 := opcode  # aliasing:   S0 points to header returned by opcode
   S0 = ...      # assignment: modifies S0, NO MATTER WHAT '...' IS

   I0 := ...     # ILLEGAL
   I0 = ...      # assignment: modifies I0

   N0 := ...     # ILLEGAL
   N0 = ...      # assignment: modifies N0
Jump to Line
Something went wrong with that request. Please try again.