# $Id: /mirror/trunk/DEPRECATED.pod 35885 2009-01-21T08:08:42.597406Z chromatic  $

=head1 Deprecation in Parrot

This is a list of currently deprecated features of Parrot.  Every deprecation
has an associated RT or TT ticket.  Each item indicates the last release it's
guaranteed to appear in.

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. You can use C<make warnings_tests> to run the standard test suite
with this option.

=head1 Languages

=over 4

=item * Rakudo Perl moves to its own repository [post 0.9.0]

Rakudo Perl (languages/perl6) will be moving to its own repository
shortly after the 0.9.0 release.  The new location is yet to be
determined.

=back

=head1 PMCS

=over 4

=item * vtablecache [post 0.9.0] (TT #6)

=item * delegate [post 0.9.0] (TT #187)

=item * deleg_pmc [post 0.9.0] (TT #187)

=item * enumerate [post 0.9.0] (TT #187)

=item * intlist [post 0.9.0] (TT #187)

=item * multiarray [post 0.9.0] (TT #187)

=item * pair [post 0.9.0] (TT #187)

=item * pointer [post 0.9.0] (TT #187)

=item * closure [post 0.9.0] (TT #188)

=item * random [post 0.9.0] (TT #189)

=item * ref [post 0.9.0] (TT #190)

=item * sarray [post 0.9.0] (TT #191)

=item * tqueue [post 0.9.0] (TT #192)

=back

=head1 Class Features

=over 4

=item * PMC union struct [post 0.5.0]

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

=item * :anon and :vtable named parameters to add_method [post 0.8.2]

If you want to override a vtable method/function when building a Class, then
use the method C<add_vtable_override> instead of calling C<add_method> with
one or both of these flags.

See TT #158

=back

=head1 PIR syntax

=over 4

=item * Assignment syntax with opcodes [post 0.8.2]

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 * named class/pmc lookup in pir syntax such as new, isa, subclass, get_class, etc [post 0.9.0]

Class PMC name resolution will be the following.

if the arg is a STRING
  Relative to the current Namespace

if the arg is a ResizableStringArray
  Relative to the current HLL Namespace

if the arg is a Namespace or Class PMC
  The passed in class or the class attatched to the passed in namespace.

See TT #159

=item * load_bytecode without a file extension [post 0.9.0]

The load_bytecode opcode will require an extension on all .pir, .pasm,
and .pbc files.  It will perform limited checks for alternate extensions:

  a .pir file that isn't found will check for a .pbc file

  a .pasm file that isn't found will check for a .pbc file
  
  a .pbc file that isn't found will check for a .pir file, then a .pasm file

=item * all socket-related opcodes [post 0.9.0]

The socket-related opcodes will all be replaced with method calls.

=back

=head1 Functions

=over 4

=item Old-style MMD functions [post 0.7.1]

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.

=item Subs marked with C<:vtable>/C<:method> aren't in namespace [post 0.8.2]

Subs marked with C<:vtable> or C<:method> flags are no longer given a
namespace entry by default.  Use the C<:nsentry> flag to cause this
to happen.  See RT #60586 and RT #53302.

=back

=head1 Compiler tools

=over 4

=item P6protoobject stringification [post 0.9.0]

Stringification of protoobjects will return the full name of the type
and parentheses, per Synopsis 12.  See TT #168

=back

=head1 standard library

=over 4

=item Data::Sort [post 0.9.0]

Sorting is already available as a method on various array-style PMCs.
See TT #106

=item Data::Escape [post 0.9.0]

Replace usage with the escape opcode.  See TT #107

=item DWIM [post 0.9.0]

Hasn't been kept up to date; might move to the examples/ folder, but
doesn't need to be in stdlib.  See TT #120

=back

=cut
