The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Deprecated opcodes

fetchmethod

Use the find_method opcode instead.

.imc file extension

http://xrl.us/jc4u

 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

PGE::P6Regex 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::P6Regex"

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

Subpragma syntax

Subroutine attributes now 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.

FUTURE changes

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

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"