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.

When deprecating opcodes, in addition to the ticket, be sure to mark the opcode with the :deprecated flag; this will allow users to enable deprecation warnings selectively with:

 .include 'include/warnings.pasm'
 warningson .PARROT_WARNINGS_DEPRECATED_FLAG

And then receive runtime warnings if they are using any deprecated opcodes. The -w command line option for parrot can also be used to enable all warnings.

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.

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 key, use getattribute and setattribute instead.

  • 'push_exception' function [post 0.6.2]

    Is deprecated, replaced by Parrot_cx_add_handler (a method call to add_handler on the concurrency scheduler object).

  • 'pop_exception' function [post 0.6.2]

    Is deprecated, replaced by Parrot_cx_delete_handler_typed (a method call to delete_handler on the concurrency scheduler object).

  • 'count_exception_handlers' function [post 0.6.2]

    Is deprecated, replaced by Parrot_cx_count_handlers_typed (a method call to count_handlers on the concurrency scheduler object).

  • 'get_exception_handler' function and 'get_eh' opcode [post 0.6.2]

    Are deprecated, exception handler lookup by index is no longer supported.

  • 'get_all_exception_handlers' function and 'get_all_eh' opcode [post 0.6.2]

    Are deprecated, access to the exception handler list should be performed through the concurrency scheduler.

  • 'throwcc' opcode [post 0.6.2]

    Is deprecated, replaced by the throw opcode (the single argument form of 'throwcc' was already identical to 'throw').

  • 'internal_exception' function [post 0.6.2]

    Is deprecated, replaced by the exit_fatal function.

  • 'do_exception', 'do_str_exception', 'do_pmc_exception', 'create_exception' [post 0.6.2]

    Are deprecated.

  • 'handle_exception' [post 0.6.2]

    Is deprecated, replaced by Parrot_ex_calc_handler_offset.

  • 'rethrow_exception', 'rethrow_c_exception' [post 0.6.2]

    Are deprecated, replaced by Parrot_ex_rethrow_from_op and Parrot_ex_rethrow_from_c.

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.

  • .namespace (without brackets) [post 0.6.2]

    All should .namespace directives without brackets should take empty brackets to indicate the root namespace. See RT #48549.

  • 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

Capture-based objects

get_array, get_hash, get_scalar deprecations [post 0.6.2]

See RT#54000. The 'get_array', 'get_hash', and 'get_scalar' methods are now called 'list', 'hash', and 'item' respectively.