=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
=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 * Lexical Pads
Autrijus Tang has details.
=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
=over 4
=item * split
https://rt.perl.org/rt3//Ticket/Display.html?id=32544
Will Coleda suggested C<s/regexp/perl 6 rule/> and using PGE. Patrick Michaud
suggests making C<split> work only on constant strings and using PGE for
everything else.
=back
=head2 Missing Vtables
=over 4
=item * ResizablePMCArray
https://rt.perl.org/rt3//Ticket/Display.html?id=31867
=item * ResizableIntegerArray
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>
=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 * Namespaces
Matt Diephouse has prepared an email on this.
=item * Give invokable PMCs a canonical way to store their associated HLL
source and argument information.
Will Coleda is thinking about this.
=item * Add rules engines for perl5-ish RE's in PGE.
Will Coleda specifically wants
http://www.tcl.tk/man/tcl8.5/TclCmd/re_syntax.htm, but having a P5-ish one to
subclass would be just dandy. Patrick Michaud thinks this is doable.
=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