+ (Parrot_class_offset): Make "Not an object" a real_exception.
[parrot.git] / docs / BROKEN.pod
blobfae24a50a87b28484e19af54624279a6cd1f4803
1 =head1 NAME
3 What's Broken in Parrot Right Now
5 =head1 PURPOSE
7 This is a list of items we think are broken in Parrot at the current revision.
8 It's not a list of bugs -- it's a list of missing and broken features that
9 prevent developers from working on their parts of the system.
11 Committers, please add to the list as you find things and remove from the list
12 as you resolve things.
14 =head2 Missing Features
16 Ways to emulate these would be nice too.
18 =over 4
20 =item * Lexical Classes
22 =item * Anonymous Classes
24 =item * Submethods
26 =item * ParrotIO objects that work on strings
28 It should be possible to redirect input from and output to ParrotIO objects
29 that don't actually perform IO, instead working with memory.  Unfortunately, it
30 looks like there are no vtable methods for read and write operations.
32 See the C<setstdout> and C<setstderr> ops.
34 =back
36 =head2 Broken Features
38 =over 4
40 =item * Existing Code Marked As Broken
42 Lots of comments in the code read C<XXX>, C<???>, C<FIXME>, or 
43 C<UNIMPL>.  Fix them.
45 =item * Nested *Struct PMCs Share State
47 chromatic has a test case almost ready to show this.
49 =item * C<setattribute> Sometimes Misses
51 https://rt.perl.org/rt3//Ticket/Display.html?id=36411
53 =back
55 =head2 Unfinished Opcodes
57 None at this time.
59 =head2 Missing Vtables
61 =over 4
63 =item * ResizableIntegerArray
65 # XXX This is the wrong ticket number.
66 https://rt.perl.org/rt3//Ticket/Display.html?id=32374
68 =item * splice
70 https://rt.perl.org/rt3//Ticket/Display.html?id=34394
72 =back
74 =head2 Missing PDDs
76 =over
78 =item * Embedding (PDD 10)
80 https://rt.perl.org/rt3//Ticket/Display.html?id=33918
82 =item * Assembly (PDD 12)
84 https://rt.perl.org/rt3//Ticket/Display.html?id=33919
86 =item * Bytecode (PDD 13)
88 https://rt.perl.org/rt3//Ticket/Display.html?id=33920
90 =back
92 =head2 Language-Specific Items
94 =over 4
96 =item * Make Perl a F</language>
98 =over 4
100 =item * Don't have Perl deps in static classes
102 https://rt.perl.org/rt3//Ticket/Display.html?id=32642
104 =item * Make Perl PMCs dynamic
106 https://rt.perl.org/rt3//Ticket/Display.html?id=32646
108 =back
110 =item * Let languages be self contained
112 https://rt.perl.org/rt3//Ticket/Display.html?id=31633
114 Right now many languages are in the  F<MANIFEST>, using the global config, etc.
115 As far as Perl goes, this  could let us move Perl PMCs into
116 F<languages/perl[6]>).
118 =back
120 =head2 Obsolete Features
122 =over 4
124 =item * Everything in F<DEPRECATED.pod>
126 =back
128 =head2 Miscellaneous
130 =over 4
132 =item * Generate accurate file/line number information in stack traces.  
134 =item * Get name of C<parrot> executable
136 https://rt.perl.org/rt3//Ticket/Display.html?id=33923 
138 =item * Give invokable PMCs a canonical way to store their associated HLL
139 source and argument information.
141 =item * Allow Runtime Compiler Registration
143 Leo suggests an eventual startup sequence of:
145 =over 4
147 =item * start main in F<src/parrot.c>
149 =item * determine source file type to compile/run
151 =item * handle execution over to xxx-compiler or to pbc-run.
153 =back
155 Currently F<src/parrot.c> does nothing and startup occurs in F<imcc/main.c>.
157 =back