Cheap web site hosting service by Active-Venture.com
  

 Back to Index

To do during 5.6.x

Support for I/O disciplines

perlio provides this, but the interface could be a lot more straightforward.

Autoload bytes.pm

When the lexer sees, for instance, bytes::length, it should automatically load the bytes pragma.

Make "\u{XXXX}" et al work

Danger, Will Robinson! Discussing the semantics of "\x{F00}", "\xF00" and "\U{F00}" on P5P will lead to a long and boring flamewar.

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{...}

NOTE: pv_display(), pv_uni_display(), sv_uni_display() are already doing something like the above.

Overloadable regex assertions

This may or may not be possible with the current regular expression engine. The idea is that, for instance, \b needs to be algorithmically computed if you're dealing with Thai text. Hence, the \b assertion wants to be overloaded by a function.

Unicode

  • Allow for long form of the General Category Properties, e.g \p{IsOpenPunctuation}, not just the abbreviated form, e.g. \p{IsPs}.
  • Allow for the metaproperties: XID Start, XID Continue, NF*_NO, NF*_MAYBE (require the DerivedCoreProperties and DerviceNormalizationProperties files).

    There are also multiple value properties still unimplemented: Numeric Type, East Asian Width.

  •  
        Case Mappings? http://www.unicode.org/unicode/reports/tr21/  

    Mostly implemented (all of 1:1, 1:N, N:1), only the "final sigma" and locale-specific rules of SpecCase are not implemented.

  • UTF-8 identifier names should probably be canonicalized: NFC?
  • 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. Some of this works already in 5.8.0, but essentially it is unsupported. Constructs to consider, at the very least:

     
    	use utf8;
    	package UnicodePackage;
    	sub new { bless {}, shift };
    	sub UnicodeMethod1 { ... $_[0]->UnicodeMethod2(...) ... }
    	sub UnicodeMethod2 { ... } # in here caller(0) should contain Unicode
    	...
    	package main;
    	my $x = UnicodePackage->new;
    	print ref $x, "\n";  # should be Unicode
    	$x->UnicodeMethod1(...);
    	my $y = UnicodeMethod3 UnicodePackage ...;  

    In the above all UnicodeXxx contain (identifier-worthy) characters beyond the code point 255, for example 256. Wherever package/class or subroutine names can be returned needs to be checked for Unicodeness.

See perlunicode/UNICODE REGULAR EXPRESSION SUPPORT LEVEL 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.

 
	http://www.unicode.org/unicode/reports/tr18/  

Work out exit/die semantics for threads

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:

 
    use threads wait => 0;  

Do not wait.

 
    use threads wait_for => 10;  

Wait up to 10 seconds.

 
    use threads wait_for => -1;  

Wait for ever.

http://archive.develooper.com/perl5-porters@perl.org/msg79618.html

Better support for nonpreemptive threading systems like GNU pth

To better support nonpreemptive threading systems, perhaps some of the blocking functions internally in Perl should do a yield() before a blocking call. (Now certain threads tests ({basic,list,thread.t}) simply do a yield() before they sleep() to give nonpreemptive thread implementations a chance).

In some cases, like the GNU pth, which has replacement functions that are nonblocking (pth_select instead of select), maybe Perl should be using them instead when built for threading.

Typed lexicals for compiler

Compiler workarounds for Win32

AUTOLOADing in the compiler

Fixing comppadlist when compiling

Cleaning up exported namespace

Complete signal handling

Add PERL_ASYNC_CHECK to opcodes which loop; replace sigsetjmp with sigjmp; check wait for signal safety.

Out-of-source builds

This was done for 5.6.0, but needs reworking for 5.7.x

POSIX realtime support

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)

UNIX98 support

Reader-writer locks, realtime/asynchronous IO

IPv6 Support

There are non-core modules, such as Socket6, but these will need integrating when IPv6 actually starts to really happen. See RFC 2292 and RFC 2553.

Long double conversion

Floating point formatting is still causing some weird test failures.

Locales

Locales and Unicode interact with each other in unpleasant ways. One possible solution would be to adopt/support ICU:

 
	http://oss.software.ibm.com/developerworks/opensource/icu/project/  

Arithmetic on non-Arabic numerals

[1234567890] aren't the only numerals any more.

POSIX Unicode character classes

([=a=] for equivalence classes, [.ch.] for collation.) These are dependent on Unicode normalization and collation.

Factoring out common suffices/prefices in regexps (trie optimization)

Currently, the user has to optimize foo|far and foo|goo into f(?:oo|ar) and [fg]oo by hand; this could be done automatically.

Security audit shipped utilities

All the code we ship with Perl needs to be sensible about temporary file handling, locking, input validation, and so on.

Sort out the uid-setting mess

Currently there are several problems with the setting of uids ($<, $> for the real and effective uids). Firstly, what exactly setuid() call gets invoked in which platform is simply a big mess that needs to be untangled. Secondly, the effects are apparently not standard across platforms, (if you first set $< and then $>, or vice versa, being uid == euid == zero, or just euid == zero, or as a normal user, what are the results?). The test suite not (usually) being run as root means that these things do not get much testing. Thirdly, there's quite often a third uid called saved uid, and Perl has no knowledge of that feature in any way. (If one has the saved uid of zero, one can get back any real and effective uids.) As an example, to change also the saved uid, one needs to set the real and effective uids twice-- in most systems, that is: in HP-UX that doesn't seem to work.

Custom opcodes

Have a way to introduce user-defined opcodes without the subroutine call overhead of an XSUB; the user should be able to create PP code. Simon Cozens has some ideas on this.

DLL Versioning

Windows needs a way to know what version of an XS or libperl DLL it's loading.

Introduce @( and @)

$( may return "foo bar baz". Unfortunately, since groups can theoretically have spaces in their names, this could be one, two or three groups.

Floating point handling

NaN and inf support is particularly troublesome. (fp_classify(), fp_class(), fp_class_d(), class(), isinf(), isfinite(), finite(), isnormal(), unordered(), <ieeefp.h>, <fp_class.h> (there are metaconfig units for all these) (I think), fp_setmask(), fp_getmask(), fp_setround(), fp_getround() (no metaconfig units yet for these). Don't forget finitel(), fp_classl(), fp_class_l(), (yes, both do, unfortunately, exist), and unorderedl().)

As of Perl 5.6.1, there is a Perl macro, Perl_isnan().

IV/UV preservation

Nicholas Clark has done a lot of work on this, but work is continuing. +, - and * work, but guards need to be in place for %, /, &, oct, hex and pack.

Replace pod2html with something using Pod::Parser

The CPAN module Marek::Pod::Html may be a more suitable basis for a pod2html converter; the current one duplicates the functionality abstracted in Pod::Parser, which makes updating the POD language difficult.

Automate module testing on CPAN

When a new Perl is being beta tested, porters have to manually grab their favourite CPAN modules and test them - this should be done automatically.

sendmsg and recvmsg

We have all the other BSD socket functions but these. There are metaconfig units for these functions which can be added. To avoid these being new opcodes, a solution similar to the way sockatmark was added would be preferable. (Autoload the IO::whatever module.)

Rewrite perlre documentation

The new-style patterns need full documentation, and the whole document needs to be a lot clearer.

Convert example code to IO::Handle filehandles

Document Win32 choices

Check new modules

Make roffitall find pods and libs itself

Simon Cozens has done some work on this but it needs a rethink.

 

  

 

Domain name registration & domain search - 
Register cheap domain name from $7.95 and enjoy free domain services 
 

Cheap domain name search service -
Domain name services at just
$8.95/year only
 

Register domain name -
Buy domain name registration and cheap domain transfer at low, affordable price.

© 2002-2004 Active-Venture.com Web Site Hosting Service

 

[ The most horrifying thing about Unix is that, no matter how many times you hit yourself over the head with it, you never quite manage to lose consciousness. It just goes on and on.   ]

 

 
 
 

Disclaimer: This documentation is provided only for the benefits of our web hosting customers.
For authoritative source of the documentation, please refer to http://www.perldoc.com