X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/e570eafc41b1263d7952287c1acaa2d9ee7ed439..0f788cd2167eac467cb834bf10fb461045b10ece:/pod/perltodo.pod diff --git a/pod/perltodo.pod b/pod/perltodo.pod index 1756e53..4fec644 100644 --- a/pod/perltodo.pod +++ b/pod/perltodo.pod @@ -4,665 +4,375 @@ perltodo - Perl TO-DO List =head1 DESCRIPTION -This is a list of wishes for Perl. Send updates to -I. If you want to work on any of these -projects, be sure to check the perl5-porters archives for past ideas, -flames, and propaganda. This will save you time and also prevent you -from implementing something that Larry has already vetoed. One set -of archives may be found at: +This is a list of wishes for Perl. The tasks we think are smaller or easier +are listed first. Anyone is welcome to work on any of these, but it's a good +idea to first contact I to avoid duplication of +effort. By all means contact a pumpking privately first if you prefer. - http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/ - -=head1 To do during 5.6.x - -=head2 Support for I/O disciplines - -C provides this, but the interface could be a lot more -straightforward. - -=head2 Autoload bytes.pm - -When the lexer sees, for instance, C, it should -automatically load the C pragma. - -=head2 Make "\u{XXXX}" et al work - -Danger, Will Robinson! Discussing the semantics of C<"\x{F00}">, -C<"\xF00"> and C<"\U{F00}"> on P5P I lead to a long and boring -flamewar. - -=head2 Create a char *sv_pvprintify(sv, STRLEN *lenp, UV flags) - -For displaying PVs with control characters, embedded nulls, and Unicode. -This would be useful for printing warnings, or data and regex dumping, -not_a_number(), and so on. - -Requirements: should handle both byte and UTF8 strings. isPRINT() -characters printed as-is, character less than 256 as \xHH, Unicode -characters as \x{HHH}. Don't assume ASCII-like, either, get somebody -on EBCDIC to test the output. - -Possible options, controlled by the flags: -- whitespace (other than ' ' of isPRINT()) printed as-is -- use isPRINT_LC() instead of isPRINT() -- print control characters like this: "\cA" -- print control characters like this: "^A" -- non-PRINTables printed as '.' instead of \xHH -- use \OOO instead of \xHH -- use the C/Perl-metacharacters like \n, \t -- have a maximum length for the produced string (read it from *lenp) -- append a "..." to the produced string if the maximum length is exceeded -- really fancy: print unicode characters as \N{...} +Whilst patches to make the list shorter are most welcome, ideas to add to +the list are also encouraged. Check the perl5-porters archives for past +ideas, and any discussion about them. One set of archives may be found at: -NOTE: pv_display(), pv_uni_display(), sv_uni_display() are already -doing something like the above. - -=head2 Overloadable regex assertions - -This may or may not be possible with the current regular expression -engine. The idea is that, for instance, C<\b> needs to be -algorithmically computed if you're dealing with Thai text. Hence, the -B<\b> assertion wants to be overloaded by a function. + http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/ -=head2 Unicode -=over 4 -=item * -Allow for long form of the General Category Properties, e.g -C<\p{IsOpenPunctuation}>, not just the abbreviated form, e.g. -C<\p{IsPs}>. -=item * +=head1 Tasks that only need Perl knowledge -Allow for the metaproperties: C, C, -C, C (require the DerivedCoreProperties and -DerviceNormalizationProperties files). +=head2 common test code for timed bail out -There are also multiple value properties still unimplemented: -C, C. +Write portable self destruct code for tests to stop them burning CPU in +infinite loops. This needs to avoid using alarm, as some of the tests are +testing alarm/sleep or timers. -=item * +=head2 POD -> HTML conversion in the core still sucks - Case Mappings? http://www.unicode.org/unicode/reports/tr21/ +Which is crazy given just how simple POD purports to be, and how simple HTML +can be. It's not actually I simple as it sounds, particularly with the +flexibility POD allows for C<=item>, but it would be good to improve the +visual appeal of the HTML generated, and to avoid it having any validation +errors. See also L, as the layout of installation tree +is needed to improve the cross-linking. -lc(), uc(), lcfirst(), and ucfirst() work only for some of the -simplest cases, where the mapping goes from a single Unicode character -to another single Unicode character. See lib/unicore/SpecCase.txt -(and CaseFold.txt). +=head2 Make Schwern poorer -=item * +We should have for everything. When all the core's modules are tested, +Schwern has promised to donate to $500 to TPF. We may need volunteers to +hold him upside down and shake vigorously in order to actually extract the +cash. -UTF-8 identifier names should probably be canonicalized: NFC? +See F for the 3 remaining modules that need tests. -=item * +=head2 Improve the coverage of the core tests -UTF-8 in package names and sub names? The first is problematic -because of the mapping to pathnames, ditto for the second one if -one does autosplitting, for example. +Use Devel::Cover to ascertain the core's test coverage, then add tests that +are currently missing. -=back +=head2 test B -See L for what's -there and what's missing. Almost all of Levels 2 and 3 is missing, -and as of 5.8.0 not even all of Level 1 is there. -They have some tricks Perl doesn't yet implement, such as character -class subtraction. +A full test suite for the B module would be nice. - http://www.unicode.org/unicode/reports/tr18/ +=head2 A decent benchmark -=head2 Work out exit/die semantics for threads +perlbench seems impervious to any recent changes made to the perl core. It +would be useful to have a reasonable general benchmarking suite that roughly +represented what current perl programs do, and measurably reported whether +tweaks to the core improve, degrade or don't really affect performance, to +guide people attempting to optimise the guts of perl. Gisle would welcome +new tests for perlbench. -There are some suggestions to use for example something like this: -default to "(thread exiting first will) wait for the other threads -until up to 60 seconds". Other possibilities: +=head2 fix tainting bugs - use threads wait => 0; +Fix the bugs revealed by running the test suite with the C<-t> switch (via +C). -Do not wait. +=head2 Dual life everything - use threads wait_for => 10; +As part of the "dists" plan, anything that doesn't belong in the smallest perl +distribution needs to be dual lifed. Anything else can be too. Figure out what +changes would be needed to package that module and its tests up for CPAN, and +do so. Test it with older perl releases, and fix the problems you find. -Wait up to 10 seconds. +=head2 Improving C - use threads wait_for => -1; +Investigate whether C could share aggregates properly with +only Perl level changes to shared.pm -Wait for ever. +=head2 POSIX memory footprint -http://archive.develooper.com/perl5-porters@perl.org/msg79618.html +Ilya observed that use POSIX; eats memory like there's no tomorrow, and at +various times worked to cut it down. There is probably still fat to cut out - +for example POSIX passes Exporter some very memory hungry data structures. -=head2 Better support for nonpreemptive threading systems like PTH -Perhaps do yield() before blocking calls, exchange calls to non blocking -calls specific for those libraries (for example GNUpth has a pth_sleep -which is a non pth aware version of sleep). -=head2 Typed lexicals for compiler -=head2 Compiler workarounds for Win32 -=head2 AUTOLOADing in the compiler -=head2 Fixing comppadlist when compiling -=head2 Cleaning up exported namespace +=head1 Tasks that need a little sysadmin-type knowledge -=head2 Complete signal handling +Or if you prefer, tasks that you would learn from, and broaden your skills +base... -Add C to opcodes which loop; replace C with -C; check C for signal safety. +=head2 make HTML install work -=head2 Out-of-source builds +There is an C target in the Makefile. It's marked as +"experimental". It would be good to get this tested, make it work reliably, and +remove the "experimental" tag. This would include -This was done for 5.6.0, but needs reworking for 5.7.x +=over 4 -=head2 POSIX realtime support +=item 1 -POSIX 1003.1 1996 Edition support--realtime stuff: POSIX semaphores, -message queues, shared memory, realtime clocks, timers, signals (the -metaconfig units mostly already exist for these) +Checking that cross linking between various parts of the documentation works. +In particular that links work between the modules (files with POD in F) +and the core documentation (files in F) -=head2 UNIX98 support +=item 2 -Reader-writer locks, realtime/asynchronous IO +Work out how to split perlfunc into chunks, preferably one per function group, +preferably with general case code that could be used elsewhere. Challenges +here are correctly identifying the groups of functions that go together, and +making the right named external cross-links point to the right page. Things to +be aware of are C<-X>, groups such as C to C, two or +more C<=items> giving the different parameter lists, such as -=head2 IPv6 Support + =item substr EXPR,OFFSET,LENGTH,REPLACEMENT + + =item substr EXPR,OFFSET,LENGTH + + =item substr EXPR,OFFSET -There are non-core modules, such as C, but these will need -integrating when IPv6 actually starts to really happen. See RFC 2292 -and RFC 2553. +and different parameter lists having different meanings. (eg C