=head1 NAME

What's Broken in Parrot Right Now

=head1 PURPOSE

This is a list of items we think are broken in Parrot at the current revision.
It's not a list of bugs -- it's a list of missing and broken features that
prevent developers from working on their parts of the system.

Committers, please add to the list as you find things and remove from the list
as you resolve things.

=head2 Missing Features

Ways to emulate these would be nice too.

=over 4

=item * Lexical Classes

=item * Anonymous Classes

=item * Submethods

=item * ParrotIO objects that work on strings

It should be possible to redirect input from and output to ParrotIO objects
that don't actually perform IO, instead working with memory.  Unfortunately, it
looks like there are no vtable methods for read and write operations.

See the C<setstdout> and C<setstderr> ops.

=back

=head2 Broken Features

=over 4

=item * Existing Code Marked As Broken

Lots of comments in the code read C<XXX>, C<???>, C<FIXME>, or 
C<UNIMPL>.  Fix them.

=item * Nested *Struct PMCs Share State

chromatic has a test case almost ready to show this.

=item * C<setattribute> Sometimes Misses

https://rt.perl.org/rt3//Ticket/Display.html?id=36411

=back

=head2 Unfinished Opcodes

None at this time.

=head2 Missing Vtables

=over 4

=item * ResizableIntegerArray

# XXX This is the wrong ticket number.
https://rt.perl.org/rt3//Ticket/Display.html?id=32374

=item * splice

https://rt.perl.org/rt3//Ticket/Display.html?id=34394

=back

=head2 Missing PDDs

=over

=item * Embedding (PDD 10)

https://rt.perl.org/rt3//Ticket/Display.html?id=33918

=item * Assembly (PDD 12)

https://rt.perl.org/rt3//Ticket/Display.html?id=33919

=item * Bytecode (PDD 13)

https://rt.perl.org/rt3//Ticket/Display.html?id=33920

=back

=head2 Language-Specific Items

=over 4

=item * Make Perl a F</language>

=over 4

=item * Don't have Perl deps in static classes

https://rt.perl.org/rt3//Ticket/Display.html?id=32642

=item * Make Perl PMCs dynamic

https://rt.perl.org/rt3//Ticket/Display.html?id=32646

=back

=item * Let languages be self contained

https://rt.perl.org/rt3//Ticket/Display.html?id=31633

Right now many languages are in the  F<MANIFEST>, using the global config, etc.
As far as Perl goes, this  could let us move Perl PMCs into
F<languages/perl[6]>).

=back

=head2 Obsolete Features

=over 4

=item * Everything in F<DEPRECATED.pod>

=back

=head2 Miscellaneous

=over 4

=item * Generate accurate file/line number information in stack traces.  

=item * Get name of C<parrot> executable

https://rt.perl.org/rt3//Ticket/Display.html?id=33923 

=item * Give invokable PMCs a canonical way to store their associated HLL
source and argument information.

=item * Allow Runtime Compiler Registration

Leo suggests an eventual startup sequence of:

=over 4

=item * start main in F<src/parrot.c>

=item * determine source file type to compile/run

=item * handle execution over to xxx-compiler or to pbc-run.

=back

Currently F<src/parrot.c> does nothing and startup occurs in F<imcc/main.c>.

=back
