Rev | Author | # | Line |
---|---|---|---|
1 | perry | 1 | PERLTODO |
2 | !!!PERLTODO | ||
3 | NAME | ||
4 | DESCRIPTION | ||
5 | Infrastructure | ||
6 | Configure | ||
7 | Perl Language | ||
8 | Perl Internals | ||
9 | Documentation | ||
10 | Modules | ||
11 | Tom's Wishes | ||
12 | Win32 Stuff | ||
13 | Would be nice to have | ||
14 | Possible pragmas | ||
15 | Optimizations | ||
16 | Vague possibilities | ||
17 | To Do Or Not To Do | ||
18 | Threading | ||
19 | Compiler | ||
20 | Recently Finished Tasks | ||
21 | ---- | ||
22 | !!NAME | ||
23 | |||
24 | |||
25 | perltodo - Perl TO-DO List | ||
26 | !!DESCRIPTION | ||
27 | |||
28 | |||
29 | This is a list of wishes for Perl. It is maintained by | ||
30 | Nathan Torkington for the Perl porters. Send updates to | ||
31 | ''perl5-porters@perl.org''. If you want to work on any of | ||
32 | these projects, be sure to check the perl5-porters archives | ||
33 | for past ideas, flames, and propaganda. This will save you | ||
34 | time and also prevent you from implementing something that | ||
35 | Larry has already vetoed. One set of archives may be found | ||
36 | at: | ||
37 | |||
38 | |||
39 | http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/ | ||
40 | !!Infrastructure | ||
41 | |||
42 | |||
43 | __Mailing list archives__ | ||
44 | |||
45 | |||
46 | Chaim suggests contacting egroup and asking them to archive | ||
47 | the other perl.org mailing lists. Probably not advocacy, but | ||
48 | definitely perl6-porters, etc. | ||
49 | |||
50 | |||
51 | __Bug tracking system__ | ||
52 | |||
53 | |||
54 | Richard Foley ''richard@perl.org'' is writing one. We | ||
55 | looked at several, like gnats and the Debian system, but at | ||
56 | the time we investigated them, none met our needs. Since | ||
57 | then, Jitterbug has matured, and may be worth | ||
58 | reinvestigation. | ||
59 | |||
60 | |||
61 | The system we've developed is the recipient of perlbug mail, | ||
62 | and any followups it generates from perl5-porters. New bugs | ||
63 | are entered into a mysql database, and sent on to | ||
64 | perl5-porters with the subject line rewritten to include a | ||
65 | ``ticket number'' (unique ID for the new | ||
66 | bug). If the incoming message already had a ticket number in | ||
67 | the subject line, then the message is logged against that | ||
68 | bug. There is a separate email interface (not forwarding to | ||
69 | p5p) that permits porters to claim, categorize, and close | ||
70 | tickets. | ||
71 | |||
72 | |||
73 | There is also a web interface to the system at | ||
74 | http://bugs.perl.org. | ||
75 | |||
76 | |||
77 | The current delay in implementation is caused by perl.org | ||
78 | lockups. One suspect is the mail handling system, possibly | ||
79 | going into loops. | ||
80 | |||
81 | |||
82 | We still desperately need a bugmaster, someone who will look | ||
83 | at every new ``bug'' and kill those that we already know | ||
84 | about, those that are not bugs at all, etc. | ||
85 | |||
86 | |||
87 | __Regression Tests__ | ||
88 | |||
89 | |||
90 | The test suite for Perl serves two needs: ensuring features | ||
91 | work, and ensuring old bugs have not been reintroduced. Both | ||
92 | need work. | ||
93 | |||
94 | |||
95 | Brent !LaVelle (lavelle@metronet.com) has stepped forward to | ||
96 | work on performance tests and improving the size of the test | ||
97 | suite. | ||
98 | |||
99 | |||
100 | Coverage | ||
101 | |||
102 | |||
103 | Do the tests that come with Perl exercise every line (or | ||
104 | every block, or ...) of the Perl interpreter, and if not | ||
105 | then how can we make them do so? | ||
106 | |||
107 | |||
108 | Regression | ||
109 | |||
110 | |||
111 | No bug fixes should be made without a corresponding | ||
112 | testsuite addition. This needs a dedicated enforcer, as the | ||
113 | current pumpking is either too lazy or too stupid or both | ||
114 | and lets enforcement wander all over the map. | ||
115 | :-) | ||
116 | |||
117 | |||
118 | __DIE__ | ||
119 | |||
120 | |||
121 | Tests that fail need to be of a form that can be readily | ||
122 | mailed to perlbug and diagnosed with minimal | ||
123 | back-and-forth's to determine which test failed, due to what | ||
124 | cause, etc. | ||
125 | |||
126 | |||
127 | suidperl | ||
128 | |||
129 | |||
130 | We need regression/sanity tests for suidperl | ||
131 | |||
132 | |||
133 | The 25% slowdown from perl4 to perl5 | ||
134 | |||
135 | |||
136 | This value may or may not be accurate, but it certainly is | ||
137 | eye-catching. For some things perl5 is faster than perl4, | ||
138 | but often the reliability and extensibility have come at a | ||
139 | cost of speed. The benchmark suite that Gisle released | ||
140 | earlier has been hailed as both a fantastic solution and as | ||
141 | a source of entirely meaningless figures. Do we need to test | ||
142 | ``real applications''? Can you do so? Anyone have machines | ||
143 | to dedicate to the task? Identify the things that have grown | ||
144 | slower, and see if there's a way to make them | ||
145 | faster. | ||
146 | !!Configure | ||
147 | |||
148 | |||
149 | Andy Dougherty maintain(eds) a list of ``todo'' items for | ||
150 | the configure that comes with Perl. See Porting/pumpkin.pod | ||
151 | in the latest source release. | ||
152 | |||
153 | |||
154 | __Install HTML__ | ||
155 | |||
156 | |||
157 | Have ``make install'' give you the option to install | ||
158 | HTML as well. This would be part of | ||
159 | Configure. Andy Wardley (certified Perl studmuffin) will | ||
160 | look into the current problems of HTML | ||
161 | installation--is 'installhtml' preventing this from | ||
162 | happening cleanly, or is pod2html the problem? If the | ||
163 | latter, Brad Appleton's pod work may fix the problem for | ||
164 | free. | ||
165 | !!Perl Language | ||
166 | |||
167 | |||
168 | __64-bit Perl__ | ||
169 | |||
170 | |||
171 | Verify complete 64 bit support so that the value of sysseek, | ||
172 | or -s, or ''stat()'', or tell can fit into a | ||
173 | perl number without losing precision. Work with the | ||
174 | perl-64bit mailing list on perl.org. | ||
175 | |||
176 | |||
177 | __Prototypes__ | ||
178 | |||
179 | |||
180 | Named prototypes | ||
181 | |||
182 | |||
183 | Add proper named prototypes that actually work | ||
184 | usefully. | ||
185 | |||
186 | |||
187 | Indirect objects | ||
188 | |||
189 | |||
190 | Fix prototype bug that forgets indirect | ||
191 | objects. | ||
192 | |||
193 | |||
194 | Method calls | ||
195 | |||
196 | |||
197 | Prototypes for method calls. | ||
198 | |||
199 | |||
200 | Context | ||
201 | |||
202 | |||
203 | Return context prototype declarations. | ||
204 | |||
205 | |||
206 | Scoped subs | ||
207 | |||
208 | |||
209 | lexically-scoped subs, e.g. my sub | ||
210 | !!Perl Internals | ||
211 | |||
212 | |||
213 | __magic_setisa__ | ||
214 | |||
215 | |||
216 | magic_setisa should be made to update | ||
217 | %FIELDS [[???] | ||
218 | |||
219 | |||
220 | __Garbage Collection__ | ||
221 | |||
222 | |||
223 | There was talk of a mark-and-sweep garbage collector at | ||
224 | TPC2 , but the (to users) unpredictable | ||
225 | nature of its behaviour put some off. Sarathy, I believe, | ||
226 | did the work. Here's what he has to say: | ||
227 | |||
228 | |||
229 | Yeah, I hope to implement it someday too. The points that | ||
230 | were raised in TPC2 were all to do with | ||
231 | calling ''DESTROY ()'' methods, but I | ||
232 | think we can accommodate that by extending ''bless()'' to | ||
233 | stash extra information for objects so we track their | ||
234 | lifetime accurately for those that want their | ||
235 | ''DESTROY ()'' to be predictable (this | ||
236 | will be a speed hit, naturally, and will therefore be | ||
237 | optional, naturally. :) | ||
238 | |||
239 | |||
240 | [[N.B. Don't even ask me about this now! When I have the time | ||
241 | to write a cogent summary, I'll post it.] | ||
242 | |||
243 | |||
244 | __Reliable signals__ | ||
245 | |||
246 | |||
247 | Sarathy and Dan Sugalski are working on this. Chip posted a | ||
248 | patch earlier, but it was not accepted into 5.005. The issue | ||
249 | is tricky, because it has the potential to greatly slow down | ||
250 | the core. | ||
251 | |||
252 | |||
253 | There are at least three things to consider: | ||
254 | |||
255 | |||
256 | Alternate ''runops()'' for signal despatch | ||
257 | |||
258 | |||
259 | Sarathy and Dan are discussed this on | ||
260 | perl5-porters. | ||
261 | |||
262 | |||
263 | Figure out how to ''die()'' in delayed | ||
264 | sighandler | ||
265 | |||
266 | |||
267 | Add tests for Thread::Signal | ||
268 | |||
269 | |||
270 | Automatic tests against CPAN | ||
271 | |||
272 | |||
273 | Is there some way to automatically build all/most of | ||
274 | CPAN with the new Perl and check that the | ||
275 | modules there pass all the tests? | ||
276 | |||
277 | |||
278 | __Interpolated regex performance bugs__ | ||
279 | |||
280 | |||
281 | while ( | ||
282 | The qr// syntax added in 5.005 has solved this problem, but it needs more thorough documentation. | ||
283 | |||
284 | |||
285 | __Memory leaks from failed eval/regcomp__ | ||
286 | |||
287 | |||
288 | The only known memory leaks in Perl are in failed code or | ||
289 | regexp compilation. Fix this. Hugo Van Der Sanden will | ||
290 | attempt this but won't have tuits until January | ||
291 | 1999. | ||
292 | |||
293 | |||
294 | __Make XS easier to use__ | ||
295 | |||
296 | |||
297 | There was interest in SWIG from porters, but | ||
298 | nothing has happened lately. | ||
299 | |||
300 | |||
301 | __Make embedded Perl easier to use__ | ||
302 | |||
303 | |||
304 | This is probably difficult for the same reasons that `` | ||
305 | XS For Dummies'' will be | ||
306 | difficult. | ||
307 | |||
308 | |||
309 | __Namespace cleanup__ | ||
310 | |||
311 | |||
312 | CPP-space: restrict CPP symbols exported from headers | ||
313 | header-space: move into CORE/perl/ | ||
314 | API-space: begin list of things that constitute public api | ||
315 | env-space: Configure should use PERL_CONFIG instead of CONFIG etc. | ||
316 | |||
317 | |||
318 | __MULTIPLICITY__ | ||
319 | |||
320 | |||
321 | Complete work on safe recursive interpreters | ||
322 | Perl-. Sarathy says that a reference | ||
323 | implementation exists. | ||
324 | |||
325 | |||
326 | __!MacPerl__ | ||
327 | |||
328 | |||
329 | Chris Nandor and Matthias Neeracher are working on better | ||
330 | integrating !MacPerl into the Perl distribution. | ||
331 | !!Documentation | ||
332 | |||
333 | |||
334 | There's a lot of documentation that comes with Perl. The | ||
335 | quantity of documentation makes it difficult for users to | ||
336 | know which section of which manpage to read in order to | ||
337 | solve their problem. Tom Christiansen has done much of the | ||
338 | documentation work in the past. | ||
339 | |||
340 | |||
341 | __A clear division into tutorial and | ||
342 | reference__ | ||
343 | |||
344 | |||
345 | Some manpages (e.g., perltoot and perlreftut) clearly set | ||
346 | out to educate the reader about a subject. Other manpages | ||
347 | (e.g., perlsub) are references for which there is no | ||
348 | tutorial, or are references with a slight tutorial bent. If | ||
349 | things are either tutorial or reference, then the reader | ||
350 | knows which manpage to read to learn about a subject, and | ||
351 | which manpage to read to learn all about an aspect of that | ||
352 | subject. Part of the solution to this is: | ||
353 | |||
354 | |||
355 | __Remove the artificial distinction between operators and | ||
356 | functions__ | ||
357 | |||
358 | |||
359 | History shows us that users, and often porters, aren't clear | ||
360 | on the operator-function distinction. The present split in | ||
361 | reference material between perlfunc and perlop hinders user | ||
362 | navigation. Given that perlfunc is by far the larger of the | ||
363 | two, move operator reference into perlfunc. | ||
364 | |||
365 | |||
366 | __More tutorials__ | ||
367 | |||
368 | |||
369 | More documents of a tutorial nature could help. Here are | ||
370 | some candidates: | ||
371 | |||
372 | |||
373 | Regular expressions | ||
374 | |||
375 | |||
376 | Robin Berjon (r.berjon@ltconsulting.net) has | ||
377 | volunteered. | ||
378 | |||
379 | |||
380 | I/O | ||
381 | |||
382 | |||
383 | Mark-Jason Dominus (mjd@plover.com) has an outline for | ||
384 | perliotut. | ||
385 | |||
386 | |||
387 | pack/unpack | ||
388 | |||
389 | |||
390 | This is badly needed. There has been some discussion on the | ||
391 | subject on perl5-porters. | ||
392 | |||
393 | |||
394 | Debugging | ||
395 | |||
396 | |||
397 | Ronald Kimball (rjk@linguist.dartmouth.edu) has | ||
398 | volunteered. | ||
399 | |||
400 | |||
401 | __Include a search tool__ | ||
402 | |||
403 | |||
404 | perldoc should be able to 'grep' fulltext indices of | ||
405 | installed POD files. This would let people | ||
406 | say: | ||
407 | |||
408 | |||
409 | perldoc -find printing numbers with commas | ||
410 | and get back the perlfaq entry on 'commify'. | ||
411 | |||
412 | |||
413 | This solution, however, requires documentation to contain | ||
414 | the keywords the user is searching for. Even when the users | ||
415 | know what they're looking for, often they can't spell | ||
416 | it. | ||
417 | |||
418 | |||
419 | __Include a locate tool__ | ||
420 | |||
421 | |||
422 | perldoc should be able to help people find the manpages on a | ||
423 | particular high-level subject: | ||
424 | |||
425 | |||
426 | perldoc -find web | ||
427 | would tell them manpages, web pages, and books with material on web programming. Similarly perldoc -find databases, perldoc -find references and so on. | ||
428 | |||
429 | |||
430 | We need something in the vicinity of: | ||
431 | |||
432 | |||
433 | % perl -help random stuff | ||
434 | No documentation for perl function `random stuff' found | ||
435 | The following entry in perlfunc.pod matches /random/a: | ||
436 | =item rand EXPR | ||
437 | =item rand | ||
438 | Returns a random fractional number greater than or equal to C | ||
439 | (Note: If your rand function consistently returns numbers that are too | ||
440 | large or too small, then your version of Perl was probably compiled | ||
441 | with the wrong number of RANDBITS.) | ||
442 | The following pod pages seem to have /stuff/a: | ||
443 | perlfunc.pod (7 hits) | ||
444 | perlfaq7.pod (6 hits) | ||
445 | perlmod.pod (4 hits) | ||
446 | perlsyn.pod (3 hits) | ||
447 | perlfaq8.pod (2 hits) | ||
448 | perlipc.pod (2 hits) | ||
449 | perl5004delta.pod (1 hit) | ||
450 | perl5005delta.pod (1 hit) | ||
451 | perlcall.pod (1 hit) | ||
452 | perldelta.pod (1 hit) | ||
453 | perlfaq3.pod (1 hit) | ||
454 | perlfaq5.pod (1 hit) | ||
455 | perlhist.pod (1 hit) | ||
456 | perlref.pod (1 hit) | ||
457 | perltoc.pod (1 hit) | ||
458 | perltrap.pod (1 hit) | ||
459 | Proceed to open perlfunc.pod? [[y] n | ||
460 | Do you want to speak perl interactively? [[y] n | ||
461 | Should I dial 911? [[y] n | ||
462 | Do you need psychiatric help? [[y] y | ||
463 | |||
464 | |||
465 | __Separate function manpages by default__ | ||
466 | |||
467 | |||
468 | Perl should install 'manpages' for every function/operator | ||
469 | into the 3pl or 3p manual section. By default. The splitman | ||
470 | program in the Perl source distribution does the work of | ||
471 | turning big perlfunc into little 3p pages. | ||
472 | |||
473 | |||
474 | __Users can't find the manpages__ | ||
475 | |||
476 | |||
477 | Make perldoc tell users what they need to add to | ||
478 | their .login or .cshrc to set their MANPATH | ||
479 | correctly. | ||
480 | |||
481 | |||
482 | __Install ALL Documentation__ | ||
483 | |||
484 | |||
485 | Make the standard documentation kit include the | ||
486 | VMS , OS/2 , Win32, Threads, | ||
487 | etc information. installperl and pod/Makefile should know | ||
488 | enough to copy README .foo to perlfoo.pod | ||
489 | before building everything, when appropriate. | ||
490 | |||
491 | |||
492 | __Outstanding issues to be documented__ | ||
493 | |||
494 | |||
495 | Tom has a list of 5.005_5* features or changes that require | ||
496 | documentation. | ||
497 | |||
498 | |||
499 | Create one document that coherently explains the delta | ||
500 | between the last camel release and the current release. | ||
501 | perldelta was supposed to be that, but no longer. The things | ||
502 | in perldelta never seemed to get placed in the right places | ||
503 | in the real manpages, either. This needs work. | ||
504 | |||
505 | |||
506 | __Adapt www.linuxhq.com for Perl__ | ||
507 | |||
508 | |||
509 | This should help glorify documentation and get more people | ||
510 | involved in perl development. | ||
511 | |||
512 | |||
513 | __Replace man with a perl program__ | ||
514 | |||
515 | |||
516 | Can we reimplement man in Perl? Tom has a start. I believe | ||
517 | some of the Linux systems distribute a manalike. | ||
518 | Alternatively, build on perldoc to remove the unfeatures | ||
519 | like ``is slow'' and ``has no apropos''. | ||
520 | |||
521 | |||
522 | __Unicode tutorial__ | ||
523 | |||
524 | |||
525 | We could use more work on helping people understand Perl's | ||
526 | new Unicode support that Larry has created. | ||
527 | !!Modules | ||
528 | |||
529 | |||
530 | __Update the POSIX extension to conform with | ||
531 | the POSIX 1003.1 Edition 2__ | ||
532 | |||
533 | |||
534 | The current state of the POSIX extension is | ||
535 | as of Edition 1, 1991, whereas the Edition 2 came out in | ||
536 | 1996. ISO/IEC 9945:1-1996(E), | ||
537 | ANSI/IEEE Std 1003.1, 1996 Edition. | ||
538 | ISBN 1-55937-573-6. The updates were legion: | ||
539 | threads, IPC , and real time | ||
540 | extensions. | ||
541 | |||
542 | |||
543 | __Module versions__ | ||
544 | |||
545 | |||
546 | Automate the checking of versions in the standard | ||
547 | distribution so it's easy for a pumpking to check whether | ||
548 | CPAN has a newer version that we should be | ||
549 | including? | ||
550 | |||
551 | |||
552 | __New modules__ | ||
553 | |||
554 | |||
555 | Which modules should be added to the standard distribution? | ||
556 | This ties in with the SDK discussed on the | ||
557 | perl-sdk list at perl.org. | ||
558 | |||
559 | |||
560 | __Profiler__ | ||
561 | |||
562 | |||
563 | Make the profiler (Devel::DProf) part of the standard | ||
564 | release, and document it well. | ||
565 | |||
566 | |||
567 | __Tie Modules__ | ||
568 | |||
569 | |||
570 | !VecArray | ||
571 | |||
572 | |||
573 | Implement array using ''vec()''. Nathan Torkington has | ||
574 | working code to do this. | ||
575 | |||
576 | |||
577 | !SubstrArray | ||
578 | |||
579 | |||
580 | Implement array using ''substr()'' | ||
581 | |||
582 | |||
583 | !VirtualArray | ||
584 | |||
585 | |||
586 | Implement array using a file | ||
587 | |||
588 | |||
589 | !ShiftSplice | ||
590 | |||
591 | |||
592 | Defines shift et al in terms of splice method | ||
593 | |||
594 | |||
595 | __Procedural options__ | ||
596 | |||
597 | |||
598 | Support procedural interfaces for the common cases of Perl's | ||
599 | gratuitously OOO modules. Tom objects to | ||
600 | ``use IO::File'' reading many thousands of lines of | ||
601 | code. | ||
602 | |||
603 | |||
604 | __RPC__ | ||
605 | |||
606 | |||
607 | Write a module for transparent, portable remote procedure | ||
608 | calls. (Not core). This touches on the CORBA | ||
609 | and ILU work. | ||
610 | |||
611 | |||
612 | __y2k localtime/gmtime__ | ||
613 | |||
614 | |||
615 | Write a module, Y2k::Catch, which overloads localtime and | ||
616 | gmtime's returned year value and catches ``bad'' attempts to | ||
617 | use it. | ||
618 | |||
619 | |||
620 | __Export File::Find variables__ | ||
621 | |||
622 | |||
623 | Make File::Find export $name etc manually, at least | ||
624 | if asked to. | ||
625 | |||
626 | |||
627 | __Ioctl__ | ||
628 | |||
629 | |||
630 | Finish a proper Ioctl module. | ||
631 | |||
632 | |||
633 | __Debugger attach/detach__ | ||
634 | |||
635 | |||
636 | Permit a user to debug an already-running | ||
637 | program. | ||
638 | |||
639 | |||
640 | __Regular Expression debugger__ | ||
641 | |||
642 | |||
643 | Create a visual profiler/debugger tool that stepped you | ||
644 | through the execution of a regular expression point by | ||
645 | point. Ilya has a module to color-code and display regular | ||
646 | expression parses and executions. There's something at | ||
647 | http://tkworld.org/ that might be a good start, it's a | ||
648 | Tk/Tcl RE wizard, that builds regexen of many | ||
649 | flavours. | ||
650 | |||
651 | |||
652 | __Alternative RE Syntax__ | ||
653 | |||
654 | |||
655 | Make an alternative regular expression syntax that is | ||
656 | accessed through a module. For instance, | ||
657 | |||
658 | |||
659 | use RE; | ||
660 | $re = start_of_line() | ||
661 | - | ||
662 | if (/$re/) { | ||
663 | |||
664 | Newbies to regular expressions typically only use a subset of the full language. Perhaps you wouldn't have to implement the full feature set. | ||
665 | |||
666 | |||
667 | __Bundled modules__ | ||
668 | |||
669 | |||
670 | Nicholas Clark (nick@flirble.org) had a patch for storing | ||
671 | modules in zipped format. This needs exploring and | ||
672 | concluding. | ||
673 | |||
674 | |||
675 | __Expect__ | ||
676 | |||
677 | |||
678 | Adopt IO::Tty, make it as portable as Don Libes' ``expect'' | ||
679 | (can we link against expect code?), and perfect a Perl | ||
680 | version of expect. IO::Tty and expect could then be | ||
681 | distributed as part of the core distribution, replacing | ||
682 | Comm.pl and other hacks. | ||
683 | |||
684 | |||
685 | __GUI::Native__ | ||
686 | |||
687 | |||
688 | A simple-to-use interface to native graphical abilities | ||
689 | would be welcomed. Oh, Perl's access Tk is nice enough, and | ||
690 | reasonably portable, but it's not particularly as fast as | ||
691 | one would like. Simple access to the mouse's cut buffer or | ||
692 | mouse-presses shouldn't required loading a few terabytes of | ||
693 | Tk code. | ||
694 | |||
695 | |||
696 | __Update semibroken auxiliary tools; h2ph, a2p, | ||
697 | etc.__ | ||
698 | |||
699 | |||
700 | Kurt Starsinic is working on h2ph. mjd has fixed bugs in a2p | ||
701 | in the past. a2p apparently doesn't work on nawk and gawk | ||
702 | extensions. Graham Barr has an Include module that does h2ph | ||
703 | work at runtime. | ||
704 | |||
705 | |||
706 | __pod2html__ | ||
707 | |||
708 | |||
709 | A short-term fix: pod2html generates absolute | ||
710 | HTML links. Make it generate relative | ||
711 | links. | ||
712 | |||
713 | |||
714 | __Podchecker__ | ||
715 | |||
716 | |||
717 | Something like lint for Pod would be good. Something that | ||
718 | catches common errors as well as gross ones. Brad Appleton | ||
719 | is putting together something as part of his !PodParser | ||
720 | work. | ||
721 | !!Tom's Wishes | ||
722 | |||
723 | |||
724 | __Webperl__ | ||
725 | |||
726 | |||
727 | Design a webperl environment that's as tightly integrated | ||
728 | and as easy-to-use as Perl's current command-line | ||
729 | environment. | ||
730 | |||
731 | |||
732 | __Mobile agents__ | ||
733 | |||
734 | |||
735 | More work on a safe and secure execution environment for | ||
736 | mobile agents would be neat; the Safe.pm module is a start, | ||
737 | but there's a still a lot to be done in that area. Adopt | ||
738 | Penguin? | ||
739 | |||
740 | |||
741 | __POSIX on non-POSIX__ | ||
742 | |||
743 | |||
744 | Standard programming constructs for non-POSIX systems would | ||
745 | help a lot of programmers stuck on primitive, legacy | ||
746 | systems. For example, Microsoft still hasn't made a usable | ||
747 | POSIX interface on their clunky systems, | ||
748 | which means that standard operations such as ''alarm()'' | ||
749 | and ''fork()'', both critical for sophisticated | ||
750 | client-server programming, must both be kludged | ||
751 | around. | ||
752 | |||
753 | |||
754 | I'm unsure whether Tom means to emulate alarm( )and | ||
755 | ''fork()'', or merely to provide a document like | ||
756 | perlport.pod to say which features are portable and which | ||
757 | are not. | ||
758 | |||
759 | |||
760 | __Portable installations__ | ||
761 | |||
762 | |||
763 | Figure out a portable semi-gelled installation, that is, one | ||
764 | without full paths. Larry has said that he's thinking about | ||
765 | this. Ilya pointed out that ''perllib_mangle()'' is good | ||
766 | for this. | ||
767 | !!Win32 Stuff | ||
768 | |||
769 | |||
770 | __Rename new headers to be consistent with the | ||
771 | rest__ | ||
772 | |||
773 | |||
774 | __Sort out the__ ''spawnvp()'' | ||
775 | __mess__ | ||
776 | |||
777 | |||
778 | __Work out DLL versioning__ | ||
779 | |||
780 | |||
781 | __Style-check__ | ||
782 | !!Would be nice to have | ||
783 | |||
784 | |||
785 | pack ``(stuff)*'' | ||
786 | |||
787 | |||
788 | Contiguous bitfields in pack/unpack | ||
789 | |||
790 | |||
791 | lexperl | ||
792 | |||
793 | |||
794 | Bundled perl preprocessor | ||
795 | |||
796 | |||
797 | Use posix calls internally where possible | ||
798 | |||
799 | |||
800 | format BOTTOM | ||
801 | |||
802 | |||
803 | -i rename file only when successfully changed | ||
804 | |||
805 | |||
806 | All ARGV input should act like | ||
807 | |||
808 | |||
809 | report HANDLE [[formats]. | ||
810 | |||
811 | |||
812 | support in perlmain to rerun debugger | ||
813 | |||
814 | |||
815 | lvalue functions | ||
816 | |||
817 | |||
818 | Tuomas Lukka, on behalf of the PDL project, | ||
819 | greatly desires this and Ilya has a patch for it (probably | ||
820 | against an older version of Perl). Tuomas points out that | ||
821 | what PDL really wants is lvalue | ||
822 | ''methods'', not just subs. | ||
823 | !!Possible pragmas | ||
824 | |||
825 | |||
826 | (use less memory, CPU ) | ||
827 | !!Optimizations | ||
828 | |||
829 | |||
830 | __constant function cache__ | ||
831 | |||
832 | |||
833 | __foreach(reverse...)__ | ||
834 | |||
835 | |||
836 | __Cache eval tree__ | ||
837 | |||
838 | |||
839 | Unless lexical outer scope used (mark in | ||
840 | |||
841 | |||
842 | __rcatmaybe__ | ||
843 | |||
844 | |||
845 | __Shrink opcode tables__ | ||
846 | |||
847 | |||
848 | Via multiple implementations selected in peep. | ||
849 | |||
850 | |||
851 | __Cache hash value__ | ||
852 | |||
853 | |||
854 | Not a win, according to Guido. | ||
855 | |||
856 | |||
857 | __Optimize away__ @_ __where | ||
858 | possible__ | ||
859 | |||
860 | |||
861 | __Optimize sort by {__ $a ____ | ||
862 | $b __}__ | ||
863 | |||
864 | |||
865 | Greg Bacon added several more sort optimizations. These have | ||
866 | made it into 5.005_55, thanks to Hans Mulder. | ||
867 | |||
868 | |||
869 | __Rewrite regexp parser for better integrated | ||
870 | optimization__ | ||
871 | |||
872 | |||
873 | The regexp parser was rewritten for 5.005. Ilya's the regexp | ||
874 | guru. | ||
875 | !!Vague possibilities | ||
876 | |||
877 | |||
878 | ref function in list context | ||
879 | |||
880 | |||
881 | This seems impossible to do without substantially breaking | ||
882 | code. | ||
883 | |||
884 | |||
885 | make tr/// return histogram in list context? | ||
886 | |||
887 | |||
888 | Loop control on do{} et al | ||
889 | |||
890 | |||
891 | Explicit switch statements | ||
892 | |||
893 | |||
894 | Nobody has yet managed to come up with a switch syntax that | ||
895 | would allow for mixed hash, constant, regexp checks. Submit | ||
896 | implementation with syntax, please. | ||
897 | |||
898 | |||
899 | compile to real threaded code | ||
900 | |||
901 | |||
902 | structured types | ||
903 | |||
904 | |||
905 | Modifiable $1 et al | ||
906 | |||
907 | |||
908 | The intent is for this to be a means of editing the matched | ||
909 | portions of the target string. | ||
910 | !!To Do Or Not To Do | ||
911 | |||
912 | |||
913 | These are things that have been discussed in the past and | ||
914 | roundly criticized for being of questionable | ||
915 | value. | ||
916 | |||
917 | |||
918 | __Making__ ''my()'' __work on ``package'' | ||
919 | variables__ | ||
920 | |||
921 | |||
922 | Being able to say my($Foo::Bar), something that sounds | ||
923 | ludicrous and the 5.6 pumpking has mocked. | ||
924 | |||
925 | |||
926 | __``or'' testing defined not truth__ | ||
927 | |||
928 | |||
929 | We tell people that can be used to give a default value to a | ||
930 | variable: | ||
931 | |||
932 | |||
933 | $children = shift 5; # default is 5 children | ||
934 | which is almost (but not): | ||
935 | |||
936 | |||
937 | $children = shift; | ||
938 | $children = 5 unless $children; | ||
939 | but if the first argument was given and is ``0'', then it will be considered false by and 5 used instead. Really we want an -like operator that behaves like: | ||
940 | |||
941 | |||
942 | $children = shift; | ||
943 | $children = 5 unless defined $children; | ||
944 | Namely, a that tests defined-ness rather than truth. One was discussed, and a patch submitted, but the objections were many. While there were objections, many still feel the need. At least it was decided that ?? is the best name for the operator. | ||
945 | |||
946 | |||
947 | __``dynamic'' lexicals__ | ||
948 | |||
949 | |||
950 | my $x; | ||
951 | sub foo { | ||
952 | local $x; | ||
953 | } | ||
954 | Localizing, as Tim Bunce points out, is a separate concept from whether the variable is global or lexical. Chip Salzenberg had an implementation once, but Larry thought it had potential to confuse. | ||
955 | |||
956 | |||
957 | __``class''-based, rather than package-based | ||
958 | ``lexicals''__ | ||
959 | |||
960 | |||
961 | This is like what the Alias module provides, but the | ||
962 | variables would be lexicals reserved by perl at | ||
963 | compile-time, which really are indices pointing into the | ||
964 | pseudo-hash object visible inside every method so | ||
965 | declared. | ||
966 | !!Threading | ||
967 | |||
968 | |||
969 | __Modules__ | ||
970 | |||
971 | |||
972 | Which of the standard modules are thread-safe? Which | ||
973 | CPAN modules? How easy is it to fix those | ||
974 | non-safe modules? | ||
975 | |||
976 | |||
977 | __Testing__ | ||
978 | |||
979 | |||
980 | Threading is still experimental. Every reproducible bug | ||
981 | identifies something else for us to fix. Find and submit | ||
982 | more of these problems. | ||
983 | |||
984 | |||
985 | __$AUTOLOAD__ | ||
986 | |||
987 | |||
988 | __exit/die__ | ||
989 | |||
990 | |||
991 | Consistent semantics for exit/die in threads. | ||
992 | |||
993 | |||
994 | __External threads__ | ||
995 | |||
996 | |||
997 | Better support for externally created threads. | ||
998 | |||
999 | |||
1000 | __Thread::Pool__ | ||
1001 | |||
1002 | |||
1003 | __thread-safety__ | ||
1004 | |||
1005 | |||
1006 | Spot-check globals like statcache and global GVs for | ||
1007 | thread-safety. Part done__ | ||
1008 | __ | ||
1009 | |||
1010 | |||
1011 | __Per-thread GVs__ | ||
1012 | |||
1013 | |||
1014 | According to Sarathy, this would make @_ be the | ||
1015 | same in threaded and non-threaded, as well as helping solve | ||
1016 | problems like filehandles (the same filehandle currently | ||
1017 | cannot be used in two threads). | ||
1018 | !!Compiler | ||
1019 | |||
1020 | |||
1021 | __Optimization__ | ||
1022 | |||
1023 | |||
1024 | The compiler's back-end code-generators for creating | ||
1025 | bytecode or compilable C code could use optimization | ||
1026 | work. | ||
1027 | |||
1028 | |||
1029 | __Byteperl__ | ||
1030 | |||
1031 | |||
1032 | Figure out how and where byteperl will be built for the | ||
1033 | various platforms. | ||
1034 | |||
1035 | |||
1036 | __Precompiled modules__ | ||
1037 | |||
1038 | |||
1039 | Save byte-compiled modules on disk. | ||
1040 | |||
1041 | |||
1042 | __Executables__ | ||
1043 | |||
1044 | |||
1045 | Auto-produce executable. | ||
1046 | |||
1047 | |||
1048 | __Typed lexicals__ | ||
1049 | |||
1050 | |||
1051 | Typed lexicals should affect B::CC::load_pad. | ||
1052 | |||
1053 | |||
1054 | __Win32__ | ||
1055 | |||
1056 | |||
1057 | Workarounds to help Win32 dynamic loading. | ||
1058 | |||
1059 | |||
1060 | __END blocks__ | ||
1061 | |||
1062 | |||
1063 | END blocks need saving in compiled output, | ||
1064 | now that CHECK blocks are | ||
1065 | available. | ||
1066 | |||
1067 | |||
1068 | ___AUTOLOAD__ | ||
1069 | |||
1070 | |||
1071 | _AUTOLOAD prodding. | ||
1072 | |||
1073 | |||
1074 | __comppadlist__ | ||
1075 | |||
1076 | |||
1077 | Fix comppadlist (names in comppad_name can have fake SvCUR | ||
1078 | from where newASSIGNOP steals the field). | ||
1079 | |||
1080 | |||
1081 | __Cached compilation__ | ||
1082 | |||
1083 | |||
1084 | Can we install modules as bytecode? | ||
1085 | !!Recently Finished Tasks | ||
1086 | |||
1087 | |||
1088 | __Figure a way out of $^(capital letter)__ | ||
1089 | |||
1090 | |||
1091 | Figure out a clean way to extend $^(capital letter) beyond | ||
1092 | the 26 alphabets. (${^WORD} maybe?) | ||
1093 | |||
1094 | |||
1095 | Mark-Jason Dominus sent a patch which went into | ||
1096 | 5.005_56. | ||
1097 | |||
1098 | |||
1099 | __Filenames__ | ||
1100 | |||
1101 | |||
1102 | Keep filenames in the distribution and in the standard | ||
1103 | module set be 8.3 friendly where feasible. Good luck | ||
1104 | changing the standard modules, though. | ||
1105 | |||
1106 | |||
1107 | __Foreign lines__ | ||
1108 | |||
1109 | |||
1110 | Perl should be more generous in accepting foreign line | ||
1111 | terminations. Mostly __done__ in 5.005. | ||
1112 | |||
1113 | |||
1114 | __Namespace cleanup__ | ||
1115 | |||
1116 | |||
1117 | symbol-space: | ||
1118 | CPP-space: stop malloc()/free() pollution unless asked | ||
1119 | |||
1120 | |||
1121 | __ISA .pm__ | ||
1122 | |||
1123 | |||
1124 | Rename and alter ISA .pm. __Done__. It is | ||
1125 | now base.pm. | ||
1126 | |||
1127 | |||
1128 | __gettimeofday__ | ||
1129 | |||
1130 | |||
1131 | See Time::!HiRes. | ||
1132 | |||
1133 | |||
1134 | __autocroak?__ | ||
1135 | |||
1136 | |||
1137 | This is the Fatal.pm module, so any builtin that does not | ||
1138 | return success automatically ''die()''s. If you're | ||
1139 | feeling brave, tie this in with the unified exceptions | ||
1140 | scheme. | ||
1141 | ---- |