# $Id: /mirror/trunk/DEPRECATED.pod 32885 2008-11-19T01:51:15.028718Z pmichaud  $

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

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 C<-w> command line option for parrot can also be used to enable all
warnings.

=head1 vtable entries

=over 4

=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<get_mro> [post 0.5.0]

See RT #47976.

=item * C<n_*> math opcode variants [post 0.7.1]

See RT #58410.

=back

=head1 Class Features

=over 4

=item * Closure PMC [post 0.8.1]

See RT #60654.  The Closure PMC will no longer be generated by IMCC --
instead, closure semantics are built-in to the Sub PMC.

=item * PMC union struct [post 0.5.0]

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

=back

=head1 PIR syntax

=over 4

=item * old-style PASM registers [post 0.6.4]

Old-style PASM registers without the C<$> character are deprecated; use
PIR-style registers only.

See RT #57638.

=item * C<global> keyword [post 0.6.4]

See RT #48016
and RT #48018.

=item * C<#line> [post 0.6.4]

Will be replaced by C<.line> to be more consistent with other PIR syntax.

See RT #45857, RT #43269, and RT #47141.

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

See RT #48737.

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

See RT #46715.

=item * C<.HLL> <string> ',' <string> [post 0.8.1]

This will be replaced by C<.HLL> <string>; the second string (and
comma to separate them) will no longer be accepted. Use C<.loadlib>
for specifying the library name.

See RT #57428.

=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"

=item * C<.return> in C<.begin_return> / C<.end_return> [post 0.7.2]

The C<.return> directive in a C<.begin_return> sequence will be replaced by
the C<.set_return> directive. Likewise, C<.yield> in a C<.begin_yield>
sequence will be replaced by C<.set_yield>.

See RT #58980.

=item * C<.arg> will become C<.set_arg> [post 0.7.2]

In a C<.begin_call> sequence, the C<.arg> directive will be replaced by
C<.set_arg>.

See RT #58976.

=item * C<.result> will become C<.get_result> [post 0.7.2]

In a C<.begin_call> sequence, the C<.result> direcive will be replaced by
the more descriptive C<.get_result>.

See RT #58978.

=item * C<:lexid> will become C<:subid> [post 0.8.1]

C<:lexid> will be renamed to C<:subid>.

See RT #60592.

=item * Exception Handlers won't automatically be disabled [post 0.8.1]

Exception handlers won't be automatically disabled after 0.8.1.
Any exception handlers that currently rely on this feature will need to
either be more specific about what they catch or rethrow exceptions they
don't recognize.

See RT #60640.

=back

=head1 Functions

=over 4

=item PARROT_API changes to PARROT_EXPORT [post 0.8.1]

The PARROT_API name suggests something that is not the case yet.  This will
become PARROT_EXPORT after November 2008 release.  (We will reintroduce
PARROT_API on specific functions where appropriate post 1.0.0.)

See RT #60624.

=item Old-style MMD functions [post 0.7.1]

Parrot_mmd_add_function, mmd_expand_x, mmd_expand_y, Parrot_mmd_register,
Parrot_mmd_register_sub, Parrot_mmd_destroy, Parrot_MMD_search_default_infix,
Parrot_mmd_search_default, mmd_cvt_to_types.

See RT #60626.

=item src/pic.c and src/pic_jit.c [post 0.8.1]

These two files were a thin prototype implementation of Polymorphic Inline
Caching that only ever applied to 4 opcodes, one of which has now been removed.
The files (and all functions in them) are deprecated, and will be removed. See
RT #60048.

=back

=cut
