# $Id: DEPRECATED.pod 27844 2008-05-27 10:06:29Z kjs $

=head1 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.

=head1 vtable entries

=over 4

=item * C<get_attr> [post 0.5.2]

See RT #48583.

=item * C<set_attr> [post 0.5.2]

See RT #48585.

=item * C<type_keyed> [post 0.5.2]

See RT #48577.

=item * C<type_keyed_int> [post 0.5.2]

See RT #48579.

=item * C<type_keyed_str> [post 0.5.2]

See RT #48581.

=item * C<type> [post 0.5.2]

See RT #48567.

=item * C<new_from_string> [post 0.5.0]

See RT #47011.

=back

=head1 Opcodes

=over 4

=item * C<pioctl> [post 0.5.1]

See RT #48589.

=item * C<store_global> [post 0.5.0]

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

=item * C<find_global> [post 0.5.0]

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

=item * C<new>(out PMC, in INT, in STR) [post 0.5.0]

See RT #47011.

=item * C<getclass> [post 0.5.0]

See RT #47972. Future use should use the C<get_class> opcode.

=item * C<get_mro> [post 0.5.0]

See RT #47976.

=item * C<getfd> [post 0.5.1]

See RT #48310.

=back

=head1 Class Features

=over 4

=item * Integer Type IDs [post 0.5.0]

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

  $P0 = new 'Integer'

=item * PMC union struct [post 0.5.0]

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

=back

=head1 Exceptions

=over 4

=item * 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 C<getattribute> and C<setattribute> instead.

=item * 'push_exception' function [post 0.6.2]

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

=item * 'pop_exception' function [post 0.6.2]

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

=item * 'count_exception_handlers' function [post 0.6.2]

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

=item * 'get_exception_handler' function and 'get_eh' opcode [post 0.6.2]

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

=item * '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.

=item * 'throwcc' opcode [post 0.6.2]

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

=item * 'internal_exception' function [post 0.6.2]

Is deprecated, replaced by the C<exit_fatal> function.

=item * 'do_exception', 'do_str_exception', 'do_pmc_exception', 'create_exception' [post 0.6.2]

Are deprecated.

=item * 'handle_exception' [post 0.6.2]

Is deprecated, replaced by C<Parrot_ex_calc_handler_offset>.

=item * 'rethrow_exception', 'rethrow_c_exception' [post 0.6.2]

Are deprecated, replaced by C<Parrot_ex_rethrow_from_op> and
C<Parrot_ex_rethrow_from_c>.

=back

=head1 PIR syntax

=over 4

=item * C<<.namespace <identifier> >> syntax [post 0.5.1]

See RT #48737.

=item * Use of C<::> in identifiers [post 0.5.1]

See RT #48735.

=item * C<.namespace [ "a" .. "b" ]> [post 0.5.0]

See RT #46715.

=item * C<.namespace> (without brackets) [post 0.6.2]

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

=item * vtable name .constants and __vtable overrides [post 0.5.2]

See RT #48877.

=item * Assignment syntax with opcodes [post ???]

See RT #36283.  When the first argument of an opcode is C<OUT>, then
the assignment syntax will be allowed, as it is today.

In any other case (i.e. C<INOUT>, C<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"


=back

=head1 Parrot Compiler tools

=head2 Capture-based objects

=over 4

=item 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.

=back

=cut
