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

Deprecation in Parrot

This is a list of currently deprecated features of Parrot. Every deprecation has an associated RT ticket. Each item indicates the last release it's guaranteed to appear in. Items marked with a release of ??? are still deprecated, but a firm deadline for their removal has not yet been established.

When deprecated items are removed, all usage of the feature in the repository should be updated or removed; including documentation.

vtable entries

  • get_attr [post 0.5.2]

    See RT #48583.

  • set_attr [post 0.5.2]

    See RT #48585.

  • type_keyed [post 0.5.2]

    See RT #48577.

  • type_keyed_int [post 0.5.2]

    See RT #48579.

  • type_keyed_str [post 0.5.2]

    See RT #48581.

  • type [post 0.5.2]

    See RT #48567.

  • new_from_string [post 0.5.0]

    See RT #47011.

Opcodes

  • pioctl [post 0.5.1]

    See RT #48589.

  • store_global [post 0.5.0]

    See RT #48016. Replace usage with set_[hll,root]_global variants.

  • find_global [post 0.5.0]

    See RT #48018. Replace usage with get_[hll,root]_global variants.

  • new(out PMC, in INT, in STR) [post 0.5.0]

    See RT #47011.

  • getclass [post 0.5.0]

    See RT #47972. Future use should use the get_class opcode.

  • get_mro [post 0.5.0]

    See RT #47976.

  • getfd [post 0.5.1]

    See RT #48310.

  • saveall and restoreall ("register stack" ops) [post 0.6.1]

    It is much faster to use Parrot Calling Conventions or a separate set of registers rather than bsr/ret calling. See RT #52838.

  • save, restore, other "user stack" ops [post 0.7.0]

    It is much faster and more flexible to use push and pop on an explicit array object. The full list of deprecated ops is show below:

            depth
            entrytype
            lookback
            restore
            rotate_up
            save
            savec

    See RT #52842 for details.

Class Features

  • Integer Type IDs [post 0.5.0]

    See RT #48024. Instead of $P0 = new Integer or $P0 = new .Integer, use the following syntax, which works for both PMCs and objects.

      $P0 = new 'Integer'
  • PMC union struct [post 0.5.0]

    See RT #48014. This will be removed once all core PMCs have been updated.

Exceptions

  • Keyed access to exception attributes [post 0.5.1]

    See RT #48012. Attributes on exception objects will no longer be accessible by integer or string key, use getattribute and setattribute instead.

PIR syntax

  • <.namespace <identifier >> syntax [post 0.5.1]

    See RT #48737.

  • Use of :: in identifiers [post 0.5.1]

    See RT #48735.

  • .namespace [ "a" .. "b" ] [post 0.5.0]

    See RT #46715.

  • vtable name .constants and __vtable overrides [post 0.5.2]

    See RT #48877.

  • Assignment syntax with opcodes [post ???]

    See RT #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"

Parrot Compiler tools

Currently there are no deprecations.